Kamailio-开源SIP软交换平台

中国第一个专注Kamailio SIP 软交换技术分享平台

用户工具

站点工具


mangler_sip_message_mangling_functions_from-ser

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
mangler_sip_message_mangling_functions_from-ser [2017/09/11 15:02]
james_zhu
mangler_sip_message_mangling_functions_from-ser [2017/09/11 15:02] (当前版本)
james_zhu
行 1: 行 1:
-<html xmlns="​http://​www.w3.org/​1999/​xhtml">​ +====== The Mangler Module - SDP mangling ====== 
-  <​head>​ + 
-    <meta http-equiv="​Content-Type"​ content="​text/​html;​ charset=UTF-8" /> +==== Gabriel ​Vasile ==== 
-    <​title>​The Mangler Module - SDP mangling</​title>​ + 
-    <link rel="​stylesheet"​ type="​text/​css"​ href="/​css/​sr-doc.css"​ /> +FhG FOKUS\\  
-    <meta name="​generator"​ content="​DocBook XSL Stylesheets V1.78.1"​ /> + 
-    <link rel="​home"​ href="#​mangler"​ title="​The Mangler Module - SDP mangling" /> +Copyright © 2003 FhG FOKUS 
-    <link rel="​next"​ href="#​idp22189900"​ title="​Chapter 1. Admin Guide" /> + 
-  </​head>​ +---- 
-  <​body>​ + 
-    <div class="​book">​ +**Table of Contents** 
-      <div class="​titlepage">​ + 
-        <​div>​ +  * **1. Admin Guide**  
-          <​div>​ +    * **1. Overview**  
-            <h1 class="​title"><​a id="​mangler"></​a>​The Mangler Module - SDP mangling</​h1>​ +    * **2. Parameters**  
-          </​div>​ +      * **2.1. contact_flds_separator (string)**  
-          <​div>​ +    * **3. Functions**  
-            <div class="​authorgroup">​ +      * **3.1. sdp_mangle_ip(pattern,​ newip)**  
-              <div class="​author">​ +      * **3.2. sdp_mangle_port(offset)**  
-                <h3 class="​author"><​span class="​firstname">​Gabriel</​span>​ <span class="​surname">​Vasile</​span></​h3>​ +      * **3.3. encode_contact(encoding_prefix)**  
-                <div class="​affiliation">​ +      * **3.4. decode_contact()**  
-                  <​span class="​orgname">​FhG FOKUS<br /></​span>​ +      * **3.5. decode_contact_header()**  
-                </​div>​ + 
-              </​div>​ +**List of Examples** 
-            </​div>​ + 
-          </​div>​ +  * **1.1. Set db_url parameter**  
-          <​div>​ +  * **1.2. sdp_mangle_ip usage**  
-            <p class="​copyright">​Copyright © 2003 FhG FOKUS</p> +  * **1.3. sdp_mangle_port usage**  
-          </​div>​ +  * **1.4. encode_contact usage**  
-        </​div>​ +  * **1.5. decode_contact usage**  
-        <​hr /> +  * **1.6. decode_contact_header usage**  
-      </​div>​ + 
-      <div class="​toc">​ +====== Chapter 1. Admin Guide ====== 
-        <p> + 
-          <​strong>​Table of Contents</​strong>​ +**Table of Contents** 
-        </​p>​ + 
-        <​dl class="​toc">​ +  * **1. Overview**  
-          <​dt>​ +  * **2. Parameters**  
-            <span class="​chapter">​ +    * **2.1. contact_flds_separator (string)**  
-              <a href="#​idp22189900">​1. Admin Guide</a> +  * **3. Functions**  
-            </​span>​ +    * **3.1. sdp_mangle_ip(pattern,​ newip)**  
-          </​dt>​ +    * **3.2. sdp_mangle_port(offset)**  
-          <​dd>​ +    * **3.3. encode_contact(encoding_prefix)**  
-            <​dl>​ +    * **3.4. decode_contact()**  
-              <​dt>​ +    * **3.5. decode_contact_header()**  
-                <span class="​section">​ + 
-                  <a href="#​mangler.overview">​1. Overview</a> +====1. Overview ​===== 
-                </​span>​ + 
-              </​dt>​ +This is a module to help with SDP mangling - changing data in the SDP. 
-              <​dt>​ + 
-                <span class="​section">​ +====2. Parameters ===== 
-                  <a href="#​mangler.parameters">​2. Parameters</a> + 
-                </​span>​ +==== 2.1. contact_flds_separator (string) ​==== 
-              </​dt>​ + 
-              <​dd>​ +First char of this parameter is used as a separator for encoding/​decoding Contact headers. If you set this parameter to "​-",​ then an encoded URI will look like "​sip:​user-password-ip-port-protocol@PublicIP"​ 
-                <​dl>​ + 
-                  <​dt>​ +===Warning ​==== 
-                    <span class="​section">​ + 
-                      <a href="#​mangler.p.contact_flds_separator">​2.1. <code class="​varname">​contact_flds_separator</​code> ​(string)</a> +The first character of this field must be set to a value which is not used inside username, password or other fields of contact.Otherwise it is possible for the decoding step to fail/​produce wrong results. 
-                    </​span>​ + 
-                  </​dt>​ +Default value is "​*"​. 
-                </​dl>​ + 
-              </​dd>​ +**Example 1.1. Set ''​db_url'' ​parameter** 
-              <​dt>​ + 
-                <span class="​section">​ +<code
-                  <a href="#​mangler.functions">​3. Functions</a> +...
-                </​span>​ +
-              </​dt>​ +
-              <​dd>​ +
-                <​dl>​ +
-                  <​dt>​ +
-                    <span class="​section">​ +
-                      <a href="#​mangler.f.sdp_mangle_ip">​3.1.  +
-     <code class="​function">​sdp_mangle_ip(pattern,​ newip)</​code>​ +
- </​a>​ +
-                    </​span>​ +
-                  </​dt>​ +
-                  <​dt>​ +
-                    <span class="​section">​ +
-                      <a href="#​mangler.f.sdp_mangle_port">​3.2.  +
-     <code class="​function">​sdp_mangle_port(offset)</​code>​ +
- </​a>​ +
-                    </​span>​ +
-                  </​dt>​ +
-                  <​dt>​ +
-                    <span class="​section">​ +
-                      <a href="#​mangler.f.encode_contact">​3.3.  +
-     <code class="​function">​encode_contact(encoding_prefix)</​code>​ +
- </​a>​ +
-                    </​span>​ +
-                  </​dt>​ +
-                  <​dt>​ +
-                    <span class="​section">​ +
-                      <a href="#​mangler.f.decode_contact">​3.4.  +
-     <code class="​function">​decode_contact()</​code>​ +
- </​a>​ +
-                    </​span>​ +
-                  </​dt>​ +
-                  <​dt>​ +
-                    <span class="​section">​ +
-                      <a href="#​mangler.f.decode_contact_header">​3.5.  +
-     <code class="​function">​decode_contact_header()</​code>​ +
- </a> +
-                    </​span>​ +
-                  </​dt>​ +
-                </​dl>​ +
-              </​dd>​ +
-            </​dl>​ +
-          </​dd>​ +
-        </​dl>​ +
-      </​div>​ +
-      <div class="​list-of-examples">​ +
-        <p> +
-          <​strong>​List of Examples</​strong>​ +
-        </​p>​ +
-        <​dl>​ +
-          <dt>1.1. <a href="#​idp28503468">​Set <code class="​varname">​db_url</​code> ​parameter</​a></​dt>​ +
-          <​dt>​1.2. <a href="#​idp28905132"><​code class="​function">​sdp_mangle_ip</​code> ​usage</​a></​dt>​ +
-          <​dt>​1.3. <a href="#​idp27915636"><​code class="​function">​sdp_mangle_port</​code> ​usage</​a></​dt>​ +
-          <​dt>​1.4. <a href="#​idp27919796"><​code class="​function">​encode_contact</​code> ​usage</​a></​dt>​ +
-          <​dt>​1.5. <a href="#​idp29116132"><​code class="​function">​decode_contact</​code> ​usage</​a></​dt>​ +
-          <​dt>​1.6. <a href="#​idp29118996"><​code class="​function">​decode_contact_header</​code> ​usage</​a></​dt>​ +
-        </​dl>​ +
-      </​div>​ +
-      <div class="​chapter">​ +
-        <div class="​titlepage">​ +
-          <​div>​ +
-            <​div>​ +
-              <h1 class="​title"><​a id="​idp22189900"></​a>​Chapter 1. Admin Guide</​h1>​ +
-            </​div>​ +
-          </​div>​ +
-        </​div>​ +
-        <div class="​toc">​ +
-          <​p>​ +
-            <​strong>​Table of Contents</​strong>​ +
-          </​p>​ +
-          <​dl class="​toc">​ +
-            <​dt>​ +
-              <span class="​section">​ +
-                <a href="#​mangler.overview">​1. Overview</a> +
-              </​span>​ +
-            </​dt>​ +
-            <​dt>​ +
-              <span class="​section">​ +
-                <a href="#​mangler.parameters">​2. Parameters</a> +
-              </​span>​ +
-            </​dt>​ +
-            <​dd>​ +
-              <​dl>​ +
-                <​dt>​ +
-                  <span class="​section">​ +
-                    <a href="#​mangler.p.contact_flds_separator">​2.1. <code class="​varname">​contact_flds_separator</​code> ​(string)</a> +
-                  </​span>​ +
-                </​dt>​ +
-              </​dl>​ +
-            </​dd>​ +
-            <​dt>​ +
-              <span class="​section">​ +
-                <a href="#​mangler.functions">​3. Functions</a> +
-              </​span>​ +
-            </​dt>​ +
-            <​dd>​ +
-              <​dl>​ +
-                <​dt>​ +
-                  <span class="​section">​ +
-                    <a href="#​mangler.f.sdp_mangle_ip">​3.1.  +
-     <code class="​function">​sdp_mangle_ip(pattern,​ newip)</​code>​ +
- </​a>​ +
-                  </​span>​ +
-                </​dt>​ +
-                <​dt>​ +
-                  <span class="​section">​ +
-                    <a href="#​mangler.f.sdp_mangle_port">​3.2.  +
-     <code class="​function">​sdp_mangle_port(offset)</​code>​ +
- </​a>​ +
-                  </​span>​ +
-                </​dt>​ +
-                <​dt>​ +
-                  <span class="​section">​ +
-                    <a href="#​mangler.f.encode_contact">​3.3.  +
-     <code class="​function">​encode_contact(encoding_prefix)</​code>​ +
- </​a>​ +
-                  </​span>​ +
-                </​dt>​ +
-                <​dt>​ +
-                  <span class="​section">​ +
-                    <a href="#​mangler.f.decode_contact">​3.4.  +
-     <code class="​function">​decode_contact()</​code>​ +
- </​a>​ +
-                  </​span>​ +
-                </​dt>​ +
-                <​dt>​ +
-                  <span class="​section">​ +
-                    <a href="#​mangler.f.decode_contact_header">​3.5.  +
-     <code class="​function">​decode_contact_header()</​code>​ +
- </a> +
-                  </​span>​ +
-                </​dt>​ +
-              </​dl>​ +
-            </​dd>​ +
-          </​dl>​ +
-        </​div>​ +
-        <div class="​section">​ +
-          <div class="​titlepage">​ +
-            <​div>​ +
-              <​div>​ +
-                <h2 class="​title"><​a id="​mangler.overview"></​a>​1. Overview</h2> +
-              </​div>​ +
-            </​div>​ +
-          </​div>​ +
-          <p> +
-     ​This is a module to help with SDP mangling - changing data in the SDP. +
- </p> +
-        </​div>​ +
-        <div class="​section">​ +
-          <div class="​titlepage">​ +
-            <​div>​ +
-              <​div>​ +
-                <h2 class="​title"><​a id="​mangler.parameters"></​a>​2. Parameters</​h2>​ +
-              </​div>​ +
-            </​div>​ +
-          </​div>​ +
-          <div class="​section">​ +
-            <div class="​titlepage">​ +
-              <​div>​ +
-                <​div>​ +
-                  <h3 class="​title"><​a id="​mangler.p.contact_flds_separator"></​a>​2.1. <code class="​varname">​contact_flds_separator</​code> ​(string)</h3> +
-                </​div>​ +
-              </​div>​ +
-            </​div>​ +
-            <p> +
-     ​First char of this parameter is used as a separator for +
-     ​encoding/​decoding Contact headers. +
-     ​If you set this parameter to "​-", ​ +
-     ​then an encoded URI will look like "​sip:​user-password-ip-port-protocol@PublicIP"​ +
- </p> +
-            <​div class="​warning"​ style="​margin-left:​ 0.5in; margin-right:​ 0.5in;">​ +
-              <h3 class="​title">​Warning</h3> +
-              <​p>​ +
- The first character of this field must be set to a value which is not +
- used inside username, password or other fields of +
- contact.Otherwise it is possible for the decoding step to +
- fail/​produce wrong results. +
-     </​p>​ +
-            </​div>​ +
-            <p> +
-     ​Default value is "​*"​. +
- </p> +
-            <​div class="​example">​ +
-              <a id="​idp28503468"></​a>​ +
-              <p class="​title">​ +
-                <​strong>​Example 1.1. Set <code class="​varname">​db_url</​code> ​parameter</​strong>​ +
-              </​p>​ +
-              <div class="​example-contents"​+
-                <​pre class="​programlisting">​...+
 modparam("​mangler",​ "​contact_flds_separator",​ "​-"​) modparam("​mangler",​ "​contact_flds_separator",​ "​-"​)
-...</​pre>​ +... 
-              </div+</code
-            </​div>​ + 
-            <​br class="​example-break"​ /> +\\ ===== 3. Functions ===== 
-          </​div>​ + 
-        </​div>​ +==== 3.1. sdp_mangle_ip(pattern,​ newip) ​==== 
-        <div class="​section">​ + 
-          <div class="​titlepage">​ +Changes IP addresses inside SDP document in lines describing connections like c=IN IP4 . Currently this function only changes IP4 addresses since IP6 probably will not need to traverse NAT :) 
-            <​div>​ + 
-              <​div>​ +The function returns negative on error, or number of replacements + 1. 
-                <h2 class="​title"><​a id="​mangler.functions"></​a>​3. Functions</​h2>​ + 
-              </​div>​ +Meaning of the parameters is as follows: 
-            </​div>​ + 
-          </​div>​ +  ​* ​pattern - An IP address/​mask pair used to match IP's located inside SDP package in lines c=IN IP4 ip. This line will only be changed if located IP is in the network described by this pattern. Examples of valid patterns are "​10.0.0.0/​255.0.0.0"​ or "​10.0.0.0/​8"​ etc.  
-          <div class="​section">​ +  ​* ​newip - A string representing the new IP to be put inside SDP package if old IP address matches pattern.  
-            <div class="​titlepage">​ + 
-              <​div>​ +**Example 1.2. ''​sdp_mangle_ip'' ​usage** 
-                <​div>​ + 
-                  <h3 class="​title"><​a id="​mangler.f.sdp_mangle_ip"></​a>​3.1.  +<code
-     <code class="​function">​sdp_mangle_ip(pattern,​ newip)</​code>​ +...
- </​h3>​ +
-                </​div>​ +
-              </​div>​ +
-            </​div>​ +
-            <p> +
-     ​Changes IP addresses inside SDP document in lines describing +
-     ​connections like c=IN IP4 . Currently this function only changes ​ +
-     ​IP4 addresses since IP6 probably will not need to traverse NAT :) +
- </​p>​ +
-            <p> +
-     ​The function returns negative on error, or number of replacements + 1. +
- </p> +
-            <​p>​Meaning of the parameters is as follows:</p> +
-            <​div class="​itemizedlist">​ +
-              <​ul class="​itemizedlist"​ type="​disc">​ +
-                <li class="​listitem">​ +
-                  <p> +
-     <span class="​emphasis"><​em>​pattern</​em></​span> ​- An IP address/​mask pair used to match +
-     ​IP's located inside SDP package in lines c=IN IP4 ip. This +
-     ​line will only be changed if located IP is in the network +
-     ​described by this pattern. Examples of valid patterns are +
-     ​"​10.0.0.0/​255.0.0.0"​ or "​10.0.0.0/​8"​ etc. +
- </​p>​ +
-                </​li>​ +
-                <li class="​listitem">​ +
-                  <p> +
-     <span class="​emphasis"><​em>​newip</​em></​span> ​- A string representing the new +
-     ​IP to be put inside SDP package if old IP address +
-     ​matches pattern. +
- </p> +
-                </​li>​ +
-              </​ul>​ +
-            </​div>​ +
-            <div class="​example">​ +
-              <a id="​idp28905132"></​a>​ +
-              <p class="​title">​ +
-                <​strong>​Example 1.2. <code class="​function">​sdp_mangle_ip</​code> ​usage</​strong>​ +
-              </​p>​ +
-              <div class="​example-contents"​+
-                <​pre class="​programlisting">​...+
 sdp_mangle_ip("​10.0.0.0/​8","​193.175.135.38"​);​ sdp_mangle_ip("​10.0.0.0/​8","​193.175.135.38"​);​
