문제

나는 PJSIP 프로젝트의 전체 빌드 샘플 vidgui를 성공시켰다. 그러나 실행하는 동안 IMS 서버에 로그인 할 수 없습니다. 서버 리턴 오류 :

SIP/2.0 400 Bad Request - P-Visited-Network-ID header missing

아래는 응용 프로그램이 실행되는 동안 디버그 로그입니다.

11:07:55.376    pjsua_acc.c  .Acc 0: setting registration..
11:07:55.376    pjsua_acc.c  ..Contact for acc 0 updated for SIP outbound: <sip:18401@10.171.27.92:39191;transport=TCP;ob>;reg-id=1;+sip.instance="<urn:uuid:00000000-0000-0000-0000-0000a3fe1a18>"
11:07:55.376  tcpc0x1386ba8  ...TCP client transport created
11:07:55.376  tcpc0x1386ba8  ...TCP transport 10.171.27.92:41599 is connecting to 10.171.18.21:5060...
11:07:55.376   pjsua_core.c  ...TX 645 bytes Request msg REGISTER/cseq=25194 (tdta0x13843b0) to TCP 10.171.18.21:5060:
REGISTER sip:10.171.18.21 SIP/2.0
Via: SIP/2.0/TCP 10.171.27.92:41599;rport;branch=z9hG4bKPjxBSX6.FR4wQKgeJSOs6OP1HzEBBJ9ivv
Route: <sip:10.171.18.21;transport=tcp;lr>
Max-Forwards: 70
From: <sip:18401@10.171.18.21>;tag=lEY0yl3PZ.6iBX9SRwhC3dmErvvDji3f
To: <sip:18401@10.171.18.21>
Call-ID: zZdqmKCxlxWG2syWmhqLtY0Xdk0rTBT-
CSeq: 25194 REGISTER
Supported: outbound, path
Contact: <sip:18401@10.171.27.92:39191;transport=TCP;ob>;reg-id=1;+sip.instance="<urn:uuid:00000000-0000-0000-0000-0000a3fe1a18>"
Expires: 300
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
Content-Length:  0


--end msg--
11:07:55.377    pjsua_acc.c  ..Acc 0: Registration sent
11:07:55.377     vidgui.cpp  Starting stack..
11:07:55.377   pjsua_core.c  PJSUA state changed: INIT --> STARTING
11:07:55.377 sip_endpoint.c  .Module "mod-unsolicited-mwi" registered
11:07:55.377   pjsua_core.c  .PJSUA state changed: STARTING --> RUNNING
11:07:55.377     vidgui.cpp  Ready
11:07:55.377 sip_endpoint.c  Module "mod-default-handler" registered
11:07:55.385  tcpc0x1386ba8 !TCP transport 10.171.27.92:41599 is connected to 10.171.18.21:5060
11:07:55.388   pjsua_core.c  .RX 623 bytes Response msg 400/REGISTER/cseq=25194 (rdata0x1386e98) from TCP 10.171.18.21:5060:
SIP/2.0 400 Bad Request - P-Visited-Network-ID header missing
Via: SIP/2.0/TCP 10.171.27.92:41599;rport=41599;branch=z9hG4bKPjxBSX6.FR4wQKgeJSOs6OP1HzEBBJ9ivv
From: <sip:18401@10.171.18.21>;tag=lEY0yl3PZ.6iBX9SRwhC3dmErvvDji3f
To: <sip:18401@10.171.18.21>;tag=e7f797549a5ada3f2024dbe4b4572ec6-e254
Call-ID: zZdqmKCxlxWG2syWmhqLtY0Xdk0rTBT-
CSeq: 25194 REGISTER
Server: Sip EXpress router (2.1.0-dev1 OpenIMSCore (i386/linux))
Content-Length: 0
Warning: 392 10.171.18.21:5060 "Noisy feedback tells:  pid=3287 req_src_ip=10.171.27.92 req_src_port=41599 in_uri=sip:10.171.18.21 out_uri=sip:10.171.18.21 via_cnt==1"


--end msg--
11:07:55.389    pjsua_acc.c  ....SIP registration failed, status=400 (Bad Request - P-Visited-Network-ID header missing)
11:07:55.389     vidgui.cpp  ....<sip:18401@10.171.18.21>: 400/Bad Request (expires=-1)

다음은 pjsua_acc_config에 대한 코드입니다.

acc_cfg.id = pj_str( (char*)"<sip:" SIP_USERNAME "@" SIP_DOMAIN ">");
acc_cfg.reg_uri = pj_str((char*) ("sip:" SIP_DOMAIN));
acc_cfg.cred_count = 1;
acc_cfg.cred_info[0].realm = pj_str((char*)"*");
acc_cfg.cred_info[0].scheme = pj_str((char*)"digest");
acc_cfg.cred_info[0].username = pj_str((char*)SIP_USERNAME);
acc_cfg.cred_info[0].data = pj_str((char*)SIP_PASSWORD);
acc_cfg.proxy[acc_cfg.proxy_cnt++] = pj_str((char*) "<sip:" SIP_DOMAIN ";transport=tcp>");

이 오류를 해결하도록 도와주세요. 감사!

도움이 되었습니까?

해결책

알려진 오픈ims 문제에 직면하고 있다고 생각합니다. P-CSCF는 4060 및 S-CSCF에서 5060에서 듣고 있습니다. P-CSCF를 통과하여 S-CFC에 도달해야하지만 연결 하여이 마지막 서버에 직접 액세스해야합니다. Port 5060은 P-CSCF에 의해 추가되어야하는 P-Visited-Network-ID 헤더가 누락 되었기 때문에 불평합니다.

프록시 주소 구성을 다음과 같이 업데이트하는 것이 좋습니다.

acc_cfg.proxy[acc_cfg.proxy_cnt++] = pj_str((char*) "<sip:" SIP_DOMAIN ":4060;transport=tcp>");

그리고 다시 시도하십시오.

도움이 되었기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top