<div dir="ltr">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:<br><br>forward.c:568<br>
&nbsp;&nbsp;&nbsp; /* we have to forward the reply stateless, so we need second via -bogdan*/<br>&nbsp;&nbsp;&nbsp; if (parse_headers( msg, HDR_VIA2_F, 0 )==-1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; || (msg-&gt;via2==0) || (msg-&gt;via2-&gt;error!=PARSE_OK))<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* no second via =&gt; error */<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LM_ERR(&quot;no 2nd via found in reply\n&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; goto error;<br>&nbsp;&nbsp;&nbsp; }<br><br><br><div class="gmail_quote">On Tue, Sep 16, 2008 at 12:28 PM, Daniel-Constantin Mierla <span dir="ltr">&lt;<a href="mailto:miconda@gmail.com">miconda@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hello,<div><div></div><div class="Wj3C7c"><br>
<br>
On 09/16/08 18:05, Francisco Seratti wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hello,<br>
 &nbsp;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&#39;s the problem.<br>

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 &quot;saving&quot; the removed Via from the request, to be inserted later in the response (using parse_via() into &nbsp;struct via_body *via2 of the sip_msg).<br>

The point is parse_via() waits 3 args: start of the header, some &quot;end&quot; 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.<br>

Ive tried many, many ways but i cant finally get via parsing OK. Im getting &quot;ERROR:core:parse_via: &nbsp;invalid via - end of header in state 14&quot; or different states (16). (i guarantee via header is well formed).<br>

<br>
Could someone orientate me, to know where im failiing??<br>
Askme for any extra data if you need, thanks a lot!<br>
</blockquote></div></div>
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.<br>

<br>
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.<br>

<br>
Cheers,<br>
Daniel<br><font color="#888888">
<br>
-- <br>
Daniel-Constantin Mierla<br>
<a href="http://www.asipto.com" target="_blank">http://www.asipto.com</a><br>
<br>
</font></blockquote></div><br></div>