⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 changes.html

📁 sipapi 说明文档.用于JAVA的SIP开发及应用.
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<body>
<h1>JSR180 Maintenance Release 1.1.0</h1>
<h2>Changes from Final Release 1.0.1</h2>
<p>
	Typos, grammatical and formatting changes are not listed.
<p></p>	
<pre>
- <b>Overview</b>
	- Added a section about the SIP methods to be supported. 
	- Added a section about the authentication requirements.
	- Added a reference to RFC 3515.

- <b>General</b>	
	- Specified the RuntimeExceptions each method can throw. Also clarified 
	  how each method behaves when null or empty string is passed as an
	  argument.
	
- <b>SipAddress</b>	
	- The special address '*' is defined to be immutable. 
	- Clarified that no semantic URI checks are mandatory.
	- Clarified that getUser returns also the password field if set.
	- getPort returns 5061 if the scheme is sips and the port is not explicitly
	  set

- <b>SipClientConnection</b>
	- Clarified what kind of exception the methods throw in Terminated state.
	- Accessors return null in Terminated state.
	- Added that Contact is set also for REFER method in initRequest.
	- Headers are automatically set only before sending, might not be available
	  after initRequest, initCancel, initAck.
	- Methods belonging to an already established dialog (BYE, NOTIFY, PRACK, 
	  UPDATE) should be created using SipDialog.getNewClientConnection() 
	  instead of initRequest().
	- initCancel() throws SipException.INVALID_STATE if the system has already 
	  got a final response. The previous version gave only 200-OK response
	  instead of any final one.   
	- Accept-Contact must be set to all requests in a shared connection, except
	  CANCEL and ACK.
	- setRequestURI is not mandatory to be supported.
	- ACK is automatically sent for error responses, initAck throws exception
	  in this case
	- The SipClientConnection remains in Completed state if sending ACK fails 
	  and there is forking case.
	- receive() fetches the responses from a FIFO queue.
	- 100-Trying responses are not received for non-invite requests.
	- The connection moves to Terminated state if IOException is thrown in 
	  receive().
	- Clarified the parameter handling of enableRefresh().
	- setCredentials() must be supported both in Initialized and Unauthorized
	  states.      
	- Headers updated by setCredentials in the Unauthorized state might not be 
	  available.
	- Corrected the code sample for setCredentials: quotation marks are handled.
	- Added the new setCredentials(String[] usernames, String[] passwords,
	  String[] realms) method.

- <b>SipConnection</b>
	- Quotes in the SIP URI are accepted both escaped and unescaped.
	- Not mandated to support both server modes.
	- Added section about the transport protocols to be supported.
	- Added section about the restricted access to headers.
	- The connection moves to Terminated state if IOException is thrown in 
	  send().
	- Added examples to the header manipulation methods.
	- Clarified that the implementation is free to store the headers in comma
	  separated list format.
	- Header manipulation methods work atomically.
	- Clarified that addHeader() should not be used for headers that don't 
	  allow multiplicity.
	- getRequestURI() is not mandatory to be supported.
	- getStatusCode() and getReasonPhrase() are available also in Unauthorized
	  states.
	- getDialog() returns null if the connection is closed or after an error
	  response is received or sent.
	- Clarified how getDialog() works for ACK and CANCEL requests.
	- Clarified that the body of the message might not be available after it 
	  was sent.
	- Content-Length need not be set before sending.
	- Added the new method setErrorListener(SipErrorListener sel).

- <b>SipConnectionNotifier</b>
	- Clarified that acceptAndOpen() throws SecurityException.

- <b>SipDialog</b>
	- Added that REFER also creates a dialog.
	- It is mandatory to support all three ways of creating dialogs.
	- Headers are automatically set only before sending, might not be available
	  after getNewClientConnection().
	- getNewClientConnection() migth throw TRANSACTION_UNAVAILABLE.
	- Clarified that SipDialog objects created from the same dialog behave the 
	  same way.
	- isSameDialog() returns false if the connection given as parameter is 
	  closed.  
	- Exact format of dialog-id is replaced with specification reference.

- <b>SipErrorListener</b>
	- This interface is new in this version.

- <b>SipException</b>
	- DIALOG_UNAVAILABLE is deprecated.
	- Added ALREADY_RESPONDED.

- <b>SipHeader</b>
	- Changed ':' to 'HCOLON' in the parser ABNF.
	- 'Comment' and 'quoted-string' constructs are also supported.
	- It is allowed to give an empty String or null as the value parameter in
	  the constructor.	
	- Leading and trailing spaces are ignored in the name parameter.
	- Clarified that some header parameters might include quotation marks.
	
- <b>SipRefreshHelper</b>
	- REGISTER and SUBSCRIBE must be supported to be refreshed, REFER may be 
	  supported.
	- In case of failure of a refresh request the refreshing is automatically 
	  stopped and corresponding refresh ID is invalidated.
	- Failure response codes must be reported, success codes may be reported,
	  provisional codes must not be reported.
	- If a response arrives to a refresh request that was updated by the 
	  application since the request was sent then the response is not reported.
	- If refresh responses are not received due to network problems, 
	  implementation dependent error codes may be reported in the refreshEvent
	  callback.
	- Clarified that the initiation, updating and stopping of a refresh must
	  work as specified by the relevant RFCs.
	- stop() and update() may throw SipException.INVALID_STATE.
	- If stop() or update() fails then refreshing is stopped and the callback
	  is notified.
	- update() does not change the header of the original SipClientConnection 
	  object.
	- Giving null or empty string as typeor 0 as length in update() means that 
	  subsequent refresh request will have no content.

