See RFC 5057.
Currently, once a SipPort started by a INVITE dialog has received or sent response to BYE, it enters END state and no messages can be sent on it.
Propose a change in E4SS to provide partial support for "multiple
dialog usages" within a single SIP dialog.
Note though that there are some limitations. If there are have multiple usages within a single dialog, then the app
- cannot rely on E4SS automatic termination
- cannot use SipPortTeardownFSM
as E4SS will not ensure correct SIP behavior.
The application must take care to terminate all the usages within the dialog, e.g. send BYE, send SUBSCRIBE with Expiry=0 or NOTIFY.
Proposed solution:
- add UNTRACKED state to InviteDialogFSM
- transition to UNTRACKED state upon receiving or sending 200 OK response to BYE, if SipSession.getState() is not TERMINATED
- in UNTRACKED state, allow sending and receiving any SIP messages
r2707 | eshc | 2012-09-11 12:31:19 -0400 (Tue, 11 Sep 2012) | 6 lines
Changed paths:
M /trunk/EChartsSipServlet/src/org/echarts/servlet/sip/InviteDialogFSM.ech
M /trunk/EChartsSipServlet/src/org/echarts/servlet/sip/PortState.java
M /trunk/EChartsSipServlet/src/org/echarts/servlet/sip/SipPortTeardownFSM.ech