Hi, sorry for my late reply.
I hardcoded the Contact header in dialog/dlg_transfer.c file. It is not a very elegant way, but I had a short time to fix it :-) Attached you can find a diff output with the changes I made. Besides the Contact, I had to add more headers for compatibility reasons both to INVITE and REFER message. I think a solution would be to add two params: "bridge_invite_hdrs" and "bridge_refer_hdrs", to manually include all the headers needed in initial INVITE and REFER (e.g.: modparam("dialog", "bridge_invite_hdrs", "Contact: <sip:click2d...@172.22.5.17:5060>\r\nSupported: 100rel\r\nContent-Type: application/sdp\r\n")). Perhaps these params could be a bit confusing and error-prone for new users, however they would be quite useful. Comments are welcome. Regards, Anton 2010/7/1 Daniel-Constantin Mierla <mico...@gmail.com> > Hello, > > > On 5/27/10 3:32 PM, Anton Roman wrote: > > Hi, > > regarding the missing Contact header in the REFER message, it can be solved > by including some lines in /modules_k/dialog/dlg_ transfer.c. In this file, > the Contact of the initial INVITE generated with dlg_bridge command can be > easily changed as well. > > do you have a patch that you can send for adding the contact header? > > Cheers, > Daniel > > > The problem now is only in the processing of the ACK generated by the TM > module. When this ACK leaves the Kamailio server the branch value of the > topmost Via header is '0'. > > Below you can find the debug output where the ACK is generated and routed > by Kamailio. Any idea about where the error can be? > > thanks in advance, > regards > > Anton > > > 11(5056) DEBUG: tm [t_msgbuilder.c:791]: building ACK for out-of-dialog > INVITE (using RS in RR set). > 11(5056) DEBUG: tm [t_msgbuilder.c:967]: ACK RURI: `sip:2...@10.1.3.15:5061', > NH: `sip:10.1.2.122;lr=on'. > 11(5056) DEBUG: tm [t_reply.c:1059]: ->>>>>>>>> T_code=180, new_code=200 > 11(5056) DEBUG: tm [t_reply.c:1794]: DEBUG: local_reply: branch=0, save=0, > winner=0 > 11(5056) DEBUG: tm [t_reply.c:356]: DEBUG: update_totag_set: new totag > 11(5056) DEBUG: tm [t_reply.c:1831]: DEBUG: local transaction completed > 11(5056) DEBUG: tm [t_hooks.c:288]: DBG: trans=0x7f9767eb1268, callback > type 256, id 0 entered > 11(5056) DEBUG: dialog [dlg_transfer.c:207]: completed with status 200 > 11(5056) DEBUG: <core> [parser/parse_to.c:179]: DEBUG: add_param: > tag=533cb9e91f4b999cf76861cbb9ed54ed-3bcd > 9(5052) DEBUG: <core> [parser/msg_parser.c:612]: SIP Request: > 9(5052) DEBUG: <core> [parser/msg_parser.c:614]: method: <ACK> > 9(5052) DEBUG: <core> [parser/msg_parser.c:616]: uri: < > sip:2...@10.1.3.15:5061> > 9(5052) DEBUG: <core> [parser/msg_parser.c:618]: version: <SIP/2.0> > 9(5052) DEBUG: <core> [parser/parse_via.c:1283]: Found param type 232, > <branch> = <z9hG4bKf7bc.00856364.0>; state=16 > 9(5052) DEBUG: <core> [parser/parse_via.c:2296]: end of header reached, > state=5 > 9(5052) DEBUG: <core> [parser/msg_parser.c:500]: parse_headers: Via found, > flags=2 > 9(5052) DEBUG: <core> [parser/msg_parser.c:502]: parse_headers: this is > the first via > 9(5052) DEBUG: <core> [receive.c:137]: After parse_msg... > 9(5052) DEBUG: <core> [receive.c:177]: preparing to run routing scripts... > 9(5052) DEBUG: sl [sl_funcs.c:335]: to late to be a local ACK! > 9(5052) DEBUG: <core> [parser/parse_to.c:179]: DEBUG: add_param: > tag=94cf927f9c6eed24i1 > 9(5052) DEBUG: <core> [parser/parse_to.c:808]: end of header reached, > state=29 > 9(5052) DEBUG: <core> [parser/msg_parser.c:174]: DEBUG: get_hdr_field: > <To> [43]; uri=[sip:2...@10.1.2.122 <sip%3a...@10.1.2.122>] > 9(5052) DEBUG: <core> [parser/msg_parser.c:176]: DEBUG: to body [ > sip:2...@10.1.2.122 <sip%3a...@10.1.2.122>] > 9(5052) DEBUG: <core> [parser/msg_parser.c:154]: get_hdr_field: cseq > <CSeq>: <10> <ACK> > 9(5052) DEBUG: <core> [parser/msg_parser.c:188]: DEBUG: get_hdr_body : > content_length=0 > 9(5052) DEBUG: <core> [parser/msg_parser.c:90]: found end of header > 9(5052) DEBUG: maxfwd [mf_funcs.c:66]: max_forwards header not found! > 9(5052) DEBUG: <core> [parser/parse_to.c:179]: DEBUG: add_param: > tag=533cb9e91f4b999cf76861cbb9ed54ed-3bcd > 9(5052) DEBUG: <core> [parser/parse_to.c:808]: end of header reached, > state=29 > 9(5052) DEBUG: sanity [mod_sanity.c:220]: all sanity checks passed > 9(5052) ERROR: <script>: kamailio!!!: ACK 9(5052) DEBUG: siputils > [checks.c:68]: totag found > 9(5052) DEBUG: rr [loose.c:85]: is_preloaded: No > 9(5052) DEBUG: <core> [socket_info.c:485]: grep_sock_info - checking if > host==us: 9==9 && [10.1.3.15] == [127.0.0.1] > 9(5052) DEBUG: <core> [socket_info.c:488]: grep_sock_info - checking if > port 5060 matches port 5061 > 9(5052) DEBUG: <core> [socket_info.c:485]: grep_sock_info - checking if > host==us: 9==9 && [10.1.3.15] == [127.0.0.2] > 9(5052) DEBUG: <core> [socket_info.c:488]: grep_sock_info - checking if > port 5060 matches port 5061 > 9(5052) DEBUG: <core> [socket_info.c:485]: grep_sock_info - checking if > host==us: 9==10 && [10.1.3.15] == [10.1.2.122] > 9(5052) DEBUG: <core> [socket_info.c:488]: grep_sock_info - checking if > port 5060 matches port 5061 > 9(5052) DEBUG: <core> [socket_info.c:485]: grep_sock_info - checking if > host==us: 9==9 && [10.1.3.15] == [127.0.0.1] > 9(5052) DEBUG: <core> [socket_info.c:488]: grep_sock_info - checking if > port 5060 matches port 5061 > 9(5052) DEBUG: <core> [socket_info.c:485]: grep_sock_info - checking if > host==us: 9==9 && [10.1.3.15] == [127.0.0.2] > 9(5052) DEBUG: <core> [socket_info.c:488]: grep_sock_info - checking if > port 5060 matches port 5061 > 9(5052) DEBUG: <core> [socket_info.c:485]: grep_sock_info - checking if > host==us: 9==10 && [10.1.3.15] == [10.1.2.122] > 9(5052) DEBUG: <core> [socket_info.c:488]: grep_sock_info - checking if > port 5060 matches port 5061 > 9(5052) DEBUG: <core> [forward.c:356]: check_self: host != me > 9(5052) DEBUG: <core> [socket_info.c:485]: grep_sock_info - checking if > host==us: 10==9 && [10.1.2.122] == [127.0.0.1] > 9(5052) DEBUG: <core> [socket_info.c:488]: grep_sock_info - checking if > port 5060 matches port 5060 > 9(5052) DEBUG: <core> [socket_info.c:485]: grep_sock_info - checking if > host==us: 10==9 && [10.1.2.122] == [127.0.0.2] > 9(5052) DEBUG: <core> [socket_info.c:488]: grep_sock_info - checking if > port 5060 matches port 5060 > 9(5052) DEBUG: <core> [socket_info.c:485]: grep_sock_info - checking if > host==us: 10==10 && [10.1.2.122] == [10.1.2.122] > 9(5052) DEBUG: <core> [socket_info.c:488]: grep_sock_info - checking if > port 5060 matches port 5060 > 9(5052) DEBUG: rr [loose.c:781]: Topmost route URI: 'sip:10.1.2.122;lr=on' > is me > 9(5052) DEBUG: <core> [parser/msg_parser.c:90]: found end of header > 9(5052) DEBUG: rr [loose.c:257]: No next Route HF found > 9(5052) DEBUG: rr [loose.c:800]: No next URI found > 9(5052) DEBUG: rr [rr_cb.c:97]: callback id 0 entered with <lr=on> > 9(5052) DEBUG: dialog [dlg_handlers.c:797]: Route param 'did' not found > 9(5052) DEBUG: tm [t_lookup.c:1387]: DEBUG: t_newtran: msg id=10 , global > msg id=9 , T on entrance=0xffffffffffffffff > 9(5052) DEBUG: tm [t_lookup.c:528]: t_lookup_request: start searching: > hash=52095, isACK=1 > 9(5052) DEBUG: tm [t_lookup.c:720]: DEBUG: t_lookup_request: e2e proxy ACK > found > 9(5052) DEBUG: tm [t_reply.c:276]: DEBUG: totag for e2e ACK found: 0 > 9(5052) DEBUG: tm [t_funcs.c:315]: SER: forwarding ACK statelessly > 9(5052) DEBUG: <core> [msg_translator.c:200]: > check_via_address(10.1.2.122, 10.1.2.122, 0) > 9(5052) DEBUG: <core> [forward.c:509]: Sending: > ACK sip:2...@10.1.3.15:5061 SIP/2.0 > Max-Forwards: 10 > Via: SIP/2.0/UDP 10.1.2.122;branch=0 > Via: SIP/2.0/UDP 10.1.2.122;branch=z9hG4bKf7bc.00856364.0 > From: sip:click2d...@172.22.5.17 <sip%3aclick2d...@172.22.5.17> > ;tag=533cb9e91f4b999cf76861cbb9ed54ed-3bcd > Call-ID: 2bef8d5474ff8cd4 > To: sip:2...@10.1.2.122 <sip%3a...@10.1.2.122>;tag=94cf927f9c6eed24i1 > CSeq: 10 ACK > User-Agent: kamailio (3.0.1 (x86_64/linux)) > Content-Length: 0 > > > > > _______________________________________________ > SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list > sr-us...@lists.sip-router.orghttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users > > > -- > Daniel-Constantin Mierlahttp://www.asipto.com/ > >
40c40 < #define DLG_HOLD_SDP "v=0\r\no=kamailio-bridge 0 0 IN IP4 0.0.0.0\r\ns=kamailio\r\nc=IN IP4 0.0.0.0\r\nt=0 0\r\nm=audio 9 RTP/AVP 8 0\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:0 PCMU/8000\r\n" --- > #define DLG_HOLD_SDP "v=0\r\no=kamailio-bridge 0 0 IN IP4 > 0.0.0.0\r\ns=kamailio\r\nc=IN IP4 0.0.0.0\r\nt=0 0\r\nm=audio 16 RTP/AVP 8 > 0\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:0 PCMU/8000\r\n" 43c43 < #define DLG_HOLD_CT_HDR "Contact: <sip:kamailio.org:5060>\r\nContent-Type: application/sdp\r\n" --- > #define DLG_HOLD_CT_HDR "Contact: > <sip:click2d...@172.22.5.17:5060>\r\nSupported: 100rel\r\nContent-Type: > application/sdp\r\n" 147,148c147,150 < hdrs.len = 23 + 2*CRLF_LEN + dlg_bridge_controller.len < + dtc->to.len; --- > /*hdrs.len = 23 + 2*CRLF_LEN + dlg_bridge_controller.len > + dtc->to.len;*/ > hdrs.len = 65 + 3*CRLF_LEN + dlg_bridge_controller.len > + dtc->to.len; 156,157c158,164 < memcpy(hdrs.s+13+dlg_bridge_controller.len+CRLF_LEN, "Refer-To: ", 10); < memcpy(hdrs.s+23+dlg_bridge_controller.len+CRLF_LEN, dtc->to.s, --- > memcpy(hdrs.s+13+dlg_bridge_controller.len+CRLF_LEN, "Contact: > <sip:click2d...@172.22.5.17:5060>", 42); > memcpy(hdrs.s+55+dlg_bridge_controller.len+CRLF_LEN, CRLF, CRLF_LEN); > /*memcpy(hdrs.s+54+dlg_bridge_controller.len+CRLF_LEN+CRLF_LEN, > "Supported: 100rel", 17); > memcpy(hdrs.s+71+dlg_bridge_controller.len+CRLF_LEN+CRLF_LEN,CRLF, > CRLF_LEN); > */ > memcpy(hdrs.s+55+dlg_bridge_controller.len+CRLF_LEN+CRLF_LEN, > "Refer-To: ", 10); > memcpy(hdrs.s+65+dlg_bridge_controller.len+CRLF_LEN+CRLF_LEN, dtc->to.s, 159c166 < memcpy(hdrs.s+23+dlg_bridge_controller.len+CRLF_LEN+dtc->to.len, --- > > memcpy(hdrs.s+65+dlg_bridge_controller.len+CRLF_LEN+CRLF_LEN+dtc->to.len,
_______________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users