Hi All,
I have a configuration where we run a multi-homed proxy/loadbalancer and a seperate internal presence server. We then use pua/pua-dialoginfo on the proxies to publish dialog state to the internal presence server.
The proxies listen on udp:external_ip:5062 and udp:internal_ip1:5060. The presence server listens on udp:internal_ip2:5060 on a seperate server.
The problem I am coming accross is that when kamailio generates a PUBLISH message for some dialogs it creates the via header with address external:ip:5062, however the pua module is configured to send to the presence server address on internal_ip2:5060. I have a route which forces the sending socket ($fs) to be udp:internal_ip1:5060.
What happens then is that the presence server tries to send the 200 reply to the PUBLISH message back to internal_ip1:5062 (when it should be internal_ip1:5060), I'm thinking this is because the Via header has host as external_ip:5062.
Is it possible, from event-route[tm:local-request] to rewrite the via header so that it reflects internal_ip1:5060 instead of external_ip:5062?
I did try the following snippet from event-route[tm:local-request], but I got module parse errors on the Via header:
if (is_method("PUBLISH")) { subst_hf("Via", "/ 1.2.3.[0-9]+:5062;/ $sel(cfg_get.socket.internal_ip);/", "f"); }
[7370]: ERROR: <core> [parser/parse_via.c:2607]: parse_via(): ERROR:parse_via on <1> state 5 (default) [7370]: ERROR: <core> [parser/parse_via.c:2708]: parse_via(): ERROR: parse_via on: <SIP/2.0/UDP external_ip:5062;branch=z9hG4bK96eb.0f014ae4000000000000000000000000.0#015#012 internal_ip1; [7370]: ERROR: <core> [parser/parse_via.c:2712]: parse_via(): ERROR: parse_via parse error, parsed so far:<SIP/2.0/UDP external_ip:5062;branch=z9hG4bK96eb.0f014ae4000000000000000000000000.0#015#012
[7370]: ERROR: <core> [parser/msg_parser.c:125]: get_hdr_field(): ERROR: get_hdr_field: bad via [7370]: INFO: <core> [parser/msg_parser.c:338]: parse_headers(): ERROR: bad header field [Via: SIP/2.0/UDP 1] [7370]: ERROR: <core> [parser/msg_parser.c:690]: parse_msg(): ERROR: parse_msg: message=<PUBLISH sip:user@domain;transport=UDP SIP/2.0#015#012Via: SIP/2.0/UDP external_ip:5062;branch=z9hG4bK96eb.0f014ae4000000000000000000000000.0#015#012 internal_ip1;To: sip:user@domain;transport=UDP#015#012From: sip:user@domain;transport=UDP;tag=3e8fdaca277026bf3e6d75c5e5313096-f162#015#012CSeq: 10 PUBLISH#015#012Call-ID: 5634294b786134b3-7370@external_ip#015#012Content-Length: 692#015#012User-Agent: kamailio (bfievklb04)#015#012Max-Forwards: 70#015#012Event: dialog#015#012Expires: 10901#015#012Content-Type: application/dialog-info+xml#015#012#015#012<?xml version="1.0"?>#012<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" version="0" state="full" entity="sip:user@domain;transport=UDP">#012 <dialog id="mvqXXaAr24DHdfsffYKZeA.." call-id="mvqXXaAr24DHdfsffYKZeA.." direction="initiator">#012 <state>Trying</state>#012 <remote>#012 <identity>sip:1234567@domain;transport=UDP</identity>#012 <target uri="sip:1234567@domain;transport=UDP"/>#012 </remote>#012 <local>#012 <identity>sip:user@domain;transport=UDP</identity>#012 <target uri="sip:user@domain;transport=UDP"/>#012 </local>#012 </dialog>#012</dialog-info>#012> [7370]: ERROR: <core> [msg_translator.c:3057]: build_sip_msg_from_buf(): parsing failed [7370]: ERROR: tm [uac.c:163]: uac_refresh_hdr_shortcuts(): failed to parse msg buffer [7370]: ERROR: tm [uac.c:487]: t_uac_prepare(): failed to refresh header shortcuts [7370]: ERROR: pua [send_publish.c:700]: send_publish(): in t_request tm module function [7370]: ERROR: pua_dialoginfo [dialog_publish.c:358]: dialog_publish(): while sending publish
To me, it looks like the replace section of the subst_hf sub expression is being appended to the end of the via header instead of replacing the address section found.
I have sanitized the above output to not show internal details, but if you need it, I can send it on to you privately.
Am I going about this issue in the correct way, and, if so, where am I going wrong with the subst_hf snippet above?
Kamailio version is 4.3.6.
Any pointers/tips/trciks are greatly appreciated.
Thanks
Hello,
can you send the pcap with sip messages for such situation? It will help to understand if Via is used corerctly for replies.
Cheers, Daniel
On 08/08/16 18:51, Asgaroth wrote:
Hi All,
I have a configuration where we run a multi-homed proxy/loadbalancer and a seperate internal presence server. We then use pua/pua-dialoginfo on the proxies to publish dialog state to the internal presence server.
The proxies listen on udp:external_ip:5062 and udp:internal_ip1:5060. The presence server listens on udp:internal_ip2:5060 on a seperate server.
The problem I am coming accross is that when kamailio generates a PUBLISH message for some dialogs it creates the via header with address external:ip:5062, however the pua module is configured to send to the presence server address on internal_ip2:5060. I have a route which forces the sending socket ($fs) to be udp:internal_ip1:5060.
What happens then is that the presence server tries to send the 200 reply to the PUBLISH message back to internal_ip1:5062 (when it should be internal_ip1:5060), I'm thinking this is because the Via header has host as external_ip:5062.
Is it possible, from event-route[tm:local-request] to rewrite the via header so that it reflects internal_ip1:5060 instead of external_ip:5062?
I did try the following snippet from event-route[tm:local-request], but I got module parse errors on the Via header:
if (is_method("PUBLISH")) { subst_hf("Via", "/ 1.2.3.[0-9]+:5062;/ $sel(cfg_get.socket.internal_ip);/", "f"); }
[7370]: ERROR: <core> [parser/parse_via.c:2607]: parse_via(): ERROR:parse_via on <1> state 5 (default) [7370]: ERROR: <core> [parser/parse_via.c:2708]: parse_via(): ERROR: parse_via on: <SIP/2.0/UDP external_ip:5062;branch=z9hG4bK96eb.0f014ae4000000000000000000000000.0#015#012 internal_ip1; [7370]: ERROR: <core> [parser/parse_via.c:2712]: parse_via(): ERROR: parse_via parse error, parsed so far:<SIP/2.0/UDP external_ip:5062;branch=z9hG4bK96eb.0f014ae4000000000000000000000000.0#015#012
[7370]: ERROR: <core> [parser/msg_parser.c:125]: get_hdr_field(): ERROR: get_hdr_field: bad via [7370]: INFO: <core> [parser/msg_parser.c:338]: parse_headers(): ERROR: bad header field [Via: SIP/2.0/UDP 1] [7370]: ERROR: <core> [parser/msg_parser.c:690]: parse_msg(): ERROR: parse_msg: message=<PUBLISH sip:user@domain;transport=UDP SIP/2.0#015#012Via: SIP/2.0/UDP external_ip:5062;branch=z9hG4bK96eb.0f014ae4000000000000000000000000.0#015#012 internal_ip1;To: sip:user@domain;transport=UDP#015#012From: sip:user@domain;transport=UDP;tag=3e8fdaca277026bf3e6d75c5e5313096-f162#015#012CSeq: 10 PUBLISH#015#012Call-ID: 5634294b786134b3-7370@external_ip#015#012Content-Length: 692#015#012User-Agent: kamailio (bfievklb04)#015#012Max-Forwards: 70#015#012Event: dialog#015#012Expires: 10901#015#012Content-Type: application/dialog-info+xml#015#012#015#012<?xml version="1.0"?>#012<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" version="0" state="full" entity="sip:user@domain;transport=UDP">#012 <dialog id="mvqXXaAr24DHdfsffYKZeA.." call-id="mvqXXaAr24DHdfsffYKZeA.." direction="initiator">#012 <state>Trying</state>#012 <remote>#012 <identity>sip:1234567@domain;transport=UDP</identity>#012 <target uri="sip:1234567@domain;transport=UDP"/>#012 </remote>#012 <local>#012 <identity>sip:user@domain;transport=UDP</identity>#012 <target uri="sip:user@domain;transport=UDP"/>#012 </local>#012
</dialog>#012</dialog-info>#012> [7370]: ERROR: <core> [msg_translator.c:3057]: build_sip_msg_from_buf(): parsing failed [7370]: ERROR: tm [uac.c:163]: uac_refresh_hdr_shortcuts(): failed to parse msg buffer [7370]: ERROR: tm [uac.c:487]: t_uac_prepare(): failed to refresh header shortcuts [7370]: ERROR: pua [send_publish.c:700]: send_publish(): in t_request tm module function [7370]: ERROR: pua_dialoginfo [dialog_publish.c:358]: dialog_publish(): while sending publish
To me, it looks like the replace section of the subst_hf sub expression is being appended to the end of the via header instead of replacing the address section found.
I have sanitized the above output to not show internal details, but if you need it, I can send it on to you privately.
Am I going about this issue in the correct way, and, if so, where am I going wrong with the subst_hf snippet above?
Kamailio version is 4.3.6.
Any pointers/tips/trciks are greatly appreciated.
Thanks
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
Hi Daniel,
I've just sent the captures on to you privately.
Thanks
On 09/08/2016 08:34, Daniel-Constantin Mierla wrote:
Hello,
can you send the pcap with sip messages for such situation? It will help to understand if Via is used corerctly for replies.
Cheers, Daniel
On 08/08/16 18:51, Asgaroth wrote:
Hi All,
I have a configuration where we run a multi-homed proxy/loadbalancer and a seperate internal presence server. We then use pua/pua-dialoginfo on the proxies to publish dialog state to the internal presence server.
The proxies listen on udp:external_ip:5062 and udp:internal_ip1:5060. The presence server listens on udp:internal_ip2:5060 on a seperate server.
The problem I am coming accross is that when kamailio generates a PUBLISH message for some dialogs it creates the via header with address external:ip:5062, however the pua module is configured to send to the presence server address on internal_ip2:5060. I have a route which forces the sending socket ($fs) to be udp:internal_ip1:5060.
What happens then is that the presence server tries to send the 200 reply to the PUBLISH message back to internal_ip1:5062 (when it should be internal_ip1:5060), I'm thinking this is because the Via header has host as external_ip:5062.
Is it possible, from event-route[tm:local-request] to rewrite the via header so that it reflects internal_ip1:5060 instead of external_ip:5062?
I did try the following snippet from event-route[tm:local-request], but I got module parse errors on the Via header:
if (is_method("PUBLISH")) { subst_hf("Via", "/ 1.2.3.[0-9]+:5062;/ $sel(cfg_get.socket.internal_ip);/", "f"); }
[7370]: ERROR: <core> [parser/parse_via.c:2607]: parse_via(): ERROR:parse_via on <1> state 5 (default) [7370]: ERROR: <core> [parser/parse_via.c:2708]: parse_via(): ERROR: parse_via on: <SIP/2.0/UDP external_ip:5062;branch=z9hG4bK96eb.0f014ae4000000000000000000000000.0#015#012 internal_ip1; [7370]: ERROR: <core> [parser/parse_via.c:2712]: parse_via(): ERROR: parse_via parse error, parsed so far:<SIP/2.0/UDP external_ip:5062;branch=z9hG4bK96eb.0f014ae4000000000000000000000000.0#015#012 [7370]: ERROR: <core> [parser/msg_parser.c:125]: get_hdr_field(): ERROR: get_hdr_field: bad via [7370]: INFO: <core> [parser/msg_parser.c:338]: parse_headers(): ERROR: bad header field [Via: SIP/2.0/UDP 1] [7370]: ERROR: <core> [parser/msg_parser.c:690]: parse_msg(): ERROR: parse_msg: message=<PUBLISH sip:user@domain;transport=UDP SIP/2.0#015#012Via: SIP/2.0/UDP external_ip:5062;branch=z9hG4bK96eb.0f014ae4000000000000000000000000.0#015#012 internal_ip1;To: sip:user@domain;transport=UDP#015#012From: sip:user@domain;transport=UDP;tag=3e8fdaca277026bf3e6d75c5e5313096-f162#015#012CSeq: 10 PUBLISH#015#012Call-ID: 5634294b786134b3-7370@external_ip#015#012Content-Length: 692#015#012User-Agent: kamailio (bfievklb04)#015#012Max-Forwards: 70#015#012Event: dialog#015#012Expires: 10901#015#012Content-Type: application/dialog-info+xml#015#012#015#012<?xml version="1.0"?>#012<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" version="0" state="full" entity="sip:user@domain;transport=UDP">#012 <dialog id="mvqXXaAr24DHdfsffYKZeA.." call-id="mvqXXaAr24DHdfsffYKZeA.." direction="initiator">#012 <state>Trying</state>#012 <remote>#012 <identity>sip:1234567@domain;transport=UDP</identity>#012 <target uri="sip:1234567@domain;transport=UDP"/>#012 </remote>#012 <local>#012 <identity>sip:user@domain;transport=UDP</identity>#012 <target uri="sip:user@domain;transport=UDP"/>#012 </local>#012
</dialog>#012</dialog-info>#012> [7370]: ERROR: <core> [msg_translator.c:3057]: build_sip_msg_from_buf(): parsing failed [7370]: ERROR: tm [uac.c:163]: uac_refresh_hdr_shortcuts(): failed to parse msg buffer [7370]: ERROR: tm [uac.c:487]: t_uac_prepare(): failed to refresh header shortcuts [7370]: ERROR: pua [send_publish.c:700]: send_publish(): in t_request tm module function [7370]: ERROR: pua_dialoginfo [dialog_publish.c:358]: dialog_publish(): while sending publish
To me, it looks like the replace section of the subst_hf sub expression is being appended to the end of the via header instead of replacing the address section found.
I have sanitized the above output to not show internal details, but if you need it, I can send it on to you privately.
Am I going about this issue in the correct way, and, if so, where am I going wrong with the subst_hf snippet above?
Kamailio version is 4.3.6.
Any pointers/tips/trciks are greatly appreciated.
Thanks
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
Update:
I've just noticed that the error's I'm seeing roughly appear every 20 seconds after an attempted locall generated publish is sent when rewriting the via header in the event-route.
This seems to corrolate with my db update interval which is set to 20 seconds.
I'm wondering if the via header re-write was not written to the pua table correctly. I cannot run the msg_apply_changes() function in event-route so I'm stuck with this error message.
I wonder, would it be possible to have a module parameter to specify the sending socket if/when the outbound_proxy parameter is set? I presume, then, the Via header would be generated correctly.
Any thoughts on how I could work around this issue?
Thanks
On 09/08/2016 09:31, Asgaroth wrote:
Hi Daniel,
I've just sent the captures on to you privately.
Thanks
On 09/08/2016 08:34, Daniel-Constantin Mierla wrote:
Hello,
can you send the pcap with sip messages for such situation? It will help to understand if Via is used corerctly for replies.
Cheers, Daniel
On 08/08/16 18:51, Asgaroth wrote:
Hi All,
I have a configuration where we run a multi-homed proxy/loadbalancer and a seperate internal presence server. We then use pua/pua-dialoginfo on the proxies to publish dialog state to the internal presence server.
The proxies listen on udp:external_ip:5062 and udp:internal_ip1:5060. The presence server listens on udp:internal_ip2:5060 on a seperate server.
The problem I am coming accross is that when kamailio generates a PUBLISH message for some dialogs it creates the via header with address external:ip:5062, however the pua module is configured to send to the presence server address on internal_ip2:5060. I have a route which forces the sending socket ($fs) to be udp:internal_ip1:5060.
What happens then is that the presence server tries to send the 200 reply to the PUBLISH message back to internal_ip1:5062 (when it should be internal_ip1:5060), I'm thinking this is because the Via header has host as external_ip:5062.
Is it possible, from event-route[tm:local-request] to rewrite the via header so that it reflects internal_ip1:5060 instead of external_ip:5062?
I did try the following snippet from event-route[tm:local-request], but I got module parse errors on the Via header:
if (is_method("PUBLISH")) { subst_hf("Via", "/ 1.2.3.[0-9]+:5062;/ $sel(cfg_get.socket.internal_ip);/", "f"); }
[7370]: ERROR: <core> [parser/parse_via.c:2607]: parse_via(): ERROR:parse_via on <1> state 5 (default) [7370]: ERROR: <core> [parser/parse_via.c:2708]: parse_via(): ERROR: parse_via on: <SIP/2.0/UDP external_ip:5062;branch=z9hG4bK96eb.0f014ae4000000000000000000000000.0#015#012
internal_ip1; [7370]: ERROR: <core> [parser/parse_via.c:2712]: parse_via(): ERROR: parse_via parse error, parsed so far:<SIP/2.0/UDP external_ip:5062;branch=z9hG4bK96eb.0f014ae4000000000000000000000000.0#015#012
[7370]: ERROR: <core> [parser/msg_parser.c:125]: get_hdr_field(): ERROR: get_hdr_field: bad via [7370]: INFO: <core> [parser/msg_parser.c:338]: parse_headers(): ERROR: bad header field [Via: SIP/2.0/UDP 1] [7370]: ERROR: <core> [parser/msg_parser.c:690]: parse_msg(): ERROR: parse_msg: message=<PUBLISH sip:user@domain;transport=UDP SIP/2.0#015#012Via: SIP/2.0/UDP external_ip:5062;branch=z9hG4bK96eb.0f014ae4000000000000000000000000.0#015#012
internal_ip1;To: sip:user@domain;transport=UDP#015#012From: sip:user@domain;transport=UDP;tag=3e8fdaca277026bf3e6d75c5e5313096-f162#015#012CSeq:
10 PUBLISH#015#012Call-ID: 5634294b786134b3-7370@external_ip#015#012Content-Length: 692#015#012User-Agent: kamailio (bfievklb04)#015#012Max-Forwards: 70#015#012Event: dialog#015#012Expires: 10901#015#012Content-Type: application/dialog-info+xml#015#012#015#012<?xml version="1.0"?>#012<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" version="0" state="full" entity="sip:user@domain;transport=UDP">#012 <dialog id="mvqXXaAr24DHdfsffYKZeA.." call-id="mvqXXaAr24DHdfsffYKZeA.." direction="initiator">#012 <state>Trying</state>#012 <remote>#012 <identity>sip:1234567@domain;transport=UDP</identity>#012 <target uri="sip:1234567@domain;transport=UDP"/>#012 </remote>#012 <local>#012 <identity>sip:user@domain;transport=UDP</identity>#012 <target uri="sip:user@domain;transport=UDP"/>#012 </local>#012
</dialog>#012</dialog-info>#012> [7370]: ERROR: <core> [msg_translator.c:3057]: build_sip_msg_from_buf(): parsing failed [7370]: ERROR: tm [uac.c:163]: uac_refresh_hdr_shortcuts(): failed to parse msg buffer [7370]: ERROR: tm [uac.c:487]: t_uac_prepare(): failed to refresh header shortcuts [7370]: ERROR: pua [send_publish.c:700]: send_publish(): in t_request tm module function [7370]: ERROR: pua_dialoginfo [dialog_publish.c:358]: dialog_publish(): while sending publish
To me, it looks like the replace section of the subst_hf sub expression is being appended to the end of the via header instead of replacing the address section found.
I have sanitized the above output to not show internal details, but if you need it, I can send it on to you privately.
Am I going about this issue in the correct way, and, if so, where am I going wrong with the subst_hf snippet above?
Kamailio version is 4.3.6.
Any pointers/tips/trciks are greatly appreciated.
Thanks
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
I just looked at the pua table, and I dont have any records in the table, so I presume this error message occurs when reading the in-memory structure when pua module tries to update the database.
Is there a way I can see what the in memory structure looks like to see what the via header looks like?
On 12/08/2016 13:22, Asgaroth wrote:
Update:
I've just noticed that the error's I'm seeing roughly appear every 20 seconds after an attempted locall generated publish is sent when rewriting the via header in the event-route.
This seems to corrolate with my db update interval which is set to 20 seconds.
I'm wondering if the via header re-write was not written to the pua table correctly. I cannot run the msg_apply_changes() function in event-route so I'm stuck with this error message.
I wonder, would it be possible to have a module parameter to specify the sending socket if/when the outbound_proxy parameter is set? I presume, then, the Via header would be generated correctly.
Any thoughts on how I could work around this issue?
Thanks
On 09/08/2016 09:31, Asgaroth wrote:
Hi Daniel,
I've just sent the captures on to you privately.
Thanks
On 09/08/2016 08:34, Daniel-Constantin Mierla wrote:
Hello,
can you send the pcap with sip messages for such situation? It will help to understand if Via is used corerctly for replies.
Cheers, Daniel
On 08/08/16 18:51, Asgaroth wrote:
Hi All,
I have a configuration where we run a multi-homed proxy/loadbalancer and a seperate internal presence server. We then use pua/pua-dialoginfo on the proxies to publish dialog state to the internal presence server.
The proxies listen on udp:external_ip:5062 and udp:internal_ip1:5060. The presence server listens on udp:internal_ip2:5060 on a seperate server.
The problem I am coming accross is that when kamailio generates a PUBLISH message for some dialogs it creates the via header with address external:ip:5062, however the pua module is configured to send to the presence server address on internal_ip2:5060. I have a route which forces the sending socket ($fs) to be udp:internal_ip1:5060.
What happens then is that the presence server tries to send the 200 reply to the PUBLISH message back to internal_ip1:5062 (when it should be internal_ip1:5060), I'm thinking this is because the Via header has host as external_ip:5062.
Is it possible, from event-route[tm:local-request] to rewrite the via header so that it reflects internal_ip1:5060 instead of external_ip:5062?
I did try the following snippet from event-route[tm:local-request], but I got module parse errors on the Via header:
if (is_method("PUBLISH")) { subst_hf("Via", "/ 1.2.3.[0-9]+:5062;/ $sel(cfg_get.socket.internal_ip);/", "f"); }
[7370]: ERROR: <core> [parser/parse_via.c:2607]: parse_via(): ERROR:parse_via on <1> state 5 (default) [7370]: ERROR: <core> [parser/parse_via.c:2708]: parse_via(): ERROR: parse_via on: <SIP/2.0/UDP external_ip:5062;branch=z9hG4bK96eb.0f014ae4000000000000000000000000.0#015#012
internal_ip1; [7370]: ERROR: <core> [parser/parse_via.c:2712]: parse_via(): ERROR: parse_via parse error, parsed so far:<SIP/2.0/UDP external_ip:5062;branch=z9hG4bK96eb.0f014ae4000000000000000000000000.0#015#012
[7370]: ERROR: <core> [parser/msg_parser.c:125]: get_hdr_field(): ERROR: get_hdr_field: bad via [7370]: INFO: <core> [parser/msg_parser.c:338]: parse_headers(): ERROR: bad header field [Via: SIP/2.0/UDP 1] [7370]: ERROR: <core> [parser/msg_parser.c:690]: parse_msg(): ERROR: parse_msg: message=<PUBLISH sip:user@domain;transport=UDP SIP/2.0#015#012Via: SIP/2.0/UDP external_ip:5062;branch=z9hG4bK96eb.0f014ae4000000000000000000000000.0#015#012
internal_ip1;To: sip:user@domain;transport=UDP#015#012From: sip:user@domain;transport=UDP;tag=3e8fdaca277026bf3e6d75c5e5313096-f162#015#012CSeq:
10 PUBLISH#015#012Call-ID: 5634294b786134b3-7370@external_ip#015#012Content-Length: 692#015#012User-Agent: kamailio (bfievklb04)#015#012Max-Forwards: 70#015#012Event: dialog#015#012Expires: 10901#015#012Content-Type: application/dialog-info+xml#015#012#015#012<?xml version="1.0"?>#012<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" version="0" state="full" entity="sip:user@domain;transport=UDP">#012 <dialog id="mvqXXaAr24DHdfsffYKZeA.." call-id="mvqXXaAr24DHdfsffYKZeA.." direction="initiator">#012 <state>Trying</state>#012 <remote>#012 <identity>sip:1234567@domain;transport=UDP</identity>#012 <target uri="sip:1234567@domain;transport=UDP"/>#012 </remote>#012 <local>#012 <identity>sip:user@domain;transport=UDP</identity>#012 <target uri="sip:user@domain;transport=UDP"/>#012 </local>#012
</dialog>#012</dialog-info>#012> [7370]: ERROR: <core> [msg_translator.c:3057]: build_sip_msg_from_buf(): parsing failed [7370]: ERROR: tm [uac.c:163]: uac_refresh_hdr_shortcuts(): failed to parse msg buffer [7370]: ERROR: tm [uac.c:487]: t_uac_prepare(): failed to refresh header shortcuts [7370]: ERROR: pua [send_publish.c:700]: send_publish(): in t_request tm module function [7370]: ERROR: pua_dialoginfo [dialog_publish.c:358]: dialog_publish(): while sending publish
To me, it looks like the replace section of the subst_hf sub expression is being appended to the end of the via header instead of replacing the address section found.
I have sanitized the above output to not show internal details, but if you need it, I can send it on to you privately.
Am I going about this issue in the correct way, and, if so, where am I going wrong with the subst_hf snippet above?
Kamailio version is 4.3.6.
Any pointers/tips/trciks are greatly appreciated.
Thanks
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
The only way I was able to work around this is by having the internal port listen be the same port as the external interface listening port, I was not able to get it working correctly when the external interface was listening on 5062 and the internal interface was listening on the standard 5060 port.
On 13/08/2016 09:36, Asgaroth wrote:
I just looked at the pua table, and I dont have any records in the table, so I presume this error message occurs when reading the in-memory structure when pua module tries to update the database.
Is there a way I can see what the in memory structure looks like to see what the via header looks like?
On 12/08/2016 13:22, Asgaroth wrote:
Update:
I've just noticed that the error's I'm seeing roughly appear every 20 seconds after an attempted locall generated publish is sent when rewriting the via header in the event-route.
This seems to corrolate with my db update interval which is set to 20 seconds.
I'm wondering if the via header re-write was not written to the pua table correctly. I cannot run the msg_apply_changes() function in event-route so I'm stuck with this error message.
I wonder, would it be possible to have a module parameter to specify the sending socket if/when the outbound_proxy parameter is set? I presume, then, the Via header would be generated correctly.
Any thoughts on how I could work around this issue?
Thanks
On 09/08/2016 09:31, Asgaroth wrote:
Hi Daniel,
I've just sent the captures on to you privately.
Thanks
On 09/08/2016 08:34, Daniel-Constantin Mierla wrote:
Hello,
can you send the pcap with sip messages for such situation? It will help to understand if Via is used corerctly for replies.
Cheers, Daniel
On 08/08/16 18:51, Asgaroth wrote:
Hi All,
I have a configuration where we run a multi-homed proxy/loadbalancer and a seperate internal presence server. We then use pua/pua-dialoginfo on the proxies to publish dialog state to the internal presence server.
The proxies listen on udp:external_ip:5062 and udp:internal_ip1:5060. The presence server listens on udp:internal_ip2:5060 on a seperate server.
The problem I am coming accross is that when kamailio generates a PUBLISH message for some dialogs it creates the via header with address external:ip:5062, however the pua module is configured to send to the presence server address on internal_ip2:5060. I have a route which forces the sending socket ($fs) to be udp:internal_ip1:5060.
What happens then is that the presence server tries to send the 200 reply to the PUBLISH message back to internal_ip1:5062 (when it should be internal_ip1:5060), I'm thinking this is because the Via header has host as external_ip:5062.
Is it possible, from event-route[tm:local-request] to rewrite the via header so that it reflects internal_ip1:5060 instead of external_ip:5062?
I did try the following snippet from event-route[tm:local-request], but I got module parse errors on the Via header:
if (is_method("PUBLISH")) { subst_hf("Via", "/ 1.2.3.[0-9]+:5062;/ $sel(cfg_get.socket.internal_ip);/", "f"); }
[7370]: ERROR: <core> [parser/parse_via.c:2607]: parse_via(): ERROR:parse_via on <1> state 5 (default) [7370]: ERROR: <core> [parser/parse_via.c:2708]: parse_via(): ERROR: parse_via on: <SIP/2.0/UDP external_ip:5062;branch=z9hG4bK96eb.0f014ae4000000000000000000000000.0#015#012
internal_ip1; [7370]: ERROR: <core> [parser/parse_via.c:2712]: parse_via(): ERROR: parse_via parse error, parsed so far:<SIP/2.0/UDP external_ip:5062;branch=z9hG4bK96eb.0f014ae4000000000000000000000000.0#015#012
[7370]: ERROR: <core> [parser/msg_parser.c:125]: get_hdr_field(): ERROR: get_hdr_field: bad via [7370]: INFO: <core> [parser/msg_parser.c:338]: parse_headers(): ERROR: bad header field [Via: SIP/2.0/UDP 1] [7370]: ERROR: <core> [parser/msg_parser.c:690]: parse_msg(): ERROR: parse_msg: message=<PUBLISH sip:user@domain;transport=UDP SIP/2.0#015#012Via: SIP/2.0/UDP external_ip:5062;branch=z9hG4bK96eb.0f014ae4000000000000000000000000.0#015#012
internal_ip1;To: sip:user@domain;transport=UDP#015#012From: sip:user@domain;transport=UDP;tag=3e8fdaca277026bf3e6d75c5e5313096-f162#015#012CSeq:
10 PUBLISH#015#012Call-ID: 5634294b786134b3-7370@external_ip#015#012Content-Length: 692#015#012User-Agent: kamailio (bfievklb04)#015#012Max-Forwards: 70#015#012Event: dialog#015#012Expires: 10901#015#012Content-Type: application/dialog-info+xml#015#012#015#012<?xml version="1.0"?>#012<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" version="0" state="full" entity="sip:user@domain;transport=UDP">#012 <dialog id="mvqXXaAr24DHdfsffYKZeA.." call-id="mvqXXaAr24DHdfsffYKZeA.." direction="initiator">#012 <state>Trying</state>#012 <remote>#012 <identity>sip:1234567@domain;transport=UDP</identity>#012 <target uri="sip:1234567@domain;transport=UDP"/>#012 </remote>#012 <local>#012 <identity>sip:user@domain;transport=UDP</identity>#012 <target uri="sip:user@domain;transport=UDP"/>#012 </local>#012
</dialog>#012</dialog-info>#012> [7370]: ERROR: <core> [msg_translator.c:3057]: build_sip_msg_from_buf(): parsing failed [7370]: ERROR: tm [uac.c:163]: uac_refresh_hdr_shortcuts(): failed to parse msg buffer [7370]: ERROR: tm [uac.c:487]: t_uac_prepare(): failed to refresh header shortcuts [7370]: ERROR: pua [send_publish.c:700]: send_publish(): in t_request tm module function [7370]: ERROR: pua_dialoginfo [dialog_publish.c:358]: dialog_publish(): while sending publish
To me, it looks like the replace section of the subst_hf sub expression is being appended to the end of the via header instead of replacing the address section found.
I have sanitized the above output to not show internal details, but if you need it, I can send it on to you privately.
Am I going about this issue in the correct way, and, if so, where am I going wrong with the subst_hf snippet above?
Kamailio version is 4.3.6.
Any pointers/tips/trciks are greatly appreciated.
Thanks
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