Hi, Following on from last week's quest for the broken ALG fix in openser 1.1, I am trying to re-write the ACK that replies to the 200 OK the gateway sends when the call is connected, so that it arrives at the gateway instead of being sent back to the sender. This is the bad ACK: gateway ip= 1.2.3.204 proxy ip= 1.2.3.201 ua ip = 81.1.2.218
U 81.1.2.218:2020 -> 1.2.3.201:5060 ACK sip:202000243999049102@81.1.2.218:2021 SIP/2.0. Via: SIP/2.0/UDP 81.1.2.218:2020;branch=z9hG4bK-a8d9ae6f. From: %5 sip:101000000@sip.example.com;tag=32750c901739579ao0. To: sip:00243999049102@sip.example.com;tag=F48836B0-608. Call-ID: da59b048-d5ba4742@192.168.1.6. CSeq: 102 ACK. Max-Forwards: 70. Route: sip:1.2.3.201;lr=on;ftag=32750c901739579ao0. Proxy-Authorization: Digest username="101000000",realm="sip.example.com",nonce="4721d74d797d2fcdae92fc29db4798914ddb90a4",uri="sip:202000243999049102@81.1.2.218:2021",algorithm=MD5,response="d0a6ac0edaabb7fca6ef3ff448c7c4e1". Contact: %5 sip:101000000@81.1.2.218:2020. User-Agent: Linksys/PAP2T-3.1.15(LS). Content-Length: 0.
What's wrong is that the uri should be: ACK sip:202000243999049102@1.2.3.204:5060 SIP/2.0.
I can fix the problem like this:
if(src_ip==81.1.2.218 && method=="ACK" ){ rewritehostport("1.2.3.204:5060"); xlog("L_WARN", "rewritten host and port to: r-uri <$ru> "); }
But I really want to test (instead of src_ip==81.1.2.218) is whether the URLs in square brackets match : U [81.1.2.218]:2020 -> 1.2.3.201:5060 ACK sip:202000243999049102@[81.1.2.218]:2021 SIP/2.0.
How can I test that in 1.1?
Thanks for your help.
Richard