- <b>SipRefreshListener</b>
	- Any 2xx (not just 200) response is considered successful.
	- The statusCode corresponds to the most recent response. 
	- The application might receive notification of response to the original 
	  request twice: once by calling receive() and once in the 
	  refreshEvent callback.

- <b>SipServerConnection</b>
	- Clarified what kind of exception the methods throw in Terminated state.
	- Accessors return null in Terminated state.
	- Added how the Contact header is initialized in initResponse().
	- Headers are automatically set only before sending the response, might 
	  not be available after initResponse.
	- If the system has automatically sent the 100-Trying response, the 100 
	  response initialized and sent by the user is ignored.
	- initResponse() may throw SipException.ALREADY_RESPONDED.
</pre>
	
<h1>JSR180 Maintenance Release 1.0.1</h1>
<h2>Changes from Final Release 1.0</h2>
Page numbers refer to the locations in the original specification.
<pre>	
- <b>SipConnection</b> (Page 9-15)
        - Rewritten the rules for opening server connection (SipConnectionNotifier)
        - New chapter <b>"Opening new server connection (SipConnectionNotifier)"</b>  
          Opening server connection in <em>shared</em> mode
	    <code>sip:*;type="application/&lt;app_subtype&gt;"[;&lt;other_params&gt;]</code>
	  Opening server connection in <em>dedicated</em> mode
            <code>sip:[nnnn][;&lt;params&gt;]</code>

        - Rewritten <b>"SIP Identity"</b> chapter

	- Added <b>"Routing the incoming request"</b> chapter

        - Rephrased getDialog() description:
          "Returns the current SIP dialog. This is available when the 
           <tt>SipConnection</tt> belongs to a created <tt>SipDialog</tt>, 
           which is in <em>Early</em> or <em>Confirmed</em> state (see 
           <code>SipDialog</code>).

           The <tt>SipDialog</tt> returned from the <tt>SipConnection</tt> 
           defines always the peer-to-peer association created by the latest 
           sent or received request or response."

        - Added text to send() method:
          "Calling send() is asynchronous. Any kind of immediate failure 
           will throw IOException or SipException."

          "With SipServerConnection it is possible to resend 2xx responses
           in <em>Completed</em> state, by calling directly send().

          Removed java.io.InterruptedIOException from send() Exceptions.

- <b>SipClientConnection</b> (Page 16-23)
        - Redrawn state diagram (yet no changes in states or state transitions),
          just clarified the transition texts.
    
        - Added receive() to the <em>Completed</em> state as accessible method
          in restricted methods table (Page 17)

        - Added text to receive() method:
          "The SipClientConnection is always associated with the latest response 
           received succesfully by calling the receive() method."

        - setCredentials()
          Added two example MSCs and one code example.

        - initRequest()
          Rephrased definitions on how the From and Contact headers, in
          various situations.

        - initAck()
          Removed wrong text, ACK can not be initialized with initRequest():
          "b) Using <tt>initRequest("ACK", null)</tt> builds the 
           request from scratch and does not set the headers according to 
           the current SIP dialog."

        - initCancel()
          Removed wrong text, CANCEL can not be initialized with initRequest():
          "Note: using <tt>initRequest("CANCEL", null);</tt> builds the 
           request from scratch and does not set the headers according to 
           the current SIP dialog."

- <b>SipServerConnection</b> (Page 24)
        - Redrawn state diagram. 
             - Clarified transitions.
             - Added state <em>Created</em> in order to separate transition
               path for ACK correctly.
             - acceptAndOpen() triggers state <em>Request Received</em> for
               other requests than ACK
             - acceptAndOpen() for ACK triggers state transition to <em>Completed</em>
             - Added "send() 2XX" transition to the <em>Completed</em> state.

        - Added following explanatory chapters:
          <b>Error response for INVITE</b>
          "If an error response is sent to the INVITE request, the client 
           transaction layer will generate the ACK automatically on behalf 
           of the transaction user (TU). Now when this ACK arrives on the 
           server it is not passed up to TU as a new SipServerConnection. 
           See RFC 3261 [1] p.136 "Figure 7: INVITE server transaction"."

          <b>Resending 2xx for INVITE</b>
          "If the ACK is not received for the final 2xx response, it is up 
           to the TU (UA core) to resend 2xx response. In order to resend 
           the 2xx response the SipServerConnection.send() can be called 
           also in Completed state. See RFC 3261 [1] p.124 "17 Transactions".
	   and p.135 "17.2.1 INVITE Server Transaction"." 

- <b>SipServerConnectionListener</b> (Page 32)
        - notifyRequest(...) changed input parameter name from ssc to scn

- <b>SipConnectionNotifier</b> (Page 29-30)
        - first chapter added link to the SipConnection
          "...Detailed definition of SIP server URIs is here SipConnection."

        - acceptAndOpen() removed java.io.InterruptedIOException
          added text to java.io.IOException "... or the SipConnectionNotifier 
          is closed."

- <b>SipDialog</b> (Page 33-35)
        - Added new state <em>Initialized</em>
          "<em>Initialized</em>, internal state where the dialog has been 
           created. This state is not visible to the user, since the 
           dialog can be fetched earliest in the <em>Early</em> state."

        - Rephrased <em>Early</em> state
          "<em>Early</em>, provisional 101-199 response received (or sent)
           All methods available."

        - Rephrased <em>Confirmed</em> state
          "<em>Confirmed</em>, final 2xx response received (or sent) for the 
           original request. Or NOTIFY confirming the subscription received 
           (or sent). 
           All methods available."

        - Redrawn state diagrams for both client and server side.
          "The SipDialog (client side) has following state diagram:"
          "The SipDialog (server side) has following state diagram:"

        - Updated example code (Page 34) added lines:
          scc.setHeader("From", "sip:UserA@host.com");
          

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -