Issue #7380 - Cannot put a one-legged call on hold/off hold
authorOlle Johansson <oej@edvina.net>
Wed, 21 Jun 2006 19:58:03 +0000 (19:58 +0000)
committerOlle Johansson <oej@edvina.net>
Wed, 21 Jun 2006 19:58:03 +0000 (19:58 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@35336 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index c484e18..498087c 100644 (file)
@@ -4807,7 +4807,7 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req)
                                p->t38.jointcapability);
        } else {
                p->t38.state = T38_DISABLED;
                                p->t38.jointcapability);
        } else {
                p->t38.state = T38_DISABLED;
-               if (option_debug > 1)
+               if (option_debug > 2)
                        ast_log(LOG_DEBUG, "T38 state changed to %d on channel %s\n", p->t38.state, p->owner ? p->owner->name : "<none>");
        }
 
                        ast_log(LOG_DEBUG, "T38 state changed to %d on channel %s\n", p->t38.state, p->owner ? p->owner->name : "<none>");
        }
 
@@ -4884,6 +4884,8 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req)
        if (!p->owner)  /* There's no open channel owning us so we can return here. For a re-invite or so, we proceed */
                return 0;
 
        if (!p->owner)  /* There's no open channel owning us so we can return here. For a re-invite or so, we proceed */
                return 0;
 
+       if (option_debug > 3)
+               ast_log(LOG_DEBUG, "We have an owner, now see if we need to change this call\n");
 
        if (!(p->owner->nativeformats & p->jointcapability & AST_FORMAT_AUDIO_MASK)) {
                if (debug) {
 
        if (!(p->owner->nativeformats & p->jointcapability & AST_FORMAT_AUDIO_MASK)) {
                if (debug) {
@@ -4907,7 +4909,6 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req)
                        ast_queue_frame(p->owner, &ast_null_frame);
                } else {
                        /* No address for RTP, we're on hold */
                        ast_queue_frame(p->owner, &ast_null_frame);
                } else {
                        /* No address for RTP, we're on hold */
-                       
                        ast_moh_start(bridgepeer, NULL);
                        if (sendonly)
                                ast_rtp_stop(p->rtp);
                        ast_moh_start(bridgepeer, NULL);
                        if (sendonly)
                                ast_rtp_stop(p->rtp);
@@ -4919,7 +4920,6 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req)
        }
 
        /* Manager Hold and Unhold events must be generated, if necessary */
        }
 
        /* Manager Hold and Unhold events must be generated, if necessary */
-       /* XXX Support for sendonly/recvonly needs to be fixed !!! */
        if (sin.sin_addr.s_addr && !sendonly) {
                if (ast_test_flag(&p->flags[0], SIP_CALL_ONHOLD)) {
                        append_history(p, "Unhold", "%s", req->data);
        if (sin.sin_addr.s_addr && !sendonly) {
                if (ast_test_flag(&p->flags[0], SIP_CALL_ONHOLD)) {
                        append_history(p, "Unhold", "%s", req->data);
@@ -4946,7 +4946,6 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req)
                ast_set_flag(&p->flags[0], SIP_CALL_ONHOLD);
        }
        
                ast_set_flag(&p->flags[0], SIP_CALL_ONHOLD);
        }
        
-
        return 0;
 }
 
        return 0;
 }
 
@@ -12978,7 +12977,8 @@ static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, int
                                                        transmit_response_with_sdp(p, "200 OK", req, XMIT_CRITICAL);
                                                }
                                        }
                                                        transmit_response_with_sdp(p, "200 OK", req, XMIT_CRITICAL);
                                                }
                                        }
-                               }
+                               } else  /* No bridged peer */
+                                       transmit_response_with_sdp(p, "200 OK", req, XMIT_CRITICAL);
                        }
                        break;
                default:
                        }
                        break;
                default: