<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>If you just want the reply_route to read more easily for
collegues, then just make sure its documented and you have
comments where appropriate.<br>
Personally I think jumping to a route block form a reply block is
going to be more confusing then having a flowing script inside a
single onpely_route.<br>
<br>
is the use case requiring the UAC to receive a 181 instead of a
180?</p>
<p>regards,</p>
<p><br>
</p>
<p>Richard</p>
<div class="moz-cite-prefix">On 13/04/2026 13:42, Malte wrote:<br>
</div>
<blockquote type="cite"
cite="mid:b5e50783-4796-4ea8-84c4-6235e2d69feb@lard.at">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<p>I get what you say. I can map my custom logic into request
route blocks, as long as there is no function which requires
execution from a specific (non-request) route type. Therefore I
have to make sure that every function which requires to be
executed in a specific (non-request) route is still being called
in the respective section.</p>
<p>For example if I want to shorten my MAIN onreply_route by
moving a part of it to another block and referencing it from the
main block, I have to make sure that reply specific functions do
not migrate from the onreply route.</p>
<p>This could be done by adjust the logic so it only checks the
conditions for a operation using non route specific functions,
move that code to a new route block, refer to that route block
from the onreply route, wait for the new route block to finish
and return to the onreply route block and then calling the route
specific functions when a certain flag was set inside the
aforementioned new route block.</p>
<p>incoming reply</p>
<p>-> onreply_route[MAIN] </p>
<p>-> route[CUST_FUNCT] </p>
<p> - if t_check_status("180") && hdr(xyz) then
avp(180xyz) = 1; </p>
<p>-> back to onreply_route[MAIN] </p>
<p> - if avp(180xyz) then change_reply_status(181, "test");</p>
<p><br>
</p>
<p>My initial idea was to shorten my onreply_route to make it more
easily understandable by my colleagues. Although I like this
reinterpretation of the route block - how it’s used and how it
can be used - I think its hard to explain why some reply
operations are done in a request route and some not. Therefore I
for now just keep my block as long as it is, but keep the
possibilities in mind.</p>
<p><br>
</p>
<p>Thank you all for your suggestions!</p>
<p><br>
</p>
<div class="moz-cite-prefix">On 10/04/2026 16:12, Ben Newlin via
Users wrote:<br>
</div>
<blockquote type="cite"
cite="mid:PH7PR10MB7850087220F2174F14061C0A95592@PH7PR10MB7850.namprd10.prod.outlook.com">
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8">
<div
style="direction: ltr; font-family: Aptos, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
The solution proposed by Richard works and it is working in
your case, in the sense that the called route is being
executed.</div>
<div
style="direction: ltr; font-family: Aptos, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div
style="direction: ltr; font-family: Aptos, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
However, this method does not remove any conditions of
specific functions on which routes they can be called from,
and the called route is not a reply route it is a basic route.
So the error is valid.</div>
<div
style="direction: ltr; font-family: Aptos, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div
style="direction: ltr; font-family: Aptos, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
This mechanism can be used generally to break up processing in
large routes, but any functions which require execution from a
specific route type cannot be moved to the nested route. What
you need is something like this:</div>
<div
style="direction: ltr; font-family: Aptos, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div
style="direction: ltr; font-family: Aptos, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div
style="direction: ltr; font-family: monospace; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="background-color: rgb(255, 255, 255);">
route[reply_processing_1] {</span></div>
<div
style="direction: ltr; font-family: monospace; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="background-color: rgb(255, 255, 255);"> # do
general reply processing step 1</span></div>
<div
style="direction: ltr; font-family: monospace; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="background-color: rgb(255, 255, 255);"> }</span></div>
<div
style="direction: ltr; font-family: monospace; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="background-color: rgb(255, 255, 255);"><br>
</span></div>
<div style="direction: ltr; font-family: monospace;"><span
style="font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
r</span>oute[reply_processing_2] {</div>
<div
style="direction: ltr; font-family: monospace; color: rgb(0, 0, 0);">
# do general reply processing step 2</div>
<div
style="direction: ltr; font-family: monospace; color: rgb(0, 0, 0);"> }</div>
<div
style="direction: ltr; font-family: monospace; color: rgb(0, 0, 0);"><br>
</div>
<div
style="direction: ltr; font-family: monospace; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="background-color: rgb(255, 255, 255);">
onreply_route[MAIN] {</span></div>
<div style="direction: ltr; font-family: monospace;"><span
style="font-size: 16px; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
r</span><span
style="background-color: rgb(255, 255, 255);">oute(</span><span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">reply_processing_1</span><span
style="font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">);</span></div>
<div style="direction: ltr; font-family: monospace;"><span
style="background-color: rgb(255, 255, 255);"> </span></div>
<div style="direction: ltr; font-family: monospace;"><span
style="background-color: rgb(255, 255, 255);"> # Perform
reply_route specific processing here</span></div>
<div style="direction: ltr; font-family: monospace;"><span
style="background-color: rgb(255, 255, 255);"> </span><span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">change_reply_status(181,
"test</span><span
style="background-color: rgb(255, 255, 255);">”</span><span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">);</span></div>
<div style="direction: ltr; font-family: monospace;"><span
style="background-color: rgb(255, 255, 255);"><br>
</span><span
style="font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
route(reply_processing_2);</span></div>
<div
style="direction: ltr; font-family: monospace; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="background-color: rgb(255, 255, 255);"> }</span></div>
<div
style="direction: ltr; font-family: Aptos, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div id="ms-outlook-mobile-signature"
style="color: inherit; background-color: inherit;">
<p class="MsoNormal"
style="margin: 0in; font-family: Aptos, sans-serif; font-size: 11pt;"> <span
style="color: black;">Ben Newlin</span></p>
<p class="MsoNormal"
style="margin: 0in; font-family: Aptos, sans-serif; font-size: 11pt;"> <span
style="color: black;"><br>
</span></p>
</div>
<div id="mail-editor-reference-message-container"
style="color: inherit; background-color: inherit;">
<div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr;"> </div>
<div class="ms-outlook-mobile-reference-message skipProofing"
style="text-align: left; padding: 3pt 0in 0in; border-width: 1pt medium medium; border-style: solid none none; border-color: rgb(181, 196, 223) currentcolor currentcolor; font-family: Aptos; font-size: 12pt; color: black;">
<b>From: </b>Users <a class="moz-txt-link-rfc2396E"
href="mailto:users-bounces@lists.opensips.org"
moz-do-not-send="true"><users-bounces@lists.opensips.org></a>
on behalf of Malte <a class="moz-txt-link-rfc2396E"
href="mailto:spce@lard.at" moz-do-not-send="true"><spce@lard.at></a><br>
<b>Date: </b>Friday, April 10, 2026 at 5:33 AM<br>
<b>To: </b><a
class="moz-txt-link-abbreviated moz-txt-link-freetext"
href="mailto:users@lists.opensips.org"
moz-do-not-send="true">users@lists.opensips.org</a> <a
class="moz-txt-link-rfc2396E"
href="mailto:users@lists.opensips.org"
moz-do-not-send="true"><users@lists.opensips.org></a><br>
<b>Subject: </b>Re: [OpenSIPS-Users] Nested reply_routes</div>
<div
style="background-color: rgb(255, 255, 255); height: auto; display: block;">
<div class="mc-ip-hide"
style="direction: ltr; text-align: left; font-family: Aptos, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<hr style="direction: ltr; text-align: left;"> </div>
<p class="ms-outlook-mobile-reference-message skipProofing">Hi,</p>
<p class="ms-outlook-mobile-reference-message skipProofing">this
approach unfortunately doesn't work. Does somebody else know
of a solution to neaten up big reply routes?</p>
<p class="ms-outlook-mobile-reference-message skipProofing">My
code and the following error:</p>
<div class="ms-outlook-mobile-reference-message skipProofing"
style="margin: 0em 40px; font-family: monospace;"> <span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 367
route[test] {</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 368
xlog("now in test route");</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 369
change_reply_status(181, "test");</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 370
}</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 371</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
372 onreply_route[MAIN] {</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 373
# For fr_inv_timeout handling</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 374
if (t_check_status("180")) {</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 375
$var(180_in_trans)=1;</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 376
route(test);</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 377
xlog("back to reply route");</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 378
}</span><br>
<br>
</div>
<div class="ms-outlook-mobile-reference-message skipProofing"
style="margin: 0em 40px; font-family: monospace; color: rgb(255, 84, 84);">
<span style="background-color: rgb(255, 255, 255);"><b>CRITICAL:core:yyerror:
parse error in /etc/opensips/opensips.cfg:369:29-30:
Command <change_reply_status> cannot be used in
the block</b></span></div>
<p class="ms-outlook-mobile-reference-message skipProofing">Doing
it in a reply route:</p>
<div class="ms-outlook-mobile-reference-message skipProofing"
style="margin: 0em 40px; font-family: monospace;"> <span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 367
onreply_route[test] {</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 368
xlog("now in test route");</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 369
change_reply_status(181, "test");</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 370
}</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 371</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 372
onreply_route[MAIN] {</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 373
# For fr_inv_timeout handling</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 374
if (t_check_status("180")) {</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 375
$var(180_in_trans)=1;</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 376
t_on_reply("test");</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 377
xlog("back to MAIN reply route");</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 378
}</span><br>
<br>
</div>
<div class="ms-outlook-mobile-reference-message skipProofing"
style="margin: 0em 40px; font-family: monospace; color: rgb(255, 84, 84);">
<span style="background-color: rgb(255, 255, 255);"><b>ERROR:sipmsgops:change_reply_status_f:
the class of provisional or positive final replies
cannot be changed</b></span></div>
<div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr;"> <br>
</div>
<p class="ms-outlook-mobile-reference-message skipProofing">Jump
to secondary reply route via proxy route:</p>
<div class="ms-outlook-mobile-reference-message skipProofing"
style="margin: 0em 40px; font-family: monospace;"> <span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 367
route[test] {</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 368
xlog("now in test route");</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 369
t_on_reply("test");</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 370
}</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 371</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 372
onreply_route[test] {</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 373
xlog("now in test reply route");</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 374
change_reply_status(181, "test");</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 375
}</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 376</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 377
onreply_route[MAIN] {</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 378
# For fr_inv_timeout handling</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 379
if (t_check_status("180")) {</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 380
$var(180_in_trans)=1;</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 381
route(test);</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 382
xlog("back to MAIN reply route");</span><br>
<span
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"> 383
}</span><br>
<br>
</div>
<div class="ms-outlook-mobile-reference-message skipProofing"
style="margin: 0em 40px; font-family: monospace; color: rgb(255, 84, 84);">
<span style="background-color: rgb(255, 255, 255);"><b>ERROR:sipmsgops:change_reply_status_f:
the class of provisional or positive final replies
cannot be changed</b></span></div>
<p class="ms-outlook-mobile-reference-message skipProofing">I
must note that change_reply_status works flawlessly when
executing directly in MAIN reply route.</p>
<p class="ms-outlook-mobile-reference-message skipProofing"><br>
</p>
<p class="ms-outlook-mobile-reference-message skipProofing">Thanks,</p>
<p class="ms-outlook-mobile-reference-message skipProofing">Malte<span
style="font-family: monospace;"> </span></p>
</div>
<br>
<fieldset class="moz-mime-attachment-header"></fieldset>
<pre wrap="" class="moz-quote-pre">_______________________________________________
Users mailing list
<a class="moz-txt-link-abbreviated moz-txt-link-freetext"
href="mailto:Users@lists.opensips.org" moz-do-not-send="true">Users@lists.opensips.org</a>
<a class="moz-txt-link-freetext"
href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users"
moz-do-not-send="true">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a>
</pre>
</blockquote>
<br>
<fieldset class="moz-mime-attachment-header"></fieldset>
<pre wrap="" class="moz-quote-pre">_______________________________________________
Users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a>
<a class="moz-txt-link-freetext" href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a>
</pre>
</blockquote>
</body>
</html>