<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman,new york,times,serif;font-size:12pt"><div>Hi Bogdan,<br><br>Thanks for clarify the things.<br>:)<br></div><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><br><div style="font-family: arial,helvetica,sans-serif; font-size: 13px;"><font face="Tahoma" size="2"><hr size="1"><b><span style="font-weight: bold;">From:</span></b> Bogdan-Andrei Iancu &lt;bogdan@voice-system.ro&gt;<br><b><span style="font-weight: bold;">To:</span></b> OpenSIPS users mailling list &lt;users@lists.opensips.org&gt;<br><b><span style="font-weight: bold;">Sent:</span></b> Monday, August 9, 2010 13:10:14<br><b><span style="font-weight: bold;">Subject:</span></b> Re: [OpenSIPS-Users] Fw:  proxy_authorize("","subscriber") bug ??<br></font><br>Hi Pasan,<br><br>That's right - if you did t_newtran(), avoid using t_checktran()
 again!<br><br>Regards,<br>Bogdan<br><br>Pasan Meemaduma wrote:<br>&gt; Hi Bogdan,<br>&gt;<br>&gt; The problem was with my INVITE dispatch route.<br>&gt;<br>&gt; following is my complete script.<br>&gt;<br>&gt;<br>&gt;&nbsp; &nbsp;  if (!allow_trusted()) {<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;  t_newtran();<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;  proxy_authorize("","subscriber");<br>&gt;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;  $var(x) = $retcode;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;  xlog("L_INFO","------return code after auth is $var(x) \n");<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;  if ($var(x)&lt;0) {<br>&gt;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  if(!lookup("location")){<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  xlog("L_INFO","------challenging to $fU \n");<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  proxy_challenge("","0");<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  exit;<br>&gt;&nbsp; &nbsp;
 &nbsp; &nbsp; &nbsp; &nbsp;  }<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;  } else if (!check_from()) {<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  sl_send_reply("403", "Spoofed From-URI detected");<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  xlog("L_INFO","Spoofed From-URI detected ! from --&gt; <br>&gt; $fu -- IP $si PORT:$sp");<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  exit;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;  }<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;  if(is_present_hf("Proxy-Authorization")){<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  consume_credentials();# Changed on 2010-06-25<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;  }<br>&gt;&nbsp; &nbsp;  }<br>&gt;<br>&gt;&nbsp; &nbsp; &nbsp;  if (!lookup("location")) {<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  rewritehostport("192.168.102.5:5070");<br>&gt;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; }<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; append_hf("P-hint: usrloc
 applied\r\n");<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; route(1);<br>&gt;<br>&gt;<br>&gt; route[1] {<br>&gt;<br>&gt; #&nbsp; &nbsp; &nbsp; if(is_method("INVITE")) {<br>&gt; #&nbsp; &nbsp; &nbsp; &nbsp; if(t_check_trans())<br>&gt; #&nbsp; &nbsp; &nbsp; &nbsp;  {<br>&gt; #&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xlog("L_INFO", "Duplicate message $ruri M=$rm&nbsp; F=$fu&nbsp; <br>&gt; IP=$si \n");<br>&gt; #&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  exit;<br>&gt; #&nbsp; &nbsp; &nbsp;  }<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; # send it out now; use stateful forwarding as it works reliably<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; # even for UDP2TCP<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; # xlog("L_INFO", "Request leaving server - M=$rm RURI=$ru F=$fu <br>&gt; T=$tu IP=$si ID=$ci\n");<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; if (!t_relay()) {<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xlog("L_INFO", "(Rewriting) t_relay 1 - M=$rm RURI=$ru <br>&gt; F=$fu T=$tu IP=$si
 ID=$ci\n");<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sl_reply_error();<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; }<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; t_on_reply("1");<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; exit;<br>&gt; }<br>&gt;<br>&gt; The commented lines has cause opensips to drop the packet as a <br>&gt; duplicate one (Initial INVITE and subsequent retransmissions) . If I'm <br>&gt; using t_newtran(); in auth route how to I check the duplicate messages ?<br>&gt;<br>&gt; If I'm using t_newtran() don't I need to use t_check_trans() to check <br>&gt; for duplicates ?<br>&gt;<br>&gt; can I create transactions for other requests which by pass the auth <br>&gt; route as follow in route[1] ?<br>&gt;<br>&gt; route[1] {<br>&gt;<br>&gt;&nbsp; &nbsp; &nbsp;  if(is_method("INVITE")) {<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;  if(!t_check_trans())<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;  {<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
 t_newtran();<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  xlog("L_INFO", "creating transaction $ruri M=$rm&nbsp; F=$fu&nbsp; <br>&gt; IP=$si \n");<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; exit;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; }<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; # send it out now; use stateful forwarding as it works reliably<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; # even for UDP2TCP<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; # xlog("L_INFO", "Request leaving server - M=$rm RURI=$ru F=$fu <br>&gt; T=$tu IP=$si ID=$ci\n");<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; if (!t_relay()) {<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xlog("L_INFO", "(Rewriting) t_relay 1 - M=$rm RURI=$ru <br>&gt; F=$fu T=$tu IP=$si ID=$ci\n");<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sl_reply_error();<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; }<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; t_on_reply("1");<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; exit;<br>&gt;
 }<br>&gt;<br>&gt;<br>&gt; If I can clarify these things I can&nbsp; apply the changes in the <br>&gt; production server.<br>&gt;<br>&gt; Thanks<br>&gt;<br>&gt;<br>&gt; ------------------------------------------------------------------------<br>&gt; *From:* Bogdan-Andrei Iancu &lt;<a ymailto="mailto:bogdan@voice-system.ro" href="mailto:bogdan@voice-system.ro">bogdan@voice-system.ro</a>&gt;<br>&gt; *To:* OpenSIPS users mailling list &lt;<a ymailto="mailto:users@lists.opensips.org" href="mailto:users@lists.opensips.org">users@lists.opensips.org</a>&gt;<br>&gt; *Sent:* Wednesday, August 4, 2010 22:44:53<br>&gt; *Subject:* Re: [OpenSIPS-Users] Fw: proxy_authorize("","subscriber") <br>&gt; bug ??<br>&gt;<br>&gt; Hi Pasan,<br>&gt;<br>&gt; please enable full logging (set debug=6)&nbsp; and make a log capture for the<br>&gt; whole registration process - like first REGISTER, challenge, second<br>&gt; REGISTER...<br>&gt;<br>&gt; Because in the first set of logs, I
 see that -3 is returned, which is<br>&gt; "stale nonce" - see<br>&gt; <a href="http://www.opensips.org/html/docs/modules/1.6.x/auth_db.html#id228268" target="_blank">http://www.opensips.org/html/docs/modules/1.6.x/auth_db.html#id228268</a><br>&gt;<br>&gt; Regards,<br>&gt; Bogdan<br>&gt;<br>&gt; Pasan Meemaduma wrote:<br>&gt; &gt; Hi Bogdan,<br>&gt; &gt;<br>&gt; &gt; I had to setup a test opensips server to try your suggestion as I<br>&gt; &gt; can't do much testing on production server.<br>&gt; &gt;<br>&gt; &gt; When I have following in auth route opensips doesn't allow call being<br>&gt; &gt; routed properly<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;&nbsp; &nbsp; if (!allow_trusted()) {<br>&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; t_newtran();<br>&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; proxy_authorize("","subscriber");<br>&gt; &gt;<br>&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; $var(x) = $retcode;<br>&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; xlog("L_INFO","------return code
 after auth is $var(x) \n");<br>&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; if ($var(x)&lt;0) {<br>&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xlog("L_INFO","------var(x) &lt; 0 \n");<br>&gt; &gt;<br>&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(!lookup("location") ){<br>&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xlog("L_INFO","------challenging to $fU \n");<br>&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; proxy_challenge("","0");<br>&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; exit;<br>&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; } else if (!check_from()) {<br>&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sl_send_reply("403", "Spoofed From-URI detected");<br>&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xlog("L_INFO","Spoofed From-URI detected ! from --&gt;<br>&gt; &gt; $fu -- IP $si
 PORT:$sp");<br>&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; exit;<br>&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; }<br>&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; if(is_present_hf("Proxy-Authorization")){<br>&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; consume_credentials();# Changed on 2010-06-25<br>&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; }<br>&gt; &gt;&nbsp; &nbsp; }<br>&gt; &gt;<br>&gt; &gt; I get the following in the /var/log/messages<br>&gt; &gt;<br>&gt; &gt; ug&nbsp; 4 14:24:01 devserver /usr/sbin/opensips[12766]:<br>&gt; &gt; INFO:xlog:mod_init: initializing...<br>&gt; &gt; Aug&nbsp; 4 14:24:01 devserver /usr/sbin/opensips[12766]:<br>&gt; &gt; INFO:textops:hname_fixup: using hdr type (16) instead of<br>&gt; &gt; &lt;Proxy-Authorization&gt;<br>&gt; &gt; Aug&nbsp; 4 14:24:01 devserver /usr/sbin/opensips[12766]:<br>&gt; &gt; INFO:core:probe_max_receive_buffer: using a UDP receive buffer of 255 kb<br>&gt; &gt; Aug&nbsp; 4 14:24:10 devserver
 /usr/sbin/opensips[12768]: ------return code<br>&gt; &gt; after auth is -4<br>&gt; &gt; Aug&nbsp; 4 14:24:10 devserver /usr/sbin/opensips[12768]: ------var(x) &lt; 0<br>&gt; &gt; Aug&nbsp; 4 14:24:10 devserver /usr/sbin/opensips[12768]: ------challenging<br>&gt; &gt; to 1001<br>&gt; &gt; Aug&nbsp; 4 14:24:10 devserver /usr/sbin/opensips[12771]: ------return code<br>&gt; &gt; after auth is 1<br>&gt; &gt; Aug&nbsp; 4 14:24:18 devserver /usr/sbin/opensips[12771]: ------return code<br>&gt; &gt; after auth is 1<br>&gt; &gt; Aug&nbsp; 4 14:24:19 devserver /usr/sbin/opensips[12769]: ------return code<br>&gt; &gt; after auth is -4<br>&gt; &gt; Aug&nbsp; 4 14:24:19 devserver /usr/sbin/opensips[12769]: ------var(x) &lt; 0<br>&gt; &gt; Aug&nbsp; 4 14:24:26 devserver /usr/sbin/opensips[12771]: ------return code<br>&gt; &gt; after auth is 1<br>&gt; &gt; Aug&nbsp; 4 14:24:42 devserver /usr/sbin/opensips[12768]: ------return code<br>&gt; &gt; after auth is -3<br>&gt;
 &gt; Aug&nbsp; 4 14:24:42 devserver /usr/sbin/opensips[12768]: ------var(x) &lt; 0<br>&gt; &gt; Aug&nbsp; 4 14:24:42 devserver /usr/sbin/opensips[12768]: ------challenging<br>&gt; &gt; to 1001<br>&gt; &gt;<br>&gt; &gt; -------------------------------------------------<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; But if I try commenting the t_newtran It route the call successfully.<br>&gt; &gt;<br>&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # t_newtran();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;--- commented<br>&gt; &gt; <br>&gt; &gt;<br>&gt; &gt; Aug&nbsp; 4 14:23:23 devserver /usr/sbin/opensips[12710]:<br>&gt; &gt; INFO:textops:mod_init: initializing...<br>&gt; &gt; Aug&nbsp; 4 14:23:23 devserver /usr/sbin/opensips[12710]:<br>&gt; &gt; INFO:uac:mod_init: initializing...<br>&gt; &gt; Aug&nbsp; 4 14:23:23 devserver /usr/sbin/opensips[12710]:<br>&gt; &gt; INFO:xlog:mod_init: initializing...<br>&gt; &gt; Aug&nbsp; 4 14:23:23 devserver
 /usr/sbin/opensips[12710]:<br>&gt; &gt; INFO:textops:hname_fixup: using hdr type (16) instead of<br>&gt; &gt; &lt;Proxy-Authorization&gt;<br>&gt; &gt; Aug&nbsp; 4 14:23:23 devserver /usr/sbin/opensips[12710]:<br>&gt; &gt; INFO:core:probe_max_receive_buffer: using a UDP receive buffer of 255 kb<br>&gt; &gt; Aug&nbsp; 4 14:23:29 devserver /usr/sbin/opensips[12713]: ------return code<br>&gt; &gt; after auth is -4<br>&gt; &gt; Aug&nbsp; 4 14:23:29 devserver /usr/sbin/opensips[12713]: ------var(x) &lt; 0<br>&gt; &gt; Aug&nbsp; 4 14:23:29 devserver /usr/sbin/opensips[12713]: ------challenging<br>&gt; &gt; to 1001<br>&gt; &gt; Aug&nbsp; 4 14:23:29 devserver /usr/sbin/opensips[12715]: ------return code<br>&gt; &gt; after auth is 1<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; Looks like we can't t_newtran() like above. any clue ?<br>&gt; &gt;<br>&gt; &gt; Thanks<br>&gt; &gt; <br>&gt; &gt;<br>&gt; &gt;<br>&gt;<br>&gt;<br>&gt;
 ------------------------------------------------------------------------<br>&gt;<br>&gt; _______________________________________________<br>&gt; Users mailing list<br>&gt; <a ymailto="mailto:Users@lists.opensips.org" href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a><br>&gt; <a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>&gt;&nbsp;  <br><br><br>-- <br>Bogdan-Andrei Iancu<br>OpenSIPS Bootcamp<br>20 - 24 September 2010, Frankfurt, Germany<br>www.voice-system.ro<br><br><br>_______________________________________________<br>Users mailing list<br><a ymailto="mailto:Users@lists.opensips.org" href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a><br><a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br></div></div>
</div><br></body></html>