| 25 | [[BR]] |
| 26 | |
| 27 | == Issues == |
| 28 | |
| 29 | When the connection is reconnected, the handset may get different IP address than what it previously got. There are few ramifications of this, for example if PJSUA-LIB is used: |
| 30 | - the SIP registration needs to be updated with a new Contact URI |
| 31 | - the account URI also needs to be updated |
| 32 | - media addresses need to be updated |
| 33 | - if there is ongoing dialog, the remote party needs to be informed with new Contact URI as well as new media (RTP/RTCP) addresses. |
| 34 | |
| 35 | Note that at this time of writing (2009/02/25, PJSIP v1.1), PJSIP does not have the capability to monitor the status of the underlying IP connection used by the application, so the application must implement the detection itself (for example using connection progress monitor in Symbian). Having said that, PJSIP does have some capability to detect some IP address change scenarios, for example by monitoring the IP address in SIP REGISTER response or in STUN Binding response when ICE transport is used and STUN is enabled. |
| 36 | |
| 37 | Once the application has detected that the IP interface address has changed, there are two solutions to inform PJSIP about this. |
| 38 | |
| 39 | [[BR]] |
| 40 | |
| 41 | === Restart everything === |
| 42 | |
| 43 | The most straightforward solution is of course to restart everything, which means in pjsua terms to call {{{pjsua_destroy()}}} and followed by {{{pjsua_create()}}}, {{{pjsua_init()}}}, and so on. While this solution may sound crude, it is the easiest to do and as will be explained later it is not considerably worse then the more refined alternative. |
| 44 | |
| 45 | [[BR]] |
| 46 | |
| 47 | === Selective update === |
| 48 | |
| 49 | Alternatively there may be a way to allow the stack to continue to run, updating the address information when necessary. This approach will require some specific features to be used, as well as some actions by the application when it detects that the IP address has changed. |
| 50 | |
| 51 | The specific configuration and tasks will be explained below. |
| 52 | |
| 53 | |
| 54 | |