[Kamailio-Devel] parse_via()

Daniel-Constantin Mierla miconda at gmail.com
Tue Sep 16 18:58:54 CEST 2008



On 09/16/08 18:42, Francisco Seratti wrote:
> All my work is done in a module, and im parsing the Via header into 
> (struct via_body *)via2 of the struct sip_msg of the reply message. 
> That struct is used when forward_reply() is called:
>
> forward.c:568
>     /* we have to forward the reply stateless, so we need second via 
> -bogdan*/
>     if (parse_headers( msg, HDR_VIA2_F, 0 )==-1
>         || (msg->via2==0) || (msg->via2->error!=PARSE_OK))
>     {
>         /* no second via => error */
>         LM_ERR("no 2nd via found in reply\n");
>         goto error;
>     }

do you fill msg->via2 by yourself? Do you set the appropriate header flag?

Cheers,
Daniel

>
>
> On Tue, Sep 16, 2008 at 12:28 PM, Daniel-Constantin Mierla 
> <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>
>     Hello,
>
>
>     On 09/16/08 18:05, Francisco Seratti wrote:
>
>         Hello,
>          Im trying to hide my network topology by adding/removing Via
>         headers. I can remove the correct header, but when adding it,
>         in replies, im having trouble with the parse_via() function
>         and i cant figure out where's the problem.
>         To the moment, request are coming out from the proxy with only
>         one Via (the proxy addr), but when replies come in, they are
>         discarded because no 2nd via is found. So, im "saving" the
>         removed Via from the request, to be inserted later in the
>         response (using parse_via() into  struct via_body *via2 of the
>         sip_msg).
>         The point is parse_via() waits 3 args: start of the header,
>         some "end" pointer, and the via_body struct for saving parsed
>         data. I think my problem is in that end pointer, as i could
>         see in msg_parse.c:116 it is the end of the entire msg, but
>         not sure.
>         Ive tried many, many ways but i cant finally get via parsing
>         OK. Im getting "ERROR:core:parse_via:  invalid via - end of
>         header in state 14" or different states (16). (i guarantee via
>         header is well formed).
>
>         Could someone orientate me, to know where im failiing??
>         Askme for any extra data if you need, thanks a lot!
>
>     the problem is that changes done to sip messages are not effective
>     in the script. Even if you add a via in the reply message, the
>     script interpreter works only on the sip message received, which
>     has only one via, therefore, openser does not have an address
>     where to forward the reply and discards it.
>
>     I assume you develop some module to hide the topology and have the
>     add/remove via logic there. You can try to register a pre-script
>     callback and add at least one via there. This callback is executed
>     before running the config script. There you can modify the
>     original sip message and re-initiate the entire sip message parsing.
>
>     Cheers,
>     Daniel
>
>     -- 
>     Daniel-Constantin Mierla
>     http://www.asipto.com
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Devel mailing list
> Devel at lists.kamailio.org
> http://lists.kamailio.org/cgi-bin/mailman/listinfo/devel
>   

-- 
Daniel-Constantin Mierla
http://www.asipto.com




More information about the Devel mailing list