I am using pjsip version 1.0.2 and observed the following issues when ICE is used a. If a stun socket reports an error on sending the message(e.g the lan cable is pulled off) , keep-alive is not rescheduled. It seems that get_mapped_addr does not use the return value from the session fail function to reschedule the timer. b. In cases where connectivity to the internet is lost temporarily (internet gw down etc) and also case a) above, a failed keep-alive marks the status of the srflx candidate to be in error. However, the status is never set back to PJ_SUCCESS even when the connection to the internet is resumed c. The result of b) is that subsequent calls after connectivity is restored do not have the srflx candidate in the sdp but still has the stun mapped ip and port in the c and m line. If the remote uses ICE , an ice-mismatch is detected and there is no media on the calls.If the remote doesn't use ICE, still no rtp flows from the pjsua since the status of the candidate had been marked to be in error. Only a restart alleviates and restores proper media on the calls Thanks, Amit