-...</​pre>​ +... 
-              </div+</code
-            </​div>​ + 
-            <​br class="​example-break"​ /> +\\ ==== 3.2. sdp_mangle_port(offset) ​==== 
-          </​div>​ + 
-          <div class="​section">​ +Changes ports in SDP document in lines starting a media section like "​m=audio 13451"​. 
-            <div class="​titlepage">​ + 
-              <​div>​ +The function returns negative on error, or number of replacements + 1. 
-                <​div>​ + 
-                  <h3 class="​title"><​a id="​mangler.f.sdp_mangle_port"></​a>​3.2.  +Meaning of the parameters is as follows: 
-     <code class="​function">​sdp_mangle_port(offset)</​code>​ + 
- </​h3>​ +  ​* ​offset - A string representing an integer which will be added/​subtracted from the located port.  
-                </​div>​ + 
-              </​div>​ +**Example 1.3. ''​sdp_mangle_port'' ​usage** 
-            </​div>​ + 
-            <p> +<code
-     ​Changes ports in SDP document in lines starting a media section like +...
-     ​"​m=audio 13451"​. +
- </​p>​ +
-            <p> +
-     ​The function returns negative on error, or number of replacements + 1. +
- </p> +
-            <​p>​Meaning of the parameters is as follows:</p> +
-            <​div class="​itemizedlist">​ +
-              <​ul class="​itemizedlist"​ type="​disc">​ +
-                <li class="​listitem">​ +
-                  <p> +
-     <span class="​emphasis"><​em>​offset</​em></​span> ​- A string representing an +
-     ​integer which will be added/​subtracted from the located +
-     ​port. +
- </p> +
-                </​li>​ +
-              </​ul>​ +
-            </​div>​ +
-            <div class="​example">​ +
-              <a id="​idp27915636"></​a>​ +
-              <p class="​title">​ +
-                <​strong>​Example 1.3. <code class="​function">​sdp_mangle_port</​code> ​usage</​strong>​ +
-              </​p>​ +
-              <div class="​example-contents"​+
-                <​pre class="​programlisting">​...+
 sdp_mangle_port("​-12000"​);​ sdp_mangle_port("​-12000"​);​
