为什么有时Jain Sip在收到再见时会返回“ 481呼叫分支/事务不存在”?

时间:2020-06-30 07:53:35

标签: java sip jain-sip

使用jain sip创建sip代理应用。
客户端A->代理应用->客户端B
如果A呼叫B:A可以挂断,但是当B某时向Jain Sip发送BYE时,将481个呼叫分支返回给B。 当通话以秒为单位结束时,可以成功再见。
但是,如果通话在几分钟内结束,则当B发送BYE时,Jain会return回481个通话线路。 而且主叫客户A总是BYE成功。

已经检查了呼叫ID,请求uri,从到标签。还是不知道。

这是日志

<message
from="192.168.101.217:5217" 
to="192.168.100.45:5062" 
time="1593501306804"
isSender="false" 
transactionId="z9hg4bk474906270" 
callId="1024711825" 
firstLine="INVITE sip:14@192.168.100.45:5062 SIP/2.0" 
>
<![CDATA[INVITE sip:14@192.168.100.45: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:217@192.168.100.45:5062>;tag=966553558
To: <sip:14@192.168.100.45:5062>
Call-ID: 1024711825
CSeq: 20 INVITE
Contact: <sip:217@192.168.101.217: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:14@192.168.100.45:5062 SIP/2.0" 
>
<![CDATA[INVITE sip:14@192.168.100.45: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:217@192.168.100.45:5062>;tag=966553558
To: <sip:14@192.168.100.45:5062>
Call-ID: 1024711825
CSeq: 20 INVITE
Contact: <sip:217@192.168.101.217: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:14@192.168.101.14:5014;lr>
Record-Route: "TERRA_PROXY_SERVER" <sip:TERRA_PROXY_SERVER@192.168.100.45: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:TERRA_PROXY_SERVER@192.168.100.45:5062;lr>
From: "217" <sip:217@192.168.100.45:5062>;tag=966553558
To: <sip:14@192.168.100.45:5062>;tag=113355942
Call-ID: 1024711825
CSeq: 20 INVITE
Contact: <sip:14@192.168.101.14: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:TERRA_PROXY_SERVER@192.168.100.45:5062;lr>
From: "217" <sip:217@192.168.100.45:5062>;tag=966553558
To: <sip:14@192.168.100.45:5062>;tag=113355942
Call-ID: 1024711825
CSeq: 20 INVITE
Contact: <sip:14@192.168.101.14: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:TERRA_PROXY_SERVER@192.168.100.45:5062;lr>
From: "217" <sip:217@192.168.100.45:5062>;tag=966553558
To: <sip:14@192.168.100.45:5062>;tag=113355942
Call-ID: 1024711825
CSeq: 20 INVITE
Contact: <sip:14@192.168.101.14: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:14@192.168.100.45:5062 SIP/2.0" 
>
<![CDATA[ACK sip:14@192.168.100.45: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:TERRA_PROXY_SERVER@192.168.100.45:5062;lr>
From: "217" <sip:217@192.168.100.45:5062>;tag=966553558
To: <sip:14@192.168.100.45:5062>;tag=113355942
Call-ID: 1024711825
CSeq: 20 ACK
Contact: <sip:217@192.168.101.217: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:14@192.168.100.45:5062 SIP/2.0" 
>
<![CDATA[ACK sip:14@192.168.100.45: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:14@192.168.101.14:5014;lr>,"TERRA_PROXY_SERVER" <sip:TERRA_PROXY_SERVER@192.168.100.45:5062;lr>
From: "217" <sip:217@192.168.100.45:5062>;tag=966553558
To: <sip:14@192.168.100.45:5062>;tag=113355942
Call-ID: 1024711825
CSeq: 20 ACK
Contact: <sip:217@192.168.101.217: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:217@192.168.100.45:5062 SIP/2.0" 
>
<![CDATA[BYE sip:217@192.168.100.45: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:TERRA_PROXY_SERVER@192.168.100.45:5062;lr>
From: <sip:14@192.168.100.45:5062>;tag=113355942
To: "217" <sip:217@192.168.100.45:5062>;tag=966553558
Call-ID: 1024711825
CSeq: 2 BYE
Contact: <sip:14@192.168.101.14: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:14@192.168.100.45:5062>;tag=113355942
To: "217" <sip:217@192.168.100.45: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:14@192.168.100.45:5062 SIP/2.0" 
>
<![CDATA[BYE sip:14@192.168.100.45: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:TERRA_PROXY_SERVER@192.168.100.45:5062;lr>
From: "217" <sip:217@192.168.100.45:5062>;tag=966553558
To: <sip:14@192.168.100.45:5062>;tag=113355942
Call-ID: 1024711825
CSeq: 21 BYE
Contact: <sip:217@192.168.101.217: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:217@192.168.100.45:5062>;tag=966553558
To: <sip:14@192.168.100.45: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:217@192.168.101.217>;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:14@192.168.101.14:5014 SIP/2.0" 
>
<![CDATA[BYE sip:14@192.168.101.14: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:217@192.168.100.45:5062>;tag=966553558
To: <sip:14@192.168.100.45:5062>;tag=113355942
Call-ID: 1024711825
CSeq: 21 BYE
Contact: <sip:217@192.168.101.217: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:217@192.168.100.45:5062>;tag=966553558
To: <sip:14@192.168.100.45: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:217@192.168.100.45:5062>;tag=966553558
To: <sip:14@192.168.100.45:5062>;tag=113355942
Call-ID: 1024711825
CSeq: 21 BYE
User-Agent: eXosip/3.1.0
Content-Length: 0

]]>
</message>

getServerTransaction代码 自动对话关闭时。 st为null,但在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;
  }

2 个答案:

答案 0 :(得分:0)

如果从jsip接收到481,则表明您在收到BYE时尝试查找一个对话框,该对话框可能目前不存在。如果jsip是代理,则不应有任何jsip对话框。

jsip中的代理应用程序不应依赖jsip对话框,而必须保持其自己的对话框状态(或者对于无状态代理而言,则不能如此)。代理应始终以无对话框状态模式实现,这基本上意味着避免创建任何对话框。您可以在这里https://github.com/usnistgov/jsip/blob/master/src/examples/forked/invite/Proxy.java

看到一个一般示例

如果您已完成此操作,请发布一些代码并调试级别日志。

答案 1 :(得分:0)

您需要仔细查看路线记录路线 Contact 标头。

初始错误出现在User-Agent在代理服务器上收到的第一个 ACK 中。

ACK sip:14@192.168.100.45:5062 SIP/2.0

上述request-uri应该是200 Ok的联系人

ACK sip:14@192.168.101.14:5014 SIP/2.0

我建议您修复所有联系人记录路由路由,然后确保您处理 ACK BYE (在代理模式下):即,您需要使用 request-uri Route 转发它们,而不是回答它们。