Consider the ICE usage. The operations between the ---- lines can be repeated if one wants to change the ICE session for the same ice_strans object. For example, change the remote end-point we are talking to or redo ICE negotiation with a different remote SDP. Is it necessary to stop ICE and then restart with init_ice? Can I simply skip stop and init the second time, i.e. simply submit a new remote SDP and redo ICE negotiation? pj_ice_strans_create Wait for local SDP ---- pj_ice_strans_init_ice submit remote SDP pj_ice_strans_start_ice pj_ice_strans_sendto pj_ice_strans_stop_ice ---- pj_ice_strans_destroy I am asking this because I want to avoid calling pj_ice_strans_stop_ice while my polling thread is polling ioqueue. I see crashes if I call pj_ice_strans_stop_ice while the thread polling the ioqueue is still running. For example, packet is received while ICE session is being destroyed. Best, Aditya