<html>
<body>
Thank you for your advices!<br><br>
Regarding the second point I already have a record_route() like below
which does not help to disconnect ringing calls:<br>
&nbsp;&nbsp;&nbsp; if (!has_totag()) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #
initial request<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
record_route();<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>}<br>
I also tried like this without success:<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><pre>if
(is_method(&quot;INVITE&quot;))
</pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>record_route();<br>
I wonder if the creator of the tutorial had same disconnect problems and
how did he solved it...<br><br>
Looking into the trace there is a CANCEL received from softphone but it
is not propagated to the destination server:<br><br>
Jul&nbsp; 9 12:19:34 sippc /usr/sbin/opensips[32132]:
DBG:core:build_res_buf_from_sip_res: copied size: orig:108, new: 46,
rest: 700 msg=#012SIP/2.0 183 Session Progress#015#012CSeq: 1
INVITE#015#012Via: SIP/2.0/UDP
192.168.1.36:13308;received=X.136.171.132;branch=z9hG4bK-d8754z-317a22388e1b1a23-1---d8754z-;rport=61425#015#012From:
&quot;EyeBeamGG&quot;&lt;sip:Gabi@A.121.254.18&gt;;tag=8a56554d#015#012Call-ID:
YzE5NjRmMzY4YWVlZDJhMGU5MjdmZTlhNTgxY2MzN2M.#015#012To:
&quot;101&quot;&lt;sip:101@A.121.254.18&gt;;tag=0907290911276889507657541#015#012Contact:
&lt;sip:A.121.254.201:5060;transport=udp&gt;#015#012Content-Type:
application/sdp#015#012Content-Length: 229#015#012Record-Route:
&lt;sip:A.121.254.18;lr;ftag=8a56554d;did=0a8.698c41a&gt;#015#012#015#012v=0#015#012o=VoipSwitch
8540 8540 IN IP4 A.121.254.201#015#012s=VoipSIP#015#012i=Audio
Session#015#012c=IN IP4 A.121.254.201#015#012t=0 0#015#012m=audio 7540
RTP/AVP 18 101#015#012a=rtpmap:18 G729/8000/1#015#012a=rtpmap:101
telephone-event/8000#015#012a=fmtp:101
0-15#015#012a=sendrecv#015#012<br>
Jul&nbsp; 9 12:19:34 sippc /usr/sbin/opensips[32132]:
DBG:tm:run_trans_callbacks: trans=0xb5c31df8, callback type 128, id 0
entered<br>
Jul&nbsp; 9 12:19:34 sippc /usr/sbin/opensips[32132]:
DBG:dialog:next_state_dlg: dialog 0xb5c31c58 changed from state 2 to
state 2, due event 2<br>
Jul&nbsp; 9 12:19:34 sippc /usr/sbin/opensips[32132]: DBG:tm:relay_reply:
sent buf=0x816c2d8: SIP/2.0 1..., shmem=0xb5c344b8: SIP/2.0 1<br>
Jul&nbsp; 9 12:19:34 sippc /usr/sbin/opensips[32132]: DBG:tm:set_timer:
relative timeout is 120<br>
Jul&nbsp; 9 12:19:34 sippc /usr/sbin/opensips[32132]:
DBG:tm:insert_timer_unsafe: [1]: 0xb5c31f60 (200)<br>
Jul&nbsp; 9 12:19:34 sippc /usr/sbin/opensips[32132]: DBG:tm:t_unref:
UNREF_UNSAFE: after is 0<br>
Jul&nbsp; 9 12:19:34 sippc /usr/sbin/opensips[32132]:
DBG:core:destroy_avp_list: destroying list (nil)<br>
Jul&nbsp; 9 12:19:34 sippc /usr/sbin/opensips[32132]:
DBG:core:receive_msg: cleaning up<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]: DBG:core:parse_msg:
SIP Request:<br>
<b>Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:core:parse_msg:&nbsp; method:&nbsp; &lt;CANCEL&gt;<br>
</b>Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:core:parse_msg:&nbsp; uri:&nbsp;&nbsp;&nbsp;&nbsp;
&lt;sip:101@A.121.254.18&gt;<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:core:parse_msg:&nbsp; version: &lt;SIP/2.0&gt;<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:core:parse_headers: flags=2<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:core:parse_via_param: found param type 232, &lt;branch&gt; =
&lt;z9hG4bK-d8754z-317a22388e1b1a23-1---d8754z-&gt;; state=6<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:core:parse_via_param: found param type 235, &lt;rport&gt; =
&lt;n/a&gt;; state=17<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]: DBG:core:parse_via:
end of header reached, state=5<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:core:parse_headers: via found, flags=2<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:core:parse_headers: this is the first via<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:core:receive_msg: After parse_msg...<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:core:receive_msg: preparing to run routing scripts...<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:core:parse_headers: flags=100<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]: DBG:core:parse_to:
end of header reached, state=10<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]: DBG:core:parse_to:
display={&quot;101&quot;}, ruri={sip:101@A.121.254.18}<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:core:get_hdr_field: &lt;To&gt; [30]; uri=[sip:101@A.121.254.18]<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:core:get_hdr_field: to body
[&quot;101&quot;&lt;sip:101@A.121.254.18&gt;#015#012]<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:core:get_hdr_field: cseq &lt;CSeq&gt;: &lt;1&gt; &lt;CANCEL&gt;<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:core:get_hdr_field: content_length=0<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:core:get_hdr_field: found end of header<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:maxfwd:is_maxfwd_present: max_forwards header not found!<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]: DBG:uri:has_totag:
no totag<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:core:parse_to_param: tag=8a56554d<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]: DBG:core:parse_to:
end of header reached, state=29<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]: DBG:core:parse_to:
display={&quot;EyeBeamGG&quot;}, ruri={sip:Gabi@A.121.254.18}<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:core:parse_headers: flags=78<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:tm:t_lookupOriginalT: searching on hash entry 18783<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:tm:matching_3261: RFC3261 transaction matched,
tid=-d8754z-317a22388e1b1a23-1---d8754z-<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:tm:t_lookupOriginalT: canceled transaction found (0xb5c31df8)!<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:tm:t_lookupOriginalT: REF_UNSAFE: after is 1<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:tm:t_lookupOriginalT: t_lookupOriginalT completed<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:core:parse_headers: flags=ffffffffffffffff<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:core:check_via_address: params X.136.171.132, 192.168.1.36, 0<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:sl:run_sl_callbacks: callback id 0 entered<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:siptrace:trace_sl_onreply_out: trace off...<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:tm:t_unref_cell: UNREF_UNSAFE: after is 0<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:core:destroy_avp_list: destroying list (nil)<br>
Jul&nbsp; 9 12:19:39 sippc /usr/sbin/opensips[32132]:
DBG:core:receive_msg: cleaning up<br><br>
<br>
At 12:26 AM 7/9/2009, you wrote:<br>
<blockquote type=cite class=cite cite="">2009/7/8 Gabriel Georgescu
&lt;gabrielgeo99@gmail.com&gt;:<br>
&gt; 1. the call arrives at the windows machine with the origination
IP<br>
&gt; changed to the opensips ip, which makes billing impossible on<br>
&gt; windows. In my scenario opensips should only forward/distribute
calls<br>
&gt; in the simplest way without altering origination ip.<br>
&gt;&nbsp;&nbsp;&nbsp; Is there any method to forward the origination IP
when doing load_balance?<br><br>
That's impossible, but you can do 2 things if you're billing by ip.
Either:<br>
- extract the original ip from the Via headers at the next hop, or<br>
- do something like append_hf(&quot;Orig-IP&quot;, &quot;$si&quot;); to
append the ip as a<br>
new header - the call may be a bit different - check the
documentation<br><br>
&gt; 2. a ringing call is not disconnected if the origination party hangs
up.<br>
&gt;&nbsp;&nbsp;&nbsp; I think it misses a treatement for BYE sent from
origination<br>
&gt; while call is in &quot;connecting&quot; state.<br>
&gt;&nbsp;&nbsp;&nbsp; Any clues how to correct this?<br><br>
Try adding record_route() on an INVITE packet - that way, the rest
of<br>
the dialog will be passed through your proxy too.</blockquote></body>
</html>