Another quick update on this before I pass out from lack of sleep..!<div><br></div><div>Just had a look through the mod_sofia.c/h source and found the following;</div><div><br></div><div><div>mod_sofia.c/mod_sofia.h</div><div>
#define SOFIA_REFER_TO_VARIABLE &quot;sip_refer_to&quot;</div><div>if (!zstr(full_ref_by)) {</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>switch_channel_set_variable(t_channel, SOFIA_SIP_HEADER_PREFIX &quot;Referred-By&quot;, full_ref_by);</div>
<div>}</div><div>if (!zstr(full_ref_to)) {</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>switch_channel_set_variable(t_channel, SOFIA_REFER_TO_VARIABLE, full_ref_to);</div><div>}</div><div>if (!zstr(full_ref_to)) {</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>switch_channel_set_variable(t_channel, SOFIA_REFER_TO_VARIABLE, full_ref_to);</div><div>}</div><div>switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, &quot;Process REFER to [%s@%s]\n&quot;, exten, (char *) refer_to-&gt;r_url-&gt;url_host);</div>
<div><br></div><div>If the correct approach is deemed to be patching code, then I figured it could be as simple as this;</div><div><br></div><div><div>switch_channel_set_variable(t_channel, &quot;Referred-By-User&quot;, exten);</div>
<div>switch_channel_set_variable(t_channel, &quot;Referred-By-Domain&quot;, (char *) refer_to-&gt;r_url-&gt;url_host);</div></div><div><br></div><div>This is pretty much where my knowledge of C ends, I can (just about) read and copy chunks of C code, but that&#39;s about it :)</div>
<div><br></div><div>Cal</div><br><div class="gmail_quote">On Mon, Nov 19, 2012 at 4:38 AM, Cal Leeming [Simplicity Media Ltd] <span dir="ltr">&lt;<a href="mailto:cal.leeming@simplicitymedialtd.co.uk" target="_blank">cal.leeming@simplicitymedialtd.co.uk</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Not sure if this is relevant but thought I&#39;d point it out.<div><br></div><div>The following field seems to contain the IP of the domain we were expecting (&#39;<a href="http://c1881.voiceflare.co.uk/" target="_blank">c1881.voiceflare.co.uk</a>&#39;)</div>

<div><br></div><div><div> u&#39;variable_sip_from_host&#39;: u&#39;89.238.182.137&#39;,</div><div><br></div><div>Normally, this field would contain the hostname and not the IP.</div><span class="HOEnZb"><font color="#888888"><div>
<br></div><div>Cal</div></font></span><div><div class="h5"><br><div class="gmail_quote">
On Mon, Nov 19, 2012 at 4:34 AM, Cal Leeming [Simplicity Media Ltd] <span dir="ltr">&lt;<a href="mailto:cal.leeming@simplicitymedialtd.co.uk" target="_blank">cal.leeming@simplicitymedialtd.co.uk</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi guys,<div><br></div><div>In a nut shell, it appears that when attempting to perform a blind transfer under certain conditions (explained below), mod_xml_curl does not expose the originating domain in a clean format.</div>


<div><div><br></div><div><div>My initial plan was to find the point where these variable were being generated, look at what was available, then add an extra variable for the domain and submit a patch.</div></div><div><br>


</div><div>Sadly my C isn&#39;t great and I hit a brick wall, so if anyone can help out, I will ensure the mod_xml_curl documentation is updated and/or assist with any patching/testing required.</div><div><div><br></div>

</div>
<div>Please take the following scenario;</div><div><br></div><div>* Extension 2000 calls an external number via a gateway (i.e. bridge sofia/gateway/name/e164_number_here).</div><div>* Call connects fine, audio stays good, no disconnection problems etc.</div>


<div>* Call is blind transferred to another extension</div><div><br></div><div>As a result, the following is determined;</div><div><br></div><div>* User initiating the blind transfer is 2000</div><div>* Domain initiating the blind transfer is <a href="http://c1881.voiceflare.co.uk" target="_blank">c1881.voiceflare.co.uk</a></div>


<div>* Destination number of the call is 447866123456</div><div>* Number to blind transfer to is 2001</div><div>* Call to mod_xml_curl is made</div><div><br></div><div>It makes reference to the User in the following &#39;clean&#39; variables (by clean, I mean variables that just contain 2000 and don&#39;t require mangling to extract the info);</div>


<div><br></div><div><div> u&#39;Caller-ANI&#39;: u&#39;2000&#39;,</div></div><div><div> u&#39;Caller-Username&#39;: u&#39;2000&#39;,</div></div><div><div> u&#39;Caller-Caller-ID-Number&#39;: u&#39;2000&#39;,</div></div><div>


<div> u&#39;Hunt-ANI&#39;: u&#39;2000&#39;,</div></div><div><div> u&#39;Hunt-Caller-ID-Number&#39;: u&#39;2000&#39;,</div></div><div><div> u&#39;Hunt-Username&#39;: u&#39;2000&#39;,</div></div><div><div> u&#39;variable_last_sent_callee_id_number&#39;: u&#39;2000&#39;,</div>


</div><div><div><div> u&#39;variable_sip_from_user&#39;: u&#39;2000&#39;,</div><div></div></div><div><br></div><div>It also has the User in the following unclean variables;</div><div><br></div><div> u&#39;variable_bridge_channel&#39;: u&#39;sofia/external/<a href="http://2000@c1881.voiceflare.co.uk:5060" target="_blank">2000@c1881.voiceflare.co.uk:5060</a>&#39;,</div>


<div></div></div><div><div> u&#39;variable_sip_from_uri&#39;: <a href="mailto:u%272000@89.238.182.137" target="_blank">u&#39;2000@89.238.182.137</a>&#39;,</div><div> u&#39;variable_sip_full_from&#39;: u&#39;&quot;foxx&quot; &lt;<a href="mailto:sip%3A2000@89.238.182.137" target="_blank">sip:2000@89.238.182.137</a>&gt;;tag=XryjFQp3rB2NF&#39;,</div>


</div><div><div> u&#39;variable_sip_h_Referred-By&#39;: u&#39;&quot;foxx&quot; &lt;<a href="http://sip:2000@c1881.voiceflare.co.uk:5060" target="_blank">sip:2000@c1881.voiceflare.co.uk:5060</a>&gt;&#39;,</div></div><div>

<br></div><div>However, it only references the domain in the following unclean variables;</div>
<div><br></div><div> u&#39;variable_bridge_channel&#39;: u&#39;sofia/external/<a href="http://2000@c1881.voiceflare.co.uk:5060" target="_blank">2000@c1881.voiceflare.co.uk:5060</a>&#39;,</div><div> u&#39;variable_sip_h_Referred-By&#39;: u&#39;&quot;foxx&quot; &lt;<a href="http://sip:2000@c1881.voiceflare.co.uk:5060" target="_blank">sip:2000@c1881.voiceflare.co.uk:5060</a>&gt;&#39;,</div>


<div> u&#39;variable_sip_refer_to&#39;: u&#39;&lt;<a href="http://sip:2001@c1881.voiceflare.co.uk:5060" target="_blank">sip:2001@c1881.voiceflare.co.uk:5060</a>&gt;&#39;,</div><div><br></div><div>Lets say that we want to determine the user/domain that has initiated this transfer, doing so would mean mangling with one of those above variables, which seems a bit dirty (plus it is not clear which is the correct one to use).</div>


<div><br></div><div>I have attached the SIP trace of the entire blind transfer event, and the full mod_xml_curl request being sent.</div><div><br></div><div><div>If anyone could answer the following, it&#39;d be much appreciated;</div>


<div><br></div><div>* Should there be an improvement patch that exposes the domain of the user that originated the blind transfer?</div><div>* Are there better/alternative ways to extracting the domain of the user that originated the blind transfer?</div>


</div><div><br></div><div>Many thanks</div><span><font color="#888888"><div><br>Cal</div><div><br></div></font></span></div>
</blockquote></div><br></div></div></div>
</blockquote></div><br></div>