Hi, Kingsley!

The BYE that comes from gw1 does not appear to be right, as the r-uri domain points to OpenSIPS itself, therefore, after the first loose_route(), the BYE would loop back to OpenSIPS - that's probably when you get that error. The BYE coming from gw1 should have gw2 in R-URI (79.121.42.22:5060), not the proxy's IP. This is probably happening due to a bad contact sent to gw1, or perhaps a bad fixing of the contact of gw1 - I don't have the entire call flow, so I can't say exactly. What you could try though is after validate_dialog(), run fix_route_dialog() [1] - this might repair what gw1 is sending and point R-URI to gw2.

[1] https://opensips.org/docs/modules/3.2.x/dialog.html#idp6271744

Best regards,

Răzvan Crainea
OpenSIPS Core Developer
http://www.opensips-solutions.com

On 6/10/21 8:24 PM, Kingsley Tart wrote:
Hi,

I'm getting null dialog errors when the callee hangs up, but not when
the caller hangs up.

In this example, I'm calling from gw2 to gw1. The call gets answered.
If gw2 hangs up, all is good. If gw1 hangs up, it is not.

This is the top of my routing script (xlog just for diags):

if (has_totag()) {
        if (is_method("ACK") && t_check_trans()) {
                t_relay();
                exit;
        }
        if (!loose_route()) {
                xlog("NOT loose_route()\n");
                send_reply(404, "Not here");
                exit;
        } else {
                xlog("loose_route() OK\n");
        }
        if (!validate_dialog()) {
                xlog("Ignoring $rm from $si due to invalid dialog; rc=$rc\n");
                exit;
        }
                if (is_method("BYE")) {
                route(acc_leg_set_end_reason);
        }
                route(relay);
        exit;
}


And this is the dialog match mode:

modparam("dialog", "dlg_match_mode", 1)

I'm calling record_route() and then create_dialog("pP") when I receive
an INVITE.


If the call is answered and then gw1 sends the BYE, I get this in the
opensips log:

loose_route() OK
ERROR:dialog:w_validate_dialog: null dialog
Ignoring BYE from 79.121.42.21 due to invalid dialog; rc=-4


and I see the following SIP messages coming from gw1, and re-trying
because I'm dropping the messages due to null dialog:

(RX and TX from the perspective of OpenSIPS)

RX<-gw1  U 2021/06/10 17:58:44.950661 79.121.42.21:5060 -> 79.121.42.45:5060 
#29059
RX<-gw1  BYE sip:[email protected]:5060 SIP/2.0.
RX<-gw1  Via: SIP/2.0/UDP 
79.121.42.21:5060;rport;branch=z9hG4bKPjc946d0af-e97d-4f85-b592-58df46d73d0e.
RX<-gw1  From: 
<sip:[email protected]>;tag=0b7b5a28-2dc1-493f-8d74-c939674643f3.
RX<-gw1  To: 
<sip:[email protected]>;tag=682e4380-74c8-4a53-a1f4-a339d758c986.
RX<-gw1  Call-ID: cc4f4b92-7ba0-4c43-9b8e-c467fa897460.
RX<-gw1  CSeq: 30163 BYE.
RX<-gw1  Route: <sip:79.121.42.45;lr;did=d9c.67fcbf86>.
RX<-gw1  Reason: Q.850;cause=16.
RX<-gw1  Max-Forwards: 70.
RX<-gw1  User-Agent: Asterisk PBX 13.27.0.
RX<-gw1  Content-Length:  0.
RX<-gw1  .

RX<-gw1  U 2021/06/10 17:58:45.451242 79.121.42.21:5060 -> 79.121.42.45:5060 
#29060
RX<-gw1  BYE sip:[email protected]:5060 SIP/2.0.
RX<-gw1  Via: SIP/2.0/UDP 
79.121.42.21:5060;rport;branch=z9hG4bKPjc946d0af-e97d-4f85-b592-58df46d73d0e.
RX<-gw1  From: 
<sip:[email protected]>;tag=0b7b5a28-2dc1-493f-8d74-c939674643f3.
RX<-gw1  To: 
<sip:[email protected]>;tag=682e4380-74c8-4a53-a1f4-a339d758c986.
RX<-gw1  Call-ID: cc4f4b92-7ba0-4c43-9b8e-c467fa897460.
RX<-gw1  CSeq: 30163 BYE.
RX<-gw1  Route: <sip:79.121.42.45;lr;did=d9c.67fcbf86>.
RX<-gw1  Reason: Q.850;cause=16.
RX<-gw1  Max-Forwards: 70.
RX<-gw1  User-Agent: Asterisk PBX 13.27.0.
RX<-gw1  Content-Length:  0.
RX<-gw1  .

RX<-gw1  U 2021/06/10 17:58:46.450860 79.121.42.21:5060 -> 79.121.42.45:5060 
#29061
RX<-gw1  BYE sip:[email protected]:5060 SIP/2.0.
RX<-gw1  Via: SIP/2.0/UDP 
79.121.42.21:5060;rport;branch=z9hG4bKPjc946d0af-e97d-4f85-b592-58df46d73d0e.
RX<-gw1  From: 
<sip:[email protected]>;tag=0b7b5a28-2dc1-493f-8d74-c939674643f3.
RX<-gw1  To: 
<sip:[email protected]>;tag=682e4380-74c8-4a53-a1f4-a339d758c986.
RX<-gw1  Call-ID: cc4f4b92-7ba0-4c43-9b8e-c467fa897460.
RX<-gw1  CSeq: 30163 BYE.
RX<-gw1  Route: <sip:79.121.42.45;lr;did=d9c.67fcbf86>.
RX<-gw1  Reason: Q.850;cause=16.
RX<-gw1  Max-Forwards: 70.
RX<-gw1  User-Agent: Asterisk PBX 13.27.0.
RX<-gw1  Content-Length:  0.
RX<-gw1  .


