Merge "chan_sip: Check sip_pvt pointer in ast_channel_get_t38_state(c)"
[asterisk/asterisk.git] / channels / chan_sip.c
index cd03e15..cc73a15 100644 (file)
@@ -10634,7 +10634,11 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
        /* Setup audio address and port */
        if (p->rtp) {
                if (sa && portno > 0) {
-                       start_ice(p->rtp, (req->method != SIP_RESPONSE) ? 0 : 1);
+                       /* Start ICE negotiation here, only when it is response, and setting that we are conrolling agent,
+                          as we are offerer */
+                       if (req->method == SIP_RESPONSE) {
+                               start_ice(p->rtp, 1);
+                       }
                        ast_sockaddr_set_port(sa, portno);
                        ast_rtp_instance_set_remote_address(p->rtp, sa);
                        if (debug) {
@@ -13408,6 +13412,11 @@ static enum sip_result add_sdp(struct sip_request *resp, struct sip_pvt *p, int
                if (!doing_directmedia) {
                        if (ast_test_flag(&p->flags[2], SIP_PAGE3_ICE_SUPPORT)) {
                                add_ice_to_sdp(p->rtp, &a_audio);
+                               /* Start ICE negotiation, and setting that we are controlled agent,
+                                  as this is response to offer */
+                               if (resp->method == SIP_RESPONSE) {
+                                       start_ice(p->rtp, 0);
+                               }
                        }
 
                        add_dtls_to_sdp(p->rtp, &a_audio);