-...</​pre>​ +... 
-              </div+</code
-            </​div>​ + 
-            <​br class="​example-break"​ /> +\\ ==== 3.3. encode_contact(encoding_prefix) ​==== 
-          </​div>​ + 
-          <div class="​section">​ +This function will encode URIs inside the "​Contact"​ header in the following manner "​sip:​username:​password@ip:​port;​transport=protocol"​ goes sip:​enc_pref*username*ip*port*protocol@public_ip. "​*"​ (asterisk) is the default separator. 
-            <div class="​titlepage">​ + 
-              <​div>​ +The function returns negative on error, 1 on success. 
-                <​div>​ + 
-                  <h3 class="​title"><​a id="​mangler.f.encode_contact"></​a>​3.3.  +Meaning of the parameters is as follows: 
-     <code class="​function">​encode_contact(encoding_prefix)</​code>​ + 
- </h3> +  ​* ​encoding_prefix - Something to allow us to determine that a contact is encoded public IP--a routable IP, most probably you should put your external IP of your NAT box.  
-                </​div>​ + 
-              </​div>​ +**Example 1.4. ''​encode_contact'' ​usage** 
-            </​div>​ + 
-            <p> +<code
-     ​This function will encode URIs inside the "​Contact"​ header in the +...
-     ​following manner "​sip:​username:​password@ip:​port;​transport=protocol"​ +
-     ​goes <span class="​emphasis"><​em>​sip:​enc_pref*username*ip*port*protocol@public_ip</​em></​span>​. +
-     ​"​*"​ (asterisk) is the default separator. +
- </​p>​ +
-            <p> +
-     ​The function returns negative on error, 1 on success. +
- </p> +
-            <​p>​Meaning of the parameters is as follows:</p> +
-            <​div class="​itemizedlist">​ +
-              <​ul class="​itemizedlist"​ type="​disc">​ +
-                <li class="​listitem">​ +
-                  <p> +
-     <span class="​emphasis"><​em>​encoding_prefix</​em></​span> ​- Something to allow +
-     ​us to determine that a contact is encoded public IP--a +
-     ​routable IP, most probably you should put your external IP +
-     ​of your NAT box. +
- </p> +
-                </​li>​ +
-              </​ul>​ +
-            </​div>​ +
-            <div class="​example">​ +
-              <a id="​idp27919796"></​a>​ +
-              <p class="​title">​ +
-                <​strong>​Example 1.4. <code class="​function">​encode_contact</​code> ​usage</​strong>​ +
-              </​p>​ +
-              <div class="​example-contents"​+
-                <​pre class="​programlisting">​...+
 if (src_ip == 10.0.0.0/8) encode_contact("​enc_prefix","​193.175.135.38"​); ​ if (src_ip == 10.0.0.0/8) encode_contact("​enc_prefix","​193.175.135.38"​); ​
