Aha! Thank you - that was it. I was re-writing the host in the Contact header because I had misunderstood the requirements from one of our carriers. Commenting out the block of OpenSIPS code that did that fixed it.
Thank you once again :) Cheers, Kingsley. On Fri, 2021-06-11 at 10:05 +0300, Răzvan Crainea wrote: > 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 _______________________________________________ Users mailing list [email protected] http://lists.opensips.org/cgi-bin/mailman/listinfo/users
