<br>Being normative, there's also an RFC relating to the provisional replies to non-INVITE transactions, RFC 4320, which does allow sending 100 provisional responses, and even recommend&nbsp;it, under some circumstances. <br><br>
Just my 2 cents.<br><br>Samuel.<br><br><div><span class="gmail_quote">2006/7/20, Evan Borgström &lt;<a href="mailto:evan.borgstrom@ca.mci.com">evan.borgstrom@ca.mci.com</a>&gt;:</span><blockquote class="gmail_quote" style="margin-top: 0; margin-right: 0; margin-bottom: 0; margin-left: 0; margin-left: 0.80ex; border-left-color: #cccccc; border-left-width: 1px; border-left-style: solid; padding-left: 1ex">
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Yep, section 21.1 says that. It's a perfect example of the grey area<br>the RFC creates and why most of us send provisional responses for<br>most/all messages. :)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Just remember that if you're going to sl_send_reply with a 100 for all
<br>messages you should first check that method != ACK as ACK's MUST NOT<br>generate a provisional message.<br><br>-Evan<br><br>Klaus Darilion wrote:<br>&gt; On Thu, July 20, 2006 20:25, Evan Borgström said:<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Well, if we're going get technical about conforming to the RFC then
<br>&gt;&gt; sending a 100 message for anything other than an INVITE is a &quot;SHOULD NOT&quot;.<br>&gt;<br>&gt; AFAIK somewhere in the RFC they say you should send a provisional response<br>&gt; if the processing of the requests (till we can send a final response) will
<br>&gt; take more the 200 ms. Thus, sending 100 for non-INVITE is IMO fine.<br>&gt; Especially for REGISTER which is handled stateless in openser.<br>&gt;<br>&gt; regards<br>&gt; klaus<br>&gt;<br>&gt; PS: If you still want to know how to do it without 2x100:
<br>&gt; Use t_newtran and t_forward_nonack.<br>&gt; <a href="http://www.openser.org/docs/modules/1.1.x/tm.html#TFORWARDNONACK">http://www.openser.org/docs/modules/1.1.x/tm.html#TFORWARDNONACK</a><br>&gt;<br>&gt;&gt; <a href="http://8.2.6.1">
8.2.6.1</a> Sending a Provisional Response<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;One largely non-method-specific guideline for the generation of<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;responses is that UASs SHOULD NOT issue a provisional response for a<br>
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;non-INVITE request.&nbsp;&nbsp;Rather, UASs SHOULD generate a final response to<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;a non-INVITE request as soon as possible.<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;However, to be RFC strict multiple responses to INVITE's are indeed
<br>&gt;&gt; allowed. Check section 13.1<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;Before sending a final response, the UAS can also send provisional<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;responses (1xx) to advise the UAC of progress in contacting the
<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;called user.<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;After possibly receiving one or more provisional responses, the UAC<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;will get one or more 2xx responses or one non-2xx final response.<br>&gt;&gt;<br>&gt;&gt;
<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;All of my real world practices show that sending provisional messages<br>&gt;&gt; for non INVITE messages is a big help, especially when you get into<br>&gt;&gt; presence and IM related stuff. All too often clients like eyeBeam
<br>&gt;&gt; re-transmit SUBSCRIBE's, PUBLISH's and MESSAGE's because of latency<br>&gt;&gt; within the network if you don't send a 100 trying upon receipt. So for<br>&gt;&gt; me even if it's a SHOULD NOT it still makes my life easier than dealing
<br>&gt;&gt; with questions about receiving IM's twice...<br>&gt;&gt;<br>&gt;&gt; -Evan<br>&gt;&gt;<br>&gt;&gt; Weiter Leiter wrote:<br>&gt;&gt;&gt; Hi,<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; Evan Borgström wrote:<br>&gt;&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;Why would you want to prevent it? 1XX class messages are all
<br>&gt;&gt;&gt;&gt; provisional, do not solicit a response and are never forwarded upstream<br>&gt;&gt;&gt;&gt; so only the previous hop will get multiple 100 messages which will<br>&gt;&gt;&gt;&gt; effectively limit any chance of the upstream hop re-transmitting the
<br>&gt;&gt;&gt;&gt; original message.<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;Take the following example; A user sends their initial INVITE, you<br>&gt;&gt;&gt;&gt; sl_send_reply 100 and then check your proxy_authorize which returns a
<br>&gt;&gt;&gt;&gt; 407 and challenges the user. The user sends the second invite with<br>&gt;&gt;&gt;&gt; credentials you sl_send_reply 100 and then check your proxy_authorize<br>&gt;&gt;&gt;&gt; again and say, for instance, your DB server is now under heavy load (a
<br>&gt;&gt;&gt;&gt; cronjob runs, etc) and takes longer then 1s to respond, since you<br>&gt;&gt;&gt;&gt; haven't called t_relay yet which generates the second 100 message your<br>&gt;&gt;&gt;&gt; initial 100 message would still stop the user from re-transmitting the
<br>&gt;&gt;&gt;&gt; INVITE while proxy_authorize is waiting for the DB.<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt; The question is not whether sl replying is good or not - it for sure is.<br>&gt;&gt;&gt; The question is how to be 100% conformant.
<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; However, imho, this misalignment is completely negligible, as if you<br>&gt;&gt;&gt; make abstraction of the possible different reason phrase, the two<br>&gt;&gt;&gt; messages will be identical - this duplicating can be done by some lower
<br>&gt;&gt;&gt; layered network entity, so, from the uac's point of view, the 2 100s<br>&gt;&gt;&gt; should not be a problem.<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; However, adding a config for tm not to take care of the 100 might be the
<br>&gt;&gt;&gt; cherry on the cake.<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; WL.<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; ps. Imo, this is one of&nbsp;&nbsp;ser/openser's problems: one script function can<br>&gt;&gt;&gt; actually take some more (more or less documented) &quot;atomic&quot; actions than
<br>&gt;&gt;&gt; its name states (even in cases where otherwise could be done, without a<br>&gt;&gt;&gt; performance or complexity impact), which, from a strictly programming<br>&gt;&gt;&gt; point of view is completely wrong.
<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; -Evan<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; T.R. Missner wrote:<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt; You have the question exactly correct<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt; Now - how can I do this?
<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt; -----Original Message-----<br>&gt;&gt;&gt;&gt;&gt; From: <a href="mailto:users-bounces@openser.org">users-bounces@openser.org</a> [mailto:<a href="mailto:users-bounces@openser.org">
users-bounces@openser.org</a>] On<br>&gt;&gt;&gt;&gt;&gt; Behalf Of Weiter Leiter<br>&gt;&gt;&gt;&gt;&gt; Sent: Thursday, July 20, 2006 1:31 PM<br>&gt;&gt;&gt;&gt;&gt; To: Norman Brandinger<br>&gt;&gt;&gt;&gt;&gt; Cc: users
<br>&gt;&gt;&gt;&gt;&gt; Subject: Re: [Users] provisional response management ( 100 Trying )<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt; Hi,<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt; Norman Brandinger wrote:<br>
&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt; At the top of our ROUTE_INVITE, we have:<br>&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt; #---------------------------------------------------------------------
<br>&gt;&gt;&gt;&gt;&gt;&gt; -&nbsp;&nbsp;# Let the UA know we are working on their request -&nbsp;&nbsp;# they<br>&gt;&gt;&gt;&gt;&gt;&gt; shouldn't send retransmissions<br>&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt; #---------------------------------------------------------------------
<br>&gt;&gt;&gt;&gt;&gt;&gt; -<br>&gt;&gt;&gt;&gt;&gt;&gt;&nbsp;&nbsp;sl_send_reply(&quot;100&quot;, &quot;Trying&quot;);<br>&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt; This seems to work and it was adapted from code used during REGISTER
<br>&gt;&gt;&gt;&gt;&gt;&gt; processing.<br>&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt; If I got Missner's problem right, he wants to prevent sending multiple<br>&gt;&gt;&gt;&gt;&gt; 100 replies back to the uac.<br>&gt;&gt;&gt;&gt;&gt;
<br>&gt;&gt;&gt;&gt;&gt; The rfc says - Page 109, paragraph 5 - that &quot;MUST be forwarded<br>&gt;&gt;&gt;&gt;&gt; immediately [...] Any provisional response other than 100 (Trying)&quot;<br>&gt;&gt;&gt;&gt;&gt; and<br>
&gt;&gt;&gt;&gt;&gt; later, in same paragraph that &quot;A stateful proxy MUST NOT immediately<br>&gt;&gt;&gt;&gt;&gt; forward any other&nbsp;&nbsp;[= 101&lt;=x&lt;=299] responses&quot;. Now, it's true that in<br>&gt;&gt;&gt;&gt;&gt; this case the proxy would not literally forward a 100 reply back, but
<br>&gt;&gt;&gt;&gt;&gt; the uac would still see 2x100.<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt; Now, if he does SL reply at the beginning, the tm module will, again,<br>&gt;&gt;&gt;&gt;&gt; send a 100 on his own, before relaying.
<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt; The question is how to prevent this, if I got it right...<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt; WL.<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;
<br>&gt;&gt;&gt;&gt;&gt;&gt; Regards,<br>&gt;&gt;&gt;&gt;&gt;&gt; Norm<br>&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt; Klaus Darilion wrote:<br>&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt; AFAI remember there was function t_relay_no_ack or similar. Take a
<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt; lookat the README from TM module.<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt; regards<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt; klaus<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt; 
T.R. Missner wrote:<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Hello,<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; I want to send an immediate 100 trying message when an Invite is
<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; received, then I do a DB lookup, then I rewrite the RURI and<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; forward<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; the message using t_relay.
<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Since I have already sent a 100 trying manually I'd like to short<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; circuit the 100 t_relay sends so multiple 100 trying messages
<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; aren't<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; sent.<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Does anyone know of a way to do this?
<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Thanks,<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;
<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; T.R.<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;
<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; --------------------------------------------------------------------<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ----<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; _______________________________________________<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Users mailing list<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href="mailto:Users@openser.org">Users@openser.org
</a><br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href="http://openser.org/cgi-bin/mailman/listinfo/users">http://openser.org/cgi-bin/mailman/listinfo/users</a><br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt; _______________________________________________
<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt; Users mailing list<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href="mailto:Users@openser.org">Users@openser.org</a><br>&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href="http://openser.org/cgi-bin/mailman/listinfo/users">
http://openser.org/cgi-bin/mailman/listinfo/users</a><br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt; _______________________________________________
<br>&gt;&gt;&gt;&gt;&gt;&gt; Users mailing list<br>&gt;&gt;&gt;&gt;&gt;&gt; <a href="mailto:Users@openser.org">Users@openser.org</a><br>&gt;&gt;&gt;&gt;&gt;&gt; <a href="http://openser.org/cgi-bin/mailman/listinfo/users">
http://openser.org/cgi-bin/mailman/listinfo/users</a><br>&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt; _______________________________________________<br>&gt;&gt;&gt;&gt;&gt; Users mailing list
<br>&gt;&gt;&gt;&gt;&gt; <a href="mailto:Users@openser.org">Users@openser.org</a><br>&gt;&gt;&gt;&gt;&gt; <a href="http://openser.org/cgi-bin/mailman/listinfo/users">http://openser.org/cgi-bin/mailman/listinfo/users</a><br>
&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt; _______________________________________________<br>&gt;&gt;&gt;&gt;&gt; Users mailing list<br>&gt;&gt;&gt;&gt;&gt; <a href="mailto:Users@openser.org">Users@openser.org</a><br>&gt;&gt;&gt;&gt;&gt; 
<a href="http://openser.org/cgi-bin/mailman/listinfo/users">http://openser.org/cgi-bin/mailman/listinfo/users</a><br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; _______________________________________________<br>&gt;&gt;&gt;&gt; Users mailing list
<br>&gt;&gt;&gt;&gt; <a href="mailto:Users@openser.org">Users@openser.org</a><br>&gt;&gt;&gt;&gt; <a href="http://openser.org/cgi-bin/mailman/listinfo/users">http://openser.org/cgi-bin/mailman/listinfo/users</a><br>&gt;&gt;&gt;&gt;
<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; _______________________________________________<br>&gt;&gt; Users mailing list<br>&gt;&gt; <a href="mailto:Users@openser.org">Users@openser.org</a><br>&gt;&gt; <a href="http://openser.org/cgi-bin/mailman/listinfo/users">
http://openser.org/cgi-bin/mailman/listinfo/users</a><br>&gt;&gt;<br>&gt;<br>&gt;<br><br><br>_______________________________________________<br>Users mailing list<br><a href="mailto:Users@openser.org">Users@openser.org</a>
<br><a href="http://openser.org/cgi-bin/mailman/listinfo/users">http://openser.org/cgi-bin/mailman/listinfo/users</a><br></blockquote></div><br>