-...</​pre>​ +... 
-              </div+</code
-            </​div>​ + 
-            <​br class="​example-break"​ /> +\\ ==== 3.4. decode_contact() ​==== 
-          </​div>​ + 
-          <div class="​section">​ +This function will decode the URI in first line in packets which come with encoded URI in the following manner sip:​enc_pref*username*ip*port*protocol*src_ip*src_port*src_proto@public_ip;​parameters is converted to sip:​username:​password@ip:​port;​parameters and will set destination URI to sip:​src_ip:​src_port;​transport=src_proto (so that the next forward() or t_relay() will send the message back to src_ip:​src_port using src_proto). It uses the default set parameter for contact encoding separator. 
-            <div class="​titlepage">​ + 
-              <​div>​ +The function returns negative on error, 1 on success. 
-                <​div>​ + 
-                  <h3 class="​title"><​a id="​mangler.f.decode_contact"></​a>​3.4.  +**Example 1.5. ''​decode_contact'' ​usage** 
-     <code class="​function">​decode_contact()</​code>​ + 
- </​h3>​ +<code
-                </​div>​ +...
-              </​div>​ +
-            </​div>​ +
-            <p> +
-     ​This function will decode the URI in first line in packets which +
-     ​come with encoded URI in the following manner +
-     <span class="​emphasis"><​em>​ +
-     ​sip:​enc_pref*username*ip*port*protocol*src_ip*src_port*src_proto@public_ip;​parameters +
-     </​em></​span>​ +
-    is converted to +
-     <span class="​emphasis"><​em>​ +
-     ​sip:​username:​password@ip:​port;​parameters +
-     </​em></​span>​ +
-     ​and will set destination URI to  +
-     <span class="​emphasis"><​em>​ +
-     ​sip:​src_ip:​src_port;​transport=src_proto +
-     </​em></​span>​ +
- (so that the next forward() or +
- t_relay() will send the message back to src_ip:​src_port using  +
- src_proto). It uses the default set parameter for contact encoding ​ +
- separator. +
- </​p>​ +
-            <p> +
-     ​The function returns negative on error, 1 on success. +
- </p> +
-            <​div class="​example">​ +
-              <a id="​idp29116132"></​a>​ +
-              <p class="​title">​ +
-                <​strong>​Example 1.5. <code class="​function">​decode_contact</​code> ​usage</​strong>​ +
-              </​p>​ +
-              <div class="​example-contents"​+
-                <​pre class="​programlisting">​...+
 if (uri =~ "​^enc*"​) { decode_contact();​ } if (uri =~ "​^enc*"​) { decode_contact();​ }
