Using jain sip to create sip proxy app.
client A -> proxy app -> client B
In case A call B: A can hangup, but when B send BYE sometime Jain Sip return 481 call leg to B.
When the call end in seconds, it can BYE success.
But if the call end in minutes, when B send BYE, Jain sip return 481 call leg.
And the caller client A always BYE success.
already check the call-id, request uri, from, to tag. Still no idea.
Here is the LOG
<message
from="192.168.101.217:5217"
to="192.168.100.45:5062"
time="1593501306804"
isSender="false"
transactionId="z9hg4bk474906270"
callId="1024711825"
firstLine="INVITE sip:[email protected]:5062 SIP/2.0"
>
<![CDATA[INVITE sip:[email protected]:5062 SIP/2.0
Via: SIP/2.0/UDP 192.168.101.217:5217;rport=5217;branch=z9hG4bK474906270;received=192.168.101.217
From: <sip:[email protected]:5062>;tag=966553558
To: <sip:[email protected]:5062>
Call-ID: 1024711825
CSeq: 20 INVITE
Contact: <sip:[email protected]:5217>
Content-Type: application/sdp
Allow: INVITE,ACK,CANCEL,OPTIONS,BYE,REFER,NOTIFY,MESSAGE,SUBSCRIBE,INFO
Max-Forwards: 70
User-Agent: eXosip/3.1.0
Subject: Call conversation
Expires: 120
Content-Length: 405
]]>
</message>
<message
from="192.168.100.45:5062"
to="192.168.101.14:5014"
time="1593501306864"
isSender="true"
transactionId="z9hg4bk-3137-6aaa9fa3786b6b7fb08d9bdbbf9256c5"
callId="1024711825"
firstLine="INVITE sip:[email protected]:5062 SIP/2.0"
>
<![CDATA[INVITE sip:[email protected]:5062 SIP/2.0
Via: SIP/2.0/UDP 192.168.100.45:5062;branch=z9hG4bK-3137-6aaa9fa3786b6b7fb08d9bdbbf9256c5,SIP/2.0/UDP 192.168.101.217:5217;rport=5217;branch=z9hG4bK474906270;received=192.168.101.217
From: "217" <sip:[email protected]:5062>;tag=966553558
To: <sip:[email protected]:5062>
Call-ID: 1024711825
CSeq: 20 INVITE
Contact: <sip:[email protected]:5217>
Allow: INVITE,ACK,CANCEL,OPTIONS,BYE,REFER,NOTIFY,MESSAGE,SUBSCRIBE,INFO
Max-Forwards: 70
User-Agent: eXosip/3.1.0
Subject: Call conversation
Expires: 120
Content-Type: application/sdp
Route: "14" <sip:[email protected]:5014;lr>
Record-Route: "TERRA_PROXY_SERVER" <sip:[email protected]:5062;lr>
Content-Length: 403
]]>
</message>
<message
from="192.168.101.14:5014"
to="192.168.100.45:5062"
time="1593501307050"
isSender="false"
transactionId="z9hg4bk-3137-6aaa9fa3786b6b7fb08d9bdbbf9256c5"
callId="1024711825"
firstLine="SIP/2.0 200 OK"
>
<![CDATA[SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.100.45:5062;branch=z9hG4bK-3137-6aaa9fa3786b6b7fb08d9bdbbf9256c5,SIP/2.0/UDP 192.168.101.217:5217;rport=5217;branch=z9hG4bK474906270;received=192.168.101.217
Record-Route: "TERRA_PROXY_SERVER" <sip:[email protected]:5062;lr>
From: "217" <sip:[email protected]:5062>;tag=966553558
To: <sip:[email protected]:5062>;tag=113355942
Call-ID: 1024711825
CSeq: 20 INVITE
Contact: <sip:[email protected]:5014>
Content-Type: application/sdp
Allow: INVITE,ACK,CANCEL,OPTIONS,BYE,REFER,NOTIFY,MESSAGE,SUBSCRIBE,INFO
User-Agent: eXosip/3.1.0
Content-Length: 200
]]>
</message>
<message
from="192.168.101.14:5014"
to="192.168.100.45:5062"
time="1593501307051"
isSender="false"
transactionId="z9hg4bk-3137-6aaa9fa3786b6b7fb08d9bdbbf9256c5"
callId="1024711825"
firstLine="SIP/2.0 200 OK"
>
<![CDATA[SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.100.45:5062;branch=z9hG4bK-3137-6aaa9fa3786b6b7fb08d9bdbbf9256c5,SIP/2.0/UDP 192.168.101.217:5217;rport=5217;branch=z9hG4bK474906270;received=192.168.101.217
Record-Route: "TERRA_PROXY_SERVER" <sip:[email protected]:5062;lr>
From: "217" <sip:[email protected]:5062>;tag=966553558
To: <sip:[email protected]:5062>;tag=113355942
Call-ID: 1024711825
CSeq: 20 INVITE
Contact: <sip:[email protected]:5014>
Content-Type: application/sdp
Allow: INVITE,ACK,CANCEL,OPTIONS,BYE,REFER,NOTIFY,MESSAGE,SUBSCRIBE,INFO
User-Agent: eXosip/3.1.0
Content-Length: 200
]]>
</message>
<message
from="192.168.100.45:5062"
to="192.168.101.217:5217"
time="1593501307054"
isSender="true"
transactionId="z9hg4bk474906270"
callId="1024711825"
firstLine="SIP/2.0 200 OK"
>
<![CDATA[SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.101.217:5217;rport=5217;branch=z9hG4bK474906270;received=192.168.101.217
Record-Route: "TERRA_PROXY_SERVER" <sip:[email protected]:5062;lr>
From: "217" <sip:[email protected]:5062>;tag=966553558
To: <sip:[email protected]:5062>;tag=113355942
Call-ID: 1024711825
CSeq: 20 INVITE
Contact: <sip:[email protected]:5014>
Allow: INVITE,ACK,CANCEL,OPTIONS,BYE,REFER,NOTIFY,MESSAGE,SUBSCRIBE,INFO
User-Agent: eXosip/3.1.0
Content-Type: application/sdp
Content-Length: 200
]]>
</message>
<message
from="192.168.101.217:5217"
to="192.168.100.45:5062"
time="1593501307348"
isSender="false"
transactionId="z9hg4bk1089380003"
callId="1024711825"
firstLine="ACK sip:[email protected]:5062 SIP/2.0"
>
<![CDATA[ACK sip:[email protected]:5062 SIP/2.0
Via: SIP/2.0/UDP 192.168.101.217:5217;rport=5217;branch=z9hG4bK1089380003;received=192.168.101.217
Route: "TERRA_PROXY_SERVER" <sip:[email protected]:5062;lr>
From: "217" <sip:[email protected]:5062>;tag=966553558
To: <sip:[email protected]:5062>;tag=113355942
Call-ID: 1024711825
CSeq: 20 ACK
Contact: <sip:[email protected]:5217>
Max-Forwards: 70
User-Agent: eXosip/3.1.0
Content-Length: 0
]]>
</message>
<message
from="192.168.100.45:5062"
to="192.168.101.14:5014"
time="1593501307353"
isSender="true"
transactionId="966553558-1024711825-20-ack-192.168.100.45-50623137"
callId="1024711825"
firstLine="ACK sip:[email protected]:5062 SIP/2.0"
>
<![CDATA[ACK sip:[email protected]:5062 SIP/2.0
Via: SIP/2.0/UDP 192.168.100.45:5062;branch=966553558-1024711825-20-ack-192.168.100.45-50623137,SIP/2.0/UDP 192.168.101.217:5217;rport=5217;branch=z9hG4bK1089380003;received=192.168.101.217
Route: "14" <sip:[email protected]:5014;lr>,"TERRA_PROXY_SERVER" <sip:[email protected]:5062;lr>
From: "217" <sip:[email protected]:5062>;tag=966553558
To: <sip:[email protected]:5062>;tag=113355942
Call-ID: 1024711825
CSeq: 20 ACK
Contact: <sip:[email protected]:5217>
Max-Forwards: 70
User-Agent: eXosip/3.1.0
Content-Length: 0
]]>
</message>
<message
from="192.168.101.14:5014"
to="192.168.100.45:5062"
time="1593501381766"
isSender="false"
transactionId="z9hg4bk106975397"
callId="1024711825"
firstLine="BYE sip:[email protected]:5062 SIP/2.0"
>
<![CDATA[BYE sip:[email protected]:5062 SIP/2.0
Via: SIP/2.0/UDP 192.168.101.14:5014;rport=5014;branch=z9hG4bK106975397;received=192.168.101.14
Route: "TERRA_PROXY_SERVER" <sip:[email protected]:5062;lr>
From: <sip:[email protected]:5062>;tag=113355942
To: "217" <sip:[email protected]:5062>;tag=966553558
Call-ID: 1024711825
CSeq: 2 BYE
Contact: <sip:[email protected]:5014>
Max-Forwards: 70
User-Agent: eXosip/3.1.0
Content-Length: 0
]]>
</message>
<message
from="192.168.100.45:5062"
to="192.168.101.14:5014"
time="1593501381771"
isSender="true"
transactionId="z9hg4bk106975397"
callId="1024711825"
firstLine="SIP/2.0 481 Call leg/Transaction does not exist"
>
<![CDATA[SIP/2.0 481 Call leg/Transaction does not exist
CSeq: 2 BYE
Call-ID: 1024711825
From: <sip:[email protected]:5062>;tag=113355942
To: "217" <sip:[email protected]:5062>;tag=966553558
Via: SIP/2.0/UDP 192.168.101.14:5014;rport=5014;branch=z9hG4bK106975397;received=192.168.101.14
Content-Length: 0
]]>
</message>
<message
from="192.168.101.217:5217"
to="192.168.100.45:5062"
time="1593501389132"
isSender="false"
transactionId="z9hg4bk550352336"
callId="1024711825"
firstLine="BYE sip:[email protected]:5062 SIP/2.0"
>
<![CDATA[BYE sip:[email protected]:5062 SIP/2.0
Via: SIP/2.0/UDP 192.168.101.217:5217;rport=5217;branch=z9hG4bK550352336;received=192.168.101.217
Route: "TERRA_PROXY_SERVER" <sip:[email protected]:5062;lr>
From: "217" <sip:[email protected]:5062>;tag=966553558
To: <sip:[email protected]:5062>;tag=113355942
Call-ID: 1024711825
CSeq: 21 BYE
Contact: <sip:[email protected]:5217>
Max-Forwards: 70
User-Agent: eXosip/3.1.0
Content-Length: 0
]]>
</message>
<message
from="192.168.100.45:5062"
to="192.168.101.217:5217"
time="1593501389136"
isSender="true"
transactionId="z9hg4bk550352336"
callId="1024711825"
firstLine="SIP/2.0 200 OK"
>
<![CDATA[SIP/2.0 200 OK
CSeq: 21 BYE
Call-ID: 1024711825
From: "217" <sip:[email protected]:5062>;tag=966553558
To: <sip:[email protected]:5062>;tag=113355942
Via: SIP/2.0/UDP 192.168.101.217:5217;rport=5217;branch=z9hG4bK550352336;received=192.168.101.217
Contact: "217" <sip:[email protected]>;expires=60
Expires: 60
Content-Length: 0
]]>
</message>
<message
from="192.168.100.45:5062"
to="192.168.101.14:5014"
time="1593501389137"
isSender="true"
transactionId="966553558-1024711825-21-bye-192.168.100.45-50623137"
callId="1024711825"
firstLine="BYE sip:[email protected]:5014 SIP/2.0"
>
<![CDATA[BYE sip:[email protected]:5014 SIP/2.0
Via: SIP/2.0/UDP 192.168.100.45:5062;branch=966553558-1024711825-21-bye-192.168.100.45-50623137,SIP/2.0/UDP 192.168.101.217:5217;rport=5217;branch=z9hG4bK550352336;received=192.168.101.217
From: "217" <sip:[email protected]:5062>;tag=966553558
To: <sip:[email protected]:5062>;tag=113355942
Call-ID: 1024711825
CSeq: 21 BYE
Contact: <sip:[email protected]:5217>
Max-Forwards: 70
User-Agent: eXosip/3.1.0
Content-Length: 0
]]>
</message>
<message
from="192.168.101.14:5014"
to="192.168.100.45:5062"
time="1593501389154"
isSender="false"
transactionId="966553558-1024711825-21-bye-192.168.100.45-50623137"
callId="1024711825"
firstLine="SIP/2.0 481 Call Leg/Transaction Does Not Exist"
>
<![CDATA[SIP/2.0 481 Call Leg/Transaction Does Not Exist
Via: SIP/2.0/UDP 192.168.100.45:5062;branch=966553558-1024711825-21-bye-192.168.100.45-50623137,SIP/2.0/UDP 192.168.101.217:5217;rport=5217;branch=z9hG4bK550352336;received=192.168.101.217
From: "217" <sip:[email protected]:5062>;tag=966553558
To: <sip:[email protected]:5062>;tag=113355942
Call-ID: 1024711825
CSeq: 21 BYE
User-Agent: eXosip/3.1.0
Content-Length: 0
]]>
</message>
<message
from="192.168.101.14:5014"
to="192.168.100.45:5062"
time="1593501389155"
isSender="false"
transactionId="966553558-1024711825-21-bye-192.168.100.45-50623137"
callId="1024711825"
firstLine="SIP/2.0 481 Call Leg/Transaction Does Not Exist"
>
<![CDATA[SIP/2.0 481 Call Leg/Transaction Does Not Exist
Via: SIP/2.0/UDP 192.168.100.45:5062;branch=966553558-1024711825-21-bye-192.168.100.45-50623137,SIP/2.0/UDP 192.168.101.217:5217;rport=5217;branch=z9hG4bK550352336;received=192.168.101.217
From: "217" <sip:[email protected]:5062>;tag=966553558
To: <sip:[email protected]:5062>;tag=113355942
Call-ID: 1024711825
CSeq: 21 BYE
User-Agent: eXosip/3.1.0
Content-Length: 0
]]>
</message>
getServerTransaction code when auto-dialogs are off. st is null, but still exception when getNewServerTransaction.
public static ServerTransaction getServerTransaction(RequestEvent eventObject) {
ServerTransaction st = eventObject.getServerTransaction();
if (st != null) {
return st;
}
SipProvider sipProvider = (SipProvider) eventObject.getSource();
if (sipProvider == null) {
log.debug("getServerTransaction fail. SipProvider is null.");
return null;
}
try {
st = sipProvider.getNewServerTransaction(eventObject.getRequest());
} catch (SipException se) {
log.debug("getServerTransaction fail.", se);
}
return st;
}
If you are receiving 481 from jsip that suggests you are trying to look up a dialog when you receive the BYE and it probably doesn't exist at this point. When jsip is a proxy you should not have any jsip dialogs.
Proxy applications in jsip shouldn't rely on jsip dialogs and must maintain their own dialog state (or not for stateless proxies). Proxies should always be implemented in a dialog-stateless mode which basically means to avoid creating any dialogs. You can see a general example here https://github.com/usnistgov/jsip/blob/master/src/examples/forked/invite/Proxy.java
If you have already done this please post some code and debug level logs.