<p>It can be merged, but the retrieval of current r-uri has to be changed. I don't think it is wise to use config variables names in the C code. I refer to the snippet:</p>

<pre><code> +  str src_uri = str_init("$ru");
...
 +  if (pv_eval_str(msg, &ruri, &src_uri) < 0) {
 +      LM_ERR("Failed to get $ru value fallback to parse msg\n");
 +      ruri.s = REQ_LINE(msg).uri.s;
 +      ruri.len = REQ_LINE(msg).uri.len;
 +  }
</code></pre>

<p>It should be as simple as:</p>

<pre><code>if(parse_sip_msg_uri(msg)<0) { /* error handling */ }

if (msg->new_uri.s!=NULL) {
  ruri = msg->new_uri;
} else {
   ruri = REQ_LINE(msg).uri;
}

</code></pre>

<p>The name of r-uri variable (<strong>$ru</strong>) is set by pv module, I don't think sca (or other module) have to rely on that being forever. Also, it requires parsing the name and evaluation. In cases when there is a lot of duplicated code, better export the C function from pv module and make that a dependency, otherwise this approach can hide unpredictible behaviour in long term, without getting any errors at compilation or linking.</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/kamailio/kamailio/pull/778#issuecomment-246996301">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AF36ZUOi9TpcbYrK0mFplmIFOr5dNpF5ks5qp-eSgaJpZM4J7qaU">mute the thread</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/AF36ZRB6nwjUIwnPl3mI9Uy8aNb-9_fcks5qp-eSgaJpZM4J7qaU.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
  <link itemprop="url" href="https://github.com/kamailio/kamailio/pull/778#issuecomment-246996301"></link>
  <meta itemprop="name" content="View Pull Request"></meta>
</div>
<meta itemprop="description" content="View this Pull Request on GitHub"></meta>
</div>

<script type="application/json" data-scope="inboxmarkup">{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/kamailio/kamailio","title":"kamailio/kamailio","subtitle":"GitHub repository","main_image_url":"https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png","avatar_image_url":"https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png","action":{"name":"Open in GitHub","url":"https://github.com/kamailio/kamailio"}},"updates":{"snippets":[{"icon":"PERSON","message":"@miconda in #778: It can be merged, but the retrieval of current r-uri has to be changed. I don't think it is wise to use config variables names in the C code. I refer to the snippet:\r\n\r\n```\r\n +\tstr src_uri = str_init(\"$ru\");\r\n...\r\n +\tif (pv_eval_str(msg, \u0026ruri, \u0026src_uri) \u003c 0) {\r\n +\t\tLM_ERR(\"Failed to get $ru value fallback to parse msg\\n\");\r\n +\t\truri.s = REQ_LINE(msg).uri.s;\r\n +\t\truri.len = REQ_LINE(msg).uri.len;\r\n +\t}\r\n```\r\n\r\nIt should be as simple as:\r\n\r\n```\r\nif(parse_sip_msg_uri(msg)\u003c0) { /* error handling */ }\r\n\r\nif (msg-\u003enew_uri.s!=NULL) {\r\n  ruri = msg-\u003enew_uri;\r\n} else {\r\n   ruri = REQ_LINE(msg).uri;\r\n}\r\n\r\n```\r\n\r\nThe name of r-uri variable (**$ru**) is set by pv module, I don't think sca (or other module) have to rely on that being forever. Also, it requires parsing the name and evaluation. In cases when there is a lot of duplicated code, better export the C function from pv module and make that a dependency, otherwise this approach can hide unpredictible behaviour in long term, without getting any errors at compilation or linking."}],"action":{"name":"View Pull Request","url":"https://github.com/kamailio/kamailio/pull/778#issuecomment-246996301"}}}</script>