but if the caller (gw2) hangs up and sends the BYE, then all is fine:

RX<-gw2  U 2021/06/10 17:57:37.506889 79.121.42.22:5060 -> 79.121.42.45:5060 
#29043
RX<-gw2  BYE sip:79.121.42.21:5060 SIP/2.0.
RX<-gw2  Via: SIP/2.0/UDP 
79.121.42.22:5060;rport;branch=z9hG4bKPjdf132a9c-ee20-4cbd-bbf4-ccb3d0aaab42.
RX<-gw2  From: 
<sip:[email protected]>;tag=c91f69bc-9548-4245-86b9-a9202d0b33c8.
RX<-gw2  To: 
<sip:[email protected]>;tag=3d0cfd81-357b-448f-92ab-712aadfdf895.
RX<-gw2  Call-ID: 38e1a3aa-54d3-456a-99b2-201295179c95.
RX<-gw2  CSeq: 9118 BYE.
RX<-gw2  Route: <sip:79.121.42.45;lr;did=fcb.680bf303>.
RX<-gw2  Reason: Q.850;cause=16.
RX<-gw2  Max-Forwards: 70.
RX<-gw2  User-Agent: Asterisk PBX 13.27.0.
RX<-gw2  Content-Length:  0.
RX<-gw2  .

TX->gw1  U 2021/06/10 17:57:37.507451 79.121.42.45:5060 -> 79.121.42.21:5060 
#29044
TX->gw1  BYE sip:79.121.42.21:5060 SIP/2.0.
TX->gw1  Via: SIP/2.0/UDP 79.121.42.45:5060;branch=z9hG4bK5071.80e2e516.0.
TX->gw1  Via: SIP/2.0/UDP 
79.121.42.22:5060;received=79.121.42.22;rport=5060;branch=z9hG4bKPjdf132a9c-ee20-4cbd-bbf4-ccb3d0aaab42.
TX->gw1  From: 
<sip:[email protected]>;tag=c91f69bc-9548-4245-86b9-a9202d0b33c8.
TX->gw1  To: 
<sip:[email protected]>;tag=3d0cfd81-357b-448f-92ab-712aadfdf895.
TX->gw1  Call-ID: 38e1a3aa-54d3-456a-99b2-201295179c95.
TX->gw1  CSeq: 9118 BYE.
TX->gw1  Reason: Q.850;cause=16.
TX->gw1  Max-Forwards: 70.
TX->gw1  User-Agent: Asterisk PBX 13.27.0.
TX->gw1  Content-Length:  0.
TX->gw1  .

RX<-gw1  U 2021/06/10 17:57:37.508346 79.121.42.21:5060 -> 79.121.42.45:5060 
#29045
RX<-gw1  SIP/2.0 200 OK.
RX<-gw1  Via: SIP/2.0/UDP 
79.121.42.45:5060;rport=5060;received=79.121.42.45;branch=z9hG4bK5071.80e2e516.0.
RX<-gw1  Via: SIP/2.0/UDP 
79.121.42.22:5060;rport=5060;received=79.121.42.22;branch=z9hG4bKPjdf132a9c-ee20-4cbd-bbf4-ccb3d0aaab42.
RX<-gw1  Call-ID: 38e1a3aa-54d3-456a-99b2-201295179c95.
RX<-gw1  From: 
<sip:[email protected]>;tag=c91f69bc-9548-4245-86b9-a9202d0b33c8.
RX<-gw1  To: 
<sip:[email protected]>;tag=3d0cfd81-357b-448f-92ab-712aadfdf895.
RX<-gw1  CSeq: 9118 BYE.
RX<-gw1  Server: Asterisk PBX 13.27.0.
RX<-gw1  Content-Length:  0.
RX<-gw1  .

TX->gw2  U 2021/06/10 17:57:37.509205 79.121.42.45:5060 -> 79.121.42.22:5060 
#29046
TX->gw2  SIP/2.0 200 OK.
TX->gw2  Via: SIP/2.0/UDP 
79.121.42.22:5060;rport=5060;received=79.121.42.22;branch=z9hG4bKPjdf132a9c-ee20-4cbd-bbf4-ccb3d0aaab42.
TX->gw2  Call-ID: 38e1a3aa-54d3-456a-99b2-201295179c95.
TX->gw2  From: 
<sip:[email protected]>;tag=c91f69bc-9548-4245-86b9-a9202d0b33c8.
TX->gw2  To: 
<sip:[email protected]>;tag=3d0cfd81-357b-448f-92ab-712aadfdf895.
TX->gw2  CSeq: 9118 BYE.
TX->gw2  Server: Asterisk PBX 13.27.0.
TX->gw2  Content-Length:  0.
TX->gw2  .


Am I doing something silly here?

Cheers,
Kingsley.



_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users


_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to