<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="https://reviewboard.asterisk.org/r/1597/">https://reviewboard.asterisk.org/r/1597/</a>
     </td>
    </tr>
   </table>
   <br />


<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('https://reviewboard.asterisk.org/media/rb/images/review_request_box_top_bg.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for Asterisk Developers.</div>
<div>By mjordan.</div>


<p style="color: grey;"><i>Updated Dec. 2, 2011, 3:40 p.m.</i></p>



<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Changes</h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Yup, this wasn&#39;t the right way to do this.

As it turned out, setting tohost to have the peername only &quot;worked&quot; because initreqprep used the fullcontact field to set the SIP header, which had already been populated to the full contact URI for the peer.  So that was mostly just getting lucky, but was certainly incorrect.

However, once the :port issue was identified by David, parsing the To URI in sip_msg_send just got uglier.  The correct approach, in my opinion, is to use what we already wrote via the parse_uri function to get the username / hostname out of the URI field (which is what its there for).  If a username is returned, we set the correct field in the sip_pvt structure (username), which resolves the original issue correctly.

Tested with:
sip:user (where user is a peer)
sip:user@hostname
sip:user@hostname:port
sip:hostname:port

All worked correctly.

As this was previously committed, the new diff is against the patch that was previously written.</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">When using the MessageSend application to send a SIP MESSAGE to a non-peer, chan_sip attempts to validate the hostname / IP Address.  In the process, it strips off the destination, and fails to add it back to the sip_pvt structure before transmission.  This patch attempts to handle valid URIs passed to chan_sip from the message core that contain either a peer to send to or a URI.  Acceptable forms from MessageSend take one of the following two forms:

sip:peer
sip:destination@hostname
sip:destination@ip_address

Note that more complex URIs (such as &quot;User&quot; &lt;sip: blah@blah&gt;) won&#39;t be accepted by the message core, as the message technology will assume that the user name is part of the message technology type.  That limitation is outside the scope of this issue.</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Tested with:

sip:destination@hostname
sip:destination@ip_address
sip:peer

All three were accepted by the MessageSend application and properly forwarded to their destinations / peers.</pre>
  </td>
 </tr>
</table>



<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Bugs: </b>


 <a href="https://issues.asterisk.org/jira/browse/ASTERISK-18903">ASTERISK-18903</a>


</div>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> (updated)</h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>/branches/10/channels/chan_sip.c <span style="color: grey">(346804)</span></li>

</ul>

<p><a href="https://reviewboard.asterisk.org/r/1597/diff/" style="margin-left: 3em;">View Diff</a></p>




  </td>
 </tr>
</table>




  </div>
 </body>
</html>