www
Folders and files
Name | Name | Last commit date | ||
---|---|---|---|---|
parent directory.. | ||||
<h2> Key contributors </h2> Substantial contributions made by the following people: <ul> <li> Jeroen Van Bemmel (Lucent) contributed key ideas for JSIP 1.2 and helped fix several bugs in the RI and answered questions on the mailing list. <li> Sarit Galanos (Radvision) contributed key design ideas for JSIP 1.2. <li> Olivier Deruelle wrote a lot of the code for V 1.1 when he was a guest researcher at NIST </li> <li> Emil Ivov contributed the TCK for the Transaction and Dialog layer for version 1.1 that served as the basis for the v 1.2 TCK. Emil presented a convincing use case for JSIP 1.2 to support multiple stacks in a JVM. </li> <li>Jeroen van Bemmel contributed significant effort to bring the TCK up to version 1.2. Jeroen validated the TCK against another implementation. </li> <li> Ben Evans (Open Cloud) contributed several ideas to the design of JAIN-SIP 1.2 and participated enthusiastically in mailing list discussions. </li> <li> Jeff Keyser Contributed the initial version of the Transaction layer to NIST-SIP 1.1 that served as the basis for NIST-SIP 1.2. Jeff also suggested the architecture for MessageProcessors and extensiblity that is a part of the implementation architecture. </li> </ul> <hline/> <h2> Acknowledgements </h2> <ul> <li> Marc Bednarek and Christophe Chazeau were guest researchers at NIST when NIST-SIP 1.0 and NIST-SIP 1.1 were in development. Their contributions are acknowledged. <li> The JAIN-SIP 1.1 API design is largely based on the NIST implementation experiences of JAIN-SIP 1.0. The help of Chris Harris from DynamicSoft (Spec Lead for JAIN-SIP 1.0) in understanding JAIN-SIP 1.0 is hereby acknowledged. Implementing JAIN-SIP-1.0 was a great learning experience. Hopefully our hindsight is good. </ul> <p> Design contributions to JAIN SIP 1.1 API were made by: <ul> <li> Jeroen van Bemmel (Lucent) suggested several key ideas. <li> Ben Evans from Open Cloud contributed several ideas to the design of JAIN-SIP 1.2 and participated enthusiastically in mailing list discussions. </li> <li> Brian O'Neill and Josh Burger (currently at BaseVoice). <li> Dave Ferry and Ben Evans from Open Cloud inc. <li> Brad Templeton suggested that Dialog.sendBye be changed to the more generally useful Dialog.sendRequest. <li> Emil Ivov, Brad Templeton and others requested a method to create a cancel and Ack request for a client transaction and consequently ClientTransaction.createCancel was added to the API. </ul> <hline/> <p> Bug Reports and enhancements for NIST-SIP were contributed by the following people: <ul> <li> Brad Templeton noticed bugs in the Transaction/Dialog layer Brad suggested that Dialog.sendBye be changed to a more general Dialog.sendRequest Brad templeton noticed that the stack was sending out a Trying immediately and thereby not giving the application a chance to do so. <li> Emil Ivov Contributed IPV6 Support. Emil Cotributed the Video Softphone under GPL Licensing. (See acknowledgement above) later moved to its own java.net project (see sip-communicator.dev.java.net). Emil noticed spec documentation bugs. Emil uncovered bugs in the transaction layer implementation for several corner cases. Emil and Iain Macdonnell from Sun reported a problem with SDP parsing. Emil discovered a bug in the Server transaction implementation. Emil contributed comprehensive state machine unit tests of the Transaction layer to the TCK. Emil set up the build automation cruise control scripts. <li> Andreas Bystr�m reported bugs in set/get methods for Authentication headers (quotes were missing). Andreas reported bugs in the SDP implementation. Andreas helped to unit test call flows. Andreas found documentation bugs and reported problems and incompleteness with the TCK. Andreas noticed problems with Acking 487. Ack should be sent before the TU gets called. Andreas noted that CANCEL should not contain content. Andreas noted that a dialog can change from client to server in the middle of the dialog (for example client sends a re-invite and puts caller on hold -- see sipping service examples draft). The RI was not allowing this. This was fixed and tested by Andreas. <li> Antonis Karydas reported bugs in the implementation of the JAIN transaction model. Server transactions were being created with non-null TID on reciept of invites. Antonis reported that To/From headers should not be restricted only to use SIP urls. Antonis reported that route sets were not properly maintained in the DialogImpl. Antonis reported that the DefaultRouterImplementation should be able to handle NON-SIP URLs. Antonis fixed a bug in Dialog.sendRequest() and Dialog.createRequest(). Antonis reported several bugs in the strategy being used for dealing with ACKs for 4xx responses. Antonis reported a problem in handling Server transaction timeouts and posted a fix for this problem. Antonis reported a problem in content length for generation of responses. Antonis reported a problem with closely spaced ACKs for CANCELed Server Transactions. Antonis reported that CANCEL after OK was not properly handled (stack should respond OK to cancel and not bother application. <li> Beichuang reported bugs in the IM Client and presence server. BC also noted that extension methods were not working (Dialogs were not being created). <li> Steve Crossley reported bugs in the parser and setting local/remote party of dialog layer. Steve contributed a fix to the next hop determination in the Dialog code that could allow it to deal with legacy systems. Steve noticed that the short form of Refer-To was not supported in the parser. Steve noticed that null pointers were being generated when SessionDescriptionImpl was being cloned with null fields. Steve reported that content length was being set to 0 when the content of the SIP message is specified as an Object. <li> Viswashanti Raj Kadiyala reported a bug and contributed a bug fix in the initialization of the tcp message channel. Shanti also reported a bug and contributed a bug fix for reciever tagging for Via headers. <li> Andrew Prokop reported a bug in cloning of Authentication headers. <li> Bob Johnson noticed documentation bugs. <li> Mark Smith noticed that there were bugs in the handling of lr in the proxy. <li> Tiago Dias (Altitude software) noticed that there was a bug with subscribe/notify processing in the proxy. Tiago noticed that Notify processing in the proxy (presence extension) was not returning final response immediately and contributed a bug fix for the proxy that rectified the problem. <li> Roberto Tealdi reported a problem in instantiating multiple stacks in multi-homed hosts. <li> Laurent Schwitzer noticed that events were being dropped (not delivered to application) when request and response were closely spaced in time. Laurent noticed that the recieved parameter was not handling ipv6 address types. <li> Stuart Woodsford (British Telecom) noticed a bug in the parsing of host names when there are more than 3 components in the host name. <li> Brian J. Collins discovered bugs in the implementation of SdpFactory. <li> Dekeyzer Dmitri noted that PRACK was not updating the Dialog state and therefore route sets were not being applied appropriately. <li> Willem Romijn AT&T corrected the payload type constant for H.263 codecs in SdpConstants.java <li> Peter Parnes noted a bug in handling null messages. Null messages could be sent to keep alive firewall NAT mappings. Peter tested the stack on a dual multiprocessor hyperthreaded machine and uncovered some race conditions in the transaction state machine implementation that were later fixed. <li> Christophe at yahoo.fr noticed a bug in the transaction state machine when the retransmission filter is enabled. Christophe noted a bug in IOHandler when an IO Exception occurs while transmitting via TCP. Christophe noted a stack bug when IOException occurs (timer tick needs to be updated). Christophe tested the stack for Exception conditions under TCP Transport and uncovered some bugs in retransmission filter implementation under these conditions. Christophe noted that the stack was trying to retry connections for sending responses. This is against the SIP RFC (request/response should use the same connection) and it was fixed. <li> Gareth Deli noticed a bug in TCP transport. <li> Ben Evans (Open Cloud) noticed a transaction state machine implementation error in SIPServerTransaction. Ben Evans reported numerous TCK related problems. <li> Zvalli at dev.java.net reported bugs in the parsing of warning headers and found a bug when there was a whitespace separating the header name and the : following it. <li> Sverker Abrahamsson reformatted everything to conform to the java style guide and eliminated many annoying javadoc problems. <li> Bruno Konik torture tested the parser and unearthed some problems with the parsing of SIP urls and methods. These problems were fixed. Bruno contributed the torture test cases from the IETF torture test case draft-ietf-sipping-torture-tests.txt that are included in the torture test (tests/torture) directory. Bruno noted that the Rack header was encoded in the wrong way. Bruno noted that SIPDate header was encoded in the wrong way (should use 24 hour date format). <li> Wanrong Lin noted that the spec called for a dummy dialog to be created even if there is no possibility of a transaction being assigned to a dialog. This was fixed - now a static dummy dialog is assigned to a transaction that has no possibility of being assigned to any dialog. <li> Mafasumi Watanabe noted that setting message content as a string should compute content length after converting to byte rather than directly take length() to allow for double byte character set. <li> Emmanuel Proulx noticed a bug when trying to send large amounts of data via TCP transport that was caused by a race condition in the coded that caches threads and connections. A new configuration parameter gov.nist.javax.sip.MAX_MESSAGE_SIZE was added to limit the max size of messages. <li>Venkatesh from CMU noticed that there were threads hanging around even after all stack resources had been released. This was corrected by adding a stack finalization method that exits all threads. The stack now runs happily as an applet. <li> Dave Stuart (SIPQuest Communications) discovered a deadlock with the stack and submitted a bug fix for this. Dave also discovered an error with ParametersHeader in converting String to boolean. <li> Thomas Froment submitted a bug fix for parsing of host:port as discovered in the CERT tests (there could be one or more spaces between host and port). Thomas suggested that the main scanner thread be eliminated from the SIPTransaction Stack and Timers be used Thomas Fromet and Pierre De Rop suggested a fast lookup path be added for looking up Transactions. An auxilliary hash table for quick lookup was added based on their suggestions. Thomas contributed a bug fix for sending responses in server transactions. The maddr parameter was being ignored. <li>Alex Rootham from Blue Slice noticed that out of sequence messages directed to a Dialog should be responded to with a 500 (Internal Server Error) by a UAS. This is decidedly strange but the spec does say so. This support was added to the dialog layer of the stack. <li>Bruce Evangelder from Soleo communications found a race condition with the UDP message processor. <li>Mike Andrews contributed the idea of a configurable network layer. This can be used to better integrate with a container and provide management and other functionality. <li> Matt Keller noticed a bug where the ACK for 300-699 responses was being sent to the wrong destination because the contact header in the last response was being ignored. Mat sent in a bug fix for this problem. </li> <li> Bill Roome (AT&T research) noted that Applications may want to see the route header. The stack was previously stripping it. A configuration parameter was added to pass the route header up to the application. Bill reported a null pointer exception bug and fixed some make file bugs. This design flaw has been rationalized in version 1.2 of the JSIP API. </li> <li> Stefan Marx found a bug in the SipUriImpl.getHeaderNames function. </li> <li> John Martin from RockSteady noticed some uncessary synchronization in the MessageHandler that was removed. </li> <li> Xavi Ferro from Vida Software helped debug a memory leak when 4xx responses are sent in response to dialog creating requests. <li> Daniel Martinez contributed TLS support. </li> <li> Hagai Sela added support for symmetric NAT (rport parameter handling in via header). Hagai Reported a bug where ACK was not seen by application on re-invite. Hagai noticed a bug in computation of next hop for strict routers when the request is sent through Dialog.sendRequest(transaction). This resulted in the route being stripped twice. Hagai contributed a bug fix in the Dialog implementation for route management for strict routers. Hagai contributed a bug fix for the Default router (for the case of handling strict routing ). Hagai reported a bug in the updating of route set for established dialogs. (Only Remote target should be updated and not route set). </li> <li> Rob Daugherty (Lucent) detected a bug in handling of TCP messages and contributed a fix for this. </li> <li>Jeff Adams ( Polycomm.com ) submitted a patch for the sniffer tool. Jeff submitted a patch for setting the timer on the Transaction Timer. </li> <li> Pierre Sandstrom submitted a bug fix for the Trace Viewer to fix a problem where some messages were not showing up in the viewer. </li> <li> S. R. Jeyashankher from Lucent Submitted a bug fix for error conditions where one cannot bind to local port </li> <li>Greg DuPertuis found a bug in the generation of unique branch IDs and submitted a fix for it </li> <li>Shu-Lin Chen from the Communications Research Institute (Canada) submitted a bug fix for timeout post processing. </li> <li> Banibrata Dutta submitted suggestions for code cleanup </li> <li> Robert Rosen submitted a fix for a race condition in generating new CallIDs and with switching lexers. <li>Daniel Machin Vazquez-Illa submitted a bug fix for the Dialog State Machine on processing 3XX-6XX class responses in Server Transactions. Daniel noticed that the remote sequence number for server dialog needed to be updated even on unsuccessful server transaction processing. </li> <li>Mario Mantak posted a bug fix for a missing short form header name for the Event header </li> <li> Jordan Schidlowski of MDCI fixed a bug that pegs the CPU when pending requests are directed towards a transaction under some heavy load conditions. </li> <li> Dan Muresan submitted changes that speed up cloning of requests that did not need to use reflection for cloning. </li> <li> Jeff Heynie submitted a bug fix for the URL parser </li> <li> Attila submitted a fix for a race condition in ACK processing </li> <li> Frank Reif submitted a bug fix for a race condition in SIPServerTransaction </li> <li> Ivelin Ivanov <[email protected]> ported some examples to tck test cases </li> <li>Yanick Belanger noticed a memory leak in NOTIFY client transaction which was fixed. Yankick also made some performance enhancements to the parser. Yanick noted a bug in random generation of call IDs and branch IDs. Yakick contributed code to support offloading of TLS requests. Yanick contributed performance enhancements and cleanup to StringMsgParser. Yanick contributed performance ehnancements to the Message and header factories. Yanick measured the performance on contemporary high speed processors and reported these results. </li> <li> Kathleen McCallum contributed the Third Party Call Control (tpcc) example and the authentication example. </li> <li> Jose Miguel Frietas, Nuno Silva ( PT INOVAO - EST DEPARTMENT ) and Alexandre Miguel Silva Santos ( Aveiro University - Portugal) contributed parsers and headers for IMS. These are included in the Implementation of the Factory interfaces but are not yet part of the JSIP standard. </li> <li>Lebing Xie fixed bugs in the contributed IMS headers. </li> <li>Ricardo Borba (Natural Convergence) reported bugs in the Dialog implementation and also in the UDP Message processor. Ricardo contributed a patch for UDPMessageProcessor.java. Ricardo made several contibutions related to hardening the stack and guarding it against application programming errors: <ul> <li> Fixed Session Description to allow it to take a null session name. <li> Fixed Sdp parser to handle mixed \r , \n and \r\n <li> Fixed case sensitivity issue with content type and content subtype. <li> Added a Safe timer task. If an exception occurs in the timer the stack does not exit. <li> EventScanner.java : Fixed exception handling so that exceptions in the listener dont exit the stack. <li> SessionDescriptorImpl is now a deep copy <li> Added listener thread (liveness) auditing facitlity <li> Added Transaction table (leak) auditng facility. </ul> These will be of particular importance to you if you are building robust server applications. Examples have been provided for these new facilities. </li> <li>Brett Buckingham (Natural Convergence) submitted a patch for a reliable timer that does not cause the stack to die when a cancelled timer is cancelled during stack stop and restart. Brett contributed a fix for RFC2543 CANCEL handling.</li> <li>Peter Musgrave (Newheights Networks) contributed code for RFC 3892 (Refer method ) and Session Timer (RFC 4028) headers and parsers for the same. </li> <li>Hai Phan noticed that responding with a From tag different from the original request From tag with automatic dialog support enabled, resulted in memory leak due to Dialogs getting allocated despite invalid Responses. </li> <li> John Barton noticed an issue with PRACK being dropped under heavy load. This issue has been fixed. </li> <li> Peter Li <[email protected]> sent in a bug fix for parsing of IPV6 addresses. </li> <li>Ryan Mitchell Noticed that the ACK for 3xx responses should not use the contact header for constructing the Request URI. Using the contact header will direct the ACK to thw new location. This was fixed in the RI. </li> <li>Anil H noticed a problem with retransmission of ACK in the case of RE-INVITE processing. He contributed a bug fix which was applied to the RI. </li> <li>Nabeel Mohammed submitted a patch for dealing with RFC 2543 backwards compatibility in CANCEL requests. This was applied to the RI. </li> <li> Jens Tinfors submitted patches for SIPDialog.equals and SIPDialog.createFromNOTIFY. </li> <li> Raghav Ramesh (BT) noticed an issue with CANCELing INVITES for a load balanced appliction </li> <li> Roger M. Persson submitted a bug fix for closing message channels on stop. </li> <li> Sebastien Mazy contributed a patch that allows storing application data in SIPMessage-s. </li> <li> Aayush Bhatnagar (Rancore Technologies) contributed a patch for header definitions and parsers for several IMS Headers. These headers complete the IMS Package </li> <li>Hauke D<[email protected]> Noticed a bug having to do with premature Dialog deletion </li> <li>Simon Shieh ( Nortel Networks ) noticed a bug in the caching of TCP connections. </li> <li>Subramanian Thamaraisamy (Cisco} reported and contributed <a href="http://java.net/jira/browse/JSIP-387">DoS attacks against JAIN SIP</a> . </li> </ul> <hline/> <p> Following is a list of people who contributed bugs reports and fixes to NIST-SIP 1.1 (which implemented the JAIN SIP 1.0 interefaces). Many of these fixes carry over to NIST-SIP 1.2 and hence their contributions are acknowledged in rough chronological order of first contribution. Acknowledgements for contributions are listed below and in the code where their contributions appear: <ul> <li> Chris Mills <li> Maria Yndefors <li> Stefan Foekel <li> Jakob Schlyter <li> Ganesh Jayadevan <li> Steven Lass <li> Kim Kirby <li> Andre Pharand <li> Christophe Lafaille <li> Gordon Ledgard <li> Robert Billingslea <li> Juan Fco. Martin <li> Ahmet Uyar <li> Prasanna Kumar <li> Lamine Brahimi <li> Nadeem Anwar <li> Andreas Bystr�m <li> Yann Duponchel <li> Thai Dang Vu <li> Will Scullin <li> Jeff Keyser <li> Robert M. Smith <li> S. Nageswara Rao <li> Niklas Uhrberg <li> Eero Vaarnas <li> Laurent Schweizer <li> M.P. Ardhanareeswaran <li> Stephen Jones <li> Espen Skjaeran <li> Scott Holben <li> Salva Rey Calatayd <li> Tsun-Chieh Chiang <li> Dan Timoney <li> Majdi Abuelbassal <li> Srinivas Maganti <li> R.W. Johnson <li> Emil Ivov </ul> <hline/> <p> This code was developed in the Internetworking Technogies Group (ITG), Advanced Networking Technogies Division (ANTD), the National Institute of Standards and Technology (NIST). <ul> <li> Group Manager: Doug Montgomery <[email protected]> <li> Division Chief: David Su <[email protected]> <a> <a href="http://w3.antd.nist.gov/"> http://w3.antd.nist.gov </a> </ul>