-...</​pre>​ +... 
-              </div+</code
-            </​div>​ + 
-            <​br class="​example-break"​ /> +\\ ==== 3.5. decode_contact_header() ​==== 
-          </​div>​ + 
-          <div class="​section">​ +This function will decode URIs inside the "​Contact"​ header in the same manner as decode_contact(). The difference is that no dst_uri is set (src_ip, src_port and src_proto are ignored) and instead of changing the request URI, the Contact header URI is modified. It uses the default set parameter for contact encoding separator. 
-            <div class="​titlepage">​ + 
-              <​div>​ +The function returns negative on error, 1 on success. 
-                <​div>​ + 
-                  <h3 class="​title"><​a id="​mangler.f.decode_contact_header"></​a>​3.5.  +**Example 1.6. ''​decode_contact_header'' ​usage** 
-     <code class="​function">​decode_contact_header()</​code>​ + 
- </​h3>​ +<code
-                </​div>​ +...
-              </​div>​ +
-            </​div>​ +
-            <p> +
-     ​This function will decode URIs inside the "​Contact"​ header in the +
-     ​same manner as decode_contact(). The difference is that no dst_uri is set +
-  (src_ip, src_port and src_proto are ignored) and instead of changing +
-  the request URI, the Contact header URI is modified. +
-  It uses the default set parameter for contact encoding separator. +
- </​p>​ +
-            <p> +
-     ​The function returns negative on error, 1 on success. +
- </p> +
-            <​div class="​example">​ +
-              <a id="​idp29118996"></​a>​ +
-              <p class="​title">​ +
-                <​strong>​Example 1.6. <code class="​function">​decode_contact_header</​code> ​usage</​strong>​ +
-              </​p>​ +
-              <div class="​example-contents"​+
-                <​pre class="​programlisting">​...+
 if (uri =~ "​^enc*"​) { decode_contact_header();​ } if (uri =~ "​^enc*"​) { decode_contact_header();​ }
-...</​pre>​ +... 
-              </​div>​ +</code>
-            </​div>​ +
-            <br class="​example-break"​ /> +
-          </​div>​ +
-        </​div>​ +
-      </​div>​ +
-    </​div>​ +
-  </​body>​ +
-</html>+
  
 +\\
mangler_sip_message_mangling_functions_from-ser.txt · 最后更改: 2017/09/11 15:02 由 james_zhu