Merged revisions 128950 via svnmerge from
authorOlle Johansson <oej@edvina.net>
Tue, 8 Jul 2008 10:02:12 +0000 (10:02 +0000)
committerOlle Johansson <oej@edvina.net>
Tue, 8 Jul 2008 10:02:12 +0000 (10:02 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r128950 | oej | 2008-07-08 11:52:21 +0200 (Tis, 08 Jul 2008) | 11 lines

Don't hangup the call if we can't resolve the Contact if there's a proxy
route set for the call.
----
This comment was added a while ago and today it hit me badly.

/* OEJ: Possible issue that may need a check:
If we have a proxy route between us and the device,
should we care about resolving the contact
or should we just send it?
*/

........

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@128951 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index df545f8..4f71133 100644 (file)
@@ -15182,21 +15182,17 @@ static void handle_response_invite(struct sip_pvt *p, int resp, char *rest, stru
                if (outgoing) {
                        update_call_counter(p, DEC_CALL_RINGING);
                        parse_ok_contact(p, req);
+                       /* Save Record-Route for any later requests we make on this dialogue */
+                       if (!reinvite)
+                               build_route(p, req, 1);
+
                        if(set_address_from_contact(p)) {
                                /* Bad contact - we don't know how to reach this device */
                                /* We need to ACK, but then send a bye */
-                               /* OEJ: Possible issue that may need a check:
-                                       If we have a proxy route between us and the device,
-                                       should we care about resolving the contact
-                                       or should we just send it?
-                               */
-                               if (!req->ignore)
+                               if (!p->route && !req->ignore)
                                        ast_set_flag(&p->flags[0], SIP_PENDINGBYE);     
                        } 
 
-                       /* Save Record-Route for any later requests we make on this dialogue */
-                       if (!reinvite)
-                               build_route(p, req, 1);
                }
                
                if (p->owner && (p->owner->_state == AST_STATE_UP) && (bridgepeer = ast_bridged_channel(p->owner))) { /* if this is a re-invite */