<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.9.1">
  <compounddef id="sal_8c" kind="file" language="C++">
    <compoundname>sal.c</compoundname>
    <includes local="yes">sal/sal.h</includes>
    <includes local="yes">bellesip_sal/sal_impl.h</includes>
    <includes local="yes">belle-sip/belle-sip.h</includes>
    <includes local="yes">belle-sip/belle-sdp.h</includes>
    <includes local="no">ctype.h</includes>
    <incdepgraph>
      <node id="263">
        <label>bellesip_sal/sal_impl.h</label>
      </node>
      <node id="264">
        <label>belle-sip/belle-sip.h</label>
      </node>
      <node id="262">
        <label>sal/sal.h</label>
      </node>
      <node id="266">
        <label>ctype.h</label>
      </node>
      <node id="261">
        <label>sal.c</label>
        <link refid="sal.c"/>
        <childnode refid="262" relation="include">
        </childnode>
        <childnode refid="263" relation="include">
        </childnode>
        <childnode refid="264" relation="include">
        </childnode>
        <childnode refid="265" relation="include">
        </childnode>
        <childnode refid="266" relation="include">
        </childnode>
      </node>
      <node id="265">
        <label>belle-sip/belle-sdp.h</label>
      </node>
    </incdepgraph>
      <sectiondef kind="define">
      <memberdef kind="define" id="sal_8c_1a9705686fcb31538a25f4fe8a5b0ddd9f" prot="public" static="no">
        <name>SET_PARAM</name>
        <param><defname>op</defname></param>
        <param><defname>name</defname></param>
        <initializer>char* name##_string=NULL; \
		assign_address(&amp;((SalOpBase*)op)-&gt;name##_address,name); \
		if (((SalOpBase*)op)-&gt;name##_address) { \
			name##_string=sal_address_as_string(((SalOpBase*)op)-&gt;name##_address); \
		}\
		assign_string(&amp;((SalOpBase*)op)-&gt;name,name##_string); \
		if(name##_string) ms_free(name##_string);</initializer>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="469" column="9" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="469" bodyend="-1"/>
      </memberdef>
      </sectiondef>
      <sectiondef kind="func">
      <memberdef kind="function" id="sal_8c_1a43b3f79ff6ff32efae9c71f0d42e1fbd" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>const char *</type>
        <definition>const char* sal_transport_to_string</definition>
        <argsstring>(SalTransport transport)</argsstring>
        <name>sal_transport_to_string</name>
        <param>
          <type>SalTransport</type>
          <declname>transport</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>This header files defines the Signaling Abstraction Layer. The purpose of this layer is too allow experiment different call signaling protocols and implementations under linphone, for example SIP, JINGLE... </para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="33" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="33" bodyend="44"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a887d4fbb4e631737da04b0b72215cda8" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>SalTransport</type>
        <definition>SalTransport sal_transport_parse</definition>
        <argsstring>(const char *param)</argsstring>
        <name>sal_transport_parse</name>
        <param>
          <type>const char *</type>
          <declname>param</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="46" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="46" bodyend="54"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1aa0b366136d16b0f64767e03302381481" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>SalMediaDescription *</type>
        <definition>SalMediaDescription* sal_media_description_new</definition>
        <argsstring>()</argsstring>
        <name>sal_media_description_new</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="56" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="56" bodyend="66"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a7b0b4ed22c5ec548900e607ddc13d5d6" prot="public" static="yes" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>static void sal_media_description_destroy</definition>
        <argsstring>(SalMediaDescription *md)</argsstring>
        <name>sal_media_description_destroy</name>
        <param>
          <type>SalMediaDescription *</type>
          <declname>md</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="68" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="68" bodyend="79"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a698698ac73f03e98063de5e0d2d65dc2" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>SalMediaDescription *</type>
        <definition>SalMediaDescription* sal_media_description_ref</definition>
        <argsstring>(SalMediaDescription *md)</argsstring>
        <name>sal_media_description_ref</name>
        <param>
          <type>SalMediaDescription *</type>
          <declname>md</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="81" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="81" bodyend="84"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1adce253a5eed48b01b895e819a61f3aad" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void sal_media_description_unref</definition>
        <argsstring>(SalMediaDescription *md)</argsstring>
        <name>sal_media_description_unref</name>
        <param>
          <type>SalMediaDescription *</type>
          <declname>md</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="86" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="86" bodyend="91"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a11f7604367934e9105252730e70f0104" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>SalStreamDescription *</type>
        <definition>SalStreamDescription* sal_media_description_find_stream</definition>
        <argsstring>(SalMediaDescription *md, SalMediaProto proto, SalStreamType type)</argsstring>
        <name>sal_media_description_find_stream</name>
        <param>
          <type>SalMediaDescription *</type>
          <declname>md</declname>
        </param>
        <param>
          <type>SalMediaProto</type>
          <declname>proto</declname>
        </param>
        <param>
          <type>SalStreamType</type>
          <declname>type</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="93" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="93" bodyend="101"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a546ec4757c5337f9be7d66890c775780" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>unsigned int</type>
        <definition>unsigned int sal_media_description_nb_active_streams_of_type</definition>
        <argsstring>(SalMediaDescription *md, SalStreamType type)</argsstring>
        <name>sal_media_description_nb_active_streams_of_type</name>
        <param>
          <type>SalMediaDescription *</type>
          <declname>md</declname>
        </param>
        <param>
          <type>SalStreamType</type>
          <declname>type</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="103" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="103" bodyend="111"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a767157463f27ea15f9e05b955dd918f5" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>SalStreamDescription *</type>
        <definition>SalStreamDescription* sal_media_description_get_active_stream_of_type</definition>
        <argsstring>(SalMediaDescription *md, SalStreamType type, unsigned int idx)</argsstring>
        <name>sal_media_description_get_active_stream_of_type</name>
        <param>
          <type>SalMediaDescription *</type>
          <declname>md</declname>
        </param>
        <param>
          <type>SalStreamType</type>
          <declname>type</declname>
        </param>
        <param>
          <type>unsigned int</type>
          <declname>idx</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="113" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="113" bodyend="122"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1ab30b19af5a59407e897fb1a9dd7334e2" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>SalStreamDescription *</type>
        <definition>SalStreamDescription* sal_media_description_find_secure_stream_of_type</definition>
        <argsstring>(SalMediaDescription *md, SalStreamType type)</argsstring>
        <name>sal_media_description_find_secure_stream_of_type</name>
        <param>
          <type>SalMediaDescription *</type>
          <declname>md</declname>
        </param>
        <param>
          <type>SalStreamType</type>
          <declname>type</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="124" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="124" bodyend="128"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1ad12e9c975ebac7799c7f8766cd817b16" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>SalStreamDescription *</type>
        <definition>SalStreamDescription* sal_media_description_find_best_stream</definition>
        <argsstring>(SalMediaDescription *md, SalStreamType type)</argsstring>
        <name>sal_media_description_find_best_stream</name>
        <param>
          <type>SalMediaDescription *</type>
          <declname>md</declname>
        </param>
        <param>
          <type>SalStreamType</type>
          <declname>type</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="130" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="130" bodyend="138"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a7eb2c7f690d42faed3b381e3bcac5dee" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>bool_t</type>
        <definition>bool_t sal_media_description_empty</definition>
        <argsstring>(const SalMediaDescription *md)</argsstring>
        <name>sal_media_description_empty</name>
        <param>
          <type>const SalMediaDescription *</type>
          <declname>md</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="140" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="140" bodyend="143"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1ade18e833108c45b2e767f99d658bd6bd" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void sal_media_description_set_dir</definition>
        <argsstring>(SalMediaDescription *md, SalStreamDir stream_dir)</argsstring>
        <name>sal_media_description_set_dir</name>
        <param>
          <type>SalMediaDescription *</type>
          <declname>md</declname>
        </param>
        <param>
          <type>SalStreamDir</type>
          <declname>stream_dir</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="145" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="145" bodyend="152"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a8bb2cb54859e3ab0dbb5a054497e577e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>int</type>
        <definition>int sal_media_description_get_nb_active_streams</definition>
        <argsstring>(const SalMediaDescription *md)</argsstring>
        <name>sal_media_description_get_nb_active_streams</name>
        <param>
          <type>const SalMediaDescription *</type>
          <declname>md</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="154" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="154" bodyend="161"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1af5fa549dc6173c88552761c667ab3080" prot="public" static="yes" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>bool_t</type>
        <definition>static bool_t is_null_address</definition>
        <argsstring>(const char *addr)</argsstring>
        <name>is_null_address</name>
        <param>
          <type>const char *</type>
          <declname>addr</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="163" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="163" bodyend="165"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a0d998c0dce0b403c581355dde7025618" prot="public" static="yes" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>bool_t</type>
        <definition>static bool_t has_dir</definition>
        <argsstring>(const SalMediaDescription *md, SalStreamDir stream_dir)</argsstring>
        <name>has_dir</name>
        <param>
          <type>const SalMediaDescription *</type>
          <declname>md</declname>
        </param>
        <param>
          <type>SalStreamDir</type>
          <declname>stream_dir</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="168" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="168" bodyend="184"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a5f73a63a3a3d5c666db27da900a014f9" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>bool_t</type>
        <definition>bool_t sal_media_description_has_dir</definition>
        <argsstring>(const SalMediaDescription *md, SalStreamDir stream_dir)</argsstring>
        <name>sal_media_description_has_dir</name>
        <param>
          <type>const SalMediaDescription *</type>
          <declname>md</declname>
        </param>
        <param>
          <type>SalStreamDir</type>
          <declname>stream_dir</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="186" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="186" bodyend="200"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1acd5c1ba4af75a0baa4638896e7b13cf4" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>bool_t</type>
        <definition>bool_t sal_stream_description_active</definition>
        <argsstring>(const SalStreamDescription *sd)</argsstring>
        <name>sal_stream_description_active</name>
        <param>
          <type>const SalStreamDescription *</type>
          <declname>sd</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="202" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="202" bodyend="204"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a8f6a4524afc4306a1f54f45da840d43c" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>bool_t</type>
        <definition>bool_t sal_stream_description_has_avpf</definition>
        <argsstring>(const SalStreamDescription *sd)</argsstring>
        <name>sal_stream_description_has_avpf</name>
        <param>
          <type>const SalStreamDescription *</type>
          <declname>sd</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="207" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="207" bodyend="220"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1af7a95e76d9ba25ea4178b6d3fca45d84" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>bool_t</type>
        <definition>bool_t sal_stream_description_has_srtp</definition>
        <argsstring>(const SalStreamDescription *sd)</argsstring>
        <name>sal_stream_description_has_srtp</name>
        <param>
          <type>const SalStreamDescription *</type>
          <declname>sd</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="223" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="223" bodyend="236"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a71c1dfa0950928ca0dc16e643c7ffd55" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>bool_t</type>
        <definition>bool_t sal_stream_description_has_dtls</definition>
        <argsstring>(const SalStreamDescription *sd)</argsstring>
        <name>sal_stream_description_has_dtls</name>
        <param>
          <type>const SalStreamDescription *</type>
          <declname>sd</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="238" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="238" bodyend="251"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1aed598d0905795e5e4c4ca4a9645e5b62" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>bool_t</type>
        <definition>bool_t sal_media_description_has_avpf</definition>
        <argsstring>(const SalMediaDescription *md)</argsstring>
        <name>sal_media_description_has_avpf</name>
        <param>
          <type>const SalMediaDescription *</type>
          <declname>md</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="253" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="253" bodyend="261"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a2fc5653b54fedb3a3b174612be915760" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>bool_t</type>
        <definition>bool_t sal_media_description_has_srtp</definition>
        <argsstring>(const SalMediaDescription *md)</argsstring>
        <name>sal_media_description_has_srtp</name>
        <param>
          <type>const SalMediaDescription *</type>
          <declname>md</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="263" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="263" bodyend="271"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a769338f9d5a0c0d131e6bbce7be2be35" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>bool_t</type>
        <definition>bool_t sal_media_description_has_dtls</definition>
        <argsstring>(const SalMediaDescription *md)</argsstring>
        <name>sal_media_description_has_dtls</name>
        <param>
          <type>const SalMediaDescription *</type>
          <declname>md</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="273" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="273" bodyend="281"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1add7f09da04e77c2982f5c7538031be18" prot="public" static="yes" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>bool_t</type>
        <definition>static bool_t payload_type_equals</definition>
        <argsstring>(const PayloadType *p1, const PayloadType *p2)</argsstring>
        <name>payload_type_equals</name>
        <param>
          <type>const PayloadType *</type>
          <declname>p1</declname>
        </param>
        <param>
          <type>const PayloadType *</type>
          <declname>p2</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="291" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="291" bodyend="306"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a06ed6dda99792a2e2a01294e246ce709" prot="public" static="yes" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>bool_t</type>
        <definition>static bool_t is_recv_only</definition>
        <argsstring>(PayloadType *p)</argsstring>
        <name>is_recv_only</name>
        <param>
          <type>PayloadType *</type>
          <declname>p</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="308" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="308" bodyend="310"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a04804c5b4f10e66416d6beb76db5b7e3" prot="public" static="yes" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>bool_t</type>
        <definition>static bool_t payload_list_equals</definition>
        <argsstring>(const MSList *l1, const MSList *l2)</argsstring>
        <name>payload_list_equals</name>
        <param>
          <type>const MSList *</type>
          <declname>l1</declname>
        </param>
        <param>
          <type>const MSList *</type>
          <declname>l2</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="312" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="312" bodyend="331"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a703af3c9fbb718c4ed459ec3b69c53e7" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>int</type>
        <definition>int sal_stream_description_equals</definition>
        <argsstring>(const SalStreamDescription *sd1, const SalStreamDescription *sd2)</argsstring>
        <name>sal_stream_description_equals</name>
        <param>
          <type>const SalStreamDescription *</type>
          <declname>sd1</declname>
        </param>
        <param>
          <type>const SalStreamDescription *</type>
          <declname>sd2</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="333" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="333" bodyend="374"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1afc83af6ad31094de0148cfc60627d14b" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>char *</type>
        <definition>char* sal_media_description_print_differences</definition>
        <argsstring>(int result)</argsstring>
        <name>sal_media_description_print_differences</name>
        <param>
          <type>int</type>
          <declname>result</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="376" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="376" bodyend="415"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1aef82de1985c4fa6fc48894e9b531e9a6" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>int</type>
        <definition>int sal_media_description_equals</definition>
        <argsstring>(const SalMediaDescription *md1, const SalMediaDescription *md2)</argsstring>
        <name>sal_media_description_equals</name>
        <param>
          <type>const SalMediaDescription *</type>
          <declname>md1</declname>
        </param>
        <param>
          <type>const SalMediaDescription *</type>
          <declname>md2</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="417" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="417" bodyend="436"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a235de7a0dbe24f97436afb489e30e7f1" prot="public" static="yes" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>static void assign_address</definition>
        <argsstring>(SalAddress **address, const char *value)</argsstring>
        <name>assign_address</name>
        <param>
          <type>SalAddress **</type>
          <declname>address</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>value</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="438" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="438" bodyend="445"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1ace2c8f941f12356fc8e912069102b125" prot="public" static="yes" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>static void assign_string</definition>
        <argsstring>(char **str, const char *arg)</argsstring>
        <name>assign_string</name>
        <param>
          <type>char **</type>
          <declname>str</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>arg</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="447" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="447" bodyend="454"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a246a713e7a1ecfdfb01c86d2bb08b164" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void sal_op_set_contact_address</definition>
        <argsstring>(SalOp *op, const SalAddress *address)</argsstring>
        <name>sal_op_set_contact_address</name>
        <param>
          <type>SalOp *</type>
          <declname>op</declname>
        </param>
        <param>
          <type>const SalAddress *</type>
          <declname>address</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="456" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="456" bodyend="459"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a6d35e89ba30a8bd8c1c833ea40e84ff8" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>const SalAddress *</type>
        <definition>const SalAddress* sal_op_get_contact_address</definition>
        <argsstring>(const SalOp *op)</argsstring>
        <name>sal_op_get_contact_address</name>
        <param>
          <type>const SalOp *</type>
          <declname>op</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="460" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="460" bodyend="462"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a9dbc8f089f94324f1d9c2bec34c317c7" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>const SalAddress *</type>
        <definition>const SalAddress* sal_op_get_remote_contact_address</definition>
        <argsstring>(const SalOp *op)</argsstring>
        <name>sal_op_get_remote_contact_address</name>
        <param>
          <type>const SalOp *</type>
          <declname>op</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="464" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="464" bodyend="467"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1ad29f08c7ec30959dc395098b1434d6a3" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void sal_op_set_route</definition>
        <argsstring>(SalOp *op, const char *route)</argsstring>
        <name>sal_op_set_route</name>
        <param>
          <type>SalOp *</type>
          <declname>op</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>route</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="479" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="479" bodyend="493"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1ae16e12083cd47e5e53926356d56a9cd7" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>const MSList *</type>
        <definition>const MSList* sal_op_get_route_addresses</definition>
        <argsstring>(const SalOp *op)</argsstring>
        <name>sal_op_get_route_addresses</name>
        <param>
          <type>const SalOp *</type>
          <declname>op</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="494" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="494" bodyend="496"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1aaab9f9cba9e1a566f99937858af56787" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void sal_op_set_route_address</definition>
        <argsstring>(SalOp *op, const SalAddress *address)</argsstring>
        <name>sal_op_set_route_address</name>
        <param>
          <type>SalOp *</type>
          <declname>op</declname>
        </param>
        <param>
          <type>const SalAddress *</type>
          <declname>address</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="497" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="497" bodyend="501"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a5ac5925697e06beaf89fd933378be4f4" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void sal_op_add_route_address</definition>
        <argsstring>(SalOp *op, const SalAddress *address)</argsstring>
        <name>sal_op_add_route_address</name>
        <param>
          <type>SalOp *</type>
          <declname>op</declname>
        </param>
        <param>
          <type>const SalAddress *</type>
          <declname>address</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="502" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="502" bodyend="509"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a67e7e33bcb2aaa3fb26260c31b1ffa09" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void sal_op_set_realm</definition>
        <argsstring>(SalOp *op, const char *realm)</argsstring>
        <name>sal_op_set_realm</name>
        <param>
          <type>SalOp *</type>
          <declname>op</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>realm</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="510" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="510" bodyend="516"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1ab21a6063179d8918bf76ccaee46802c1" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void sal_op_set_from</definition>
        <argsstring>(SalOp *op, const char *from)</argsstring>
        <name>sal_op_set_from</name>
        <param>
          <type>SalOp *</type>
          <declname>op</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>from</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="517" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="517" bodyend="519"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1abad6143a87ab91c35e65a7f33f5125ed" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void sal_op_set_from_address</definition>
        <argsstring>(SalOp *op, const SalAddress *from)</argsstring>
        <name>sal_op_set_from_address</name>
        <param>
          <type>SalOp *</type>
          <declname>op</declname>
        </param>
        <param>
          <type>const SalAddress *</type>
          <declname>from</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="520" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="520" bodyend="524"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a99f189b69ce7accd4aa99958a1f04bda" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void sal_op_set_to</definition>
        <argsstring>(SalOp *op, const char *to)</argsstring>
        <name>sal_op_set_to</name>
        <param>
          <type>SalOp *</type>
          <declname>op</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>to</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="525" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="525" bodyend="527"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1ac65d423b9c76083bb1ab9b6aa0de76d8" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void sal_op_set_to_address</definition>
        <argsstring>(SalOp *op, const SalAddress *to)</argsstring>
        <name>sal_op_set_to_address</name>
        <param>
          <type>SalOp *</type>
          <declname>op</declname>
        </param>
        <param>
          <type>const SalAddress *</type>
          <declname>to</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="528" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="528" bodyend="532"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a5401f89c178d68e633f5ca4e8a769064" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void sal_op_set_user_pointer</definition>
        <argsstring>(SalOp *op, void *up)</argsstring>
        <name>sal_op_set_user_pointer</name>
        <param>
          <type>SalOp *</type>
          <declname>op</declname>
        </param>
        <param>
          <type>void *</type>
          <declname>up</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="534" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="534" bodyend="536"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a9bce527f9f89d8d8fc1148d36c66777d" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>Sal *</type>
        <definition>Sal* sal_op_get_sal</definition>
        <argsstring>(const SalOp *op)</argsstring>
        <name>sal_op_get_sal</name>
        <param>
          <type>const SalOp *</type>
          <declname>op</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="538" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="538" bodyend="540"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a2b28f92ed1b15e0d9b87093bd9a1c8e2" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>const char *</type>
        <definition>const char* sal_op_get_from</definition>
        <argsstring>(const SalOp *op)</argsstring>
        <name>sal_op_get_from</name>
        <param>
          <type>const SalOp *</type>
          <declname>op</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="542" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="542" bodyend="544"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1af257262c99eeef76f65a698a80747948" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>const SalAddress *</type>
        <definition>const SalAddress* sal_op_get_from_address</definition>
        <argsstring>(const SalOp *op)</argsstring>
        <name>sal_op_get_from_address</name>
        <param>
          <type>const SalOp *</type>
          <declname>op</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="545" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="545" bodyend="547"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a0c9a1814828845e5541778b9fe860727" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>const char *</type>
        <definition>const char* sal_op_get_to</definition>
        <argsstring>(const SalOp *op)</argsstring>
        <name>sal_op_get_to</name>
        <param>
          <type>const SalOp *</type>
          <declname>op</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="549" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="549" bodyend="551"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1ab6db6b8f1c2ef52596279f6ba7f18122" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>const SalAddress *</type>
        <definition>const SalAddress* sal_op_get_to_address</definition>
        <argsstring>(const SalOp *op)</argsstring>
        <name>sal_op_get_to_address</name>
        <param>
          <type>const SalOp *</type>
          <declname>op</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="553" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="553" bodyend="555"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a3329d464bf5226782b42e6f79208b052" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>const char *</type>
        <definition>const char* sal_op_get_route</definition>
        <argsstring>(const SalOp *op)</argsstring>
        <name>sal_op_get_route</name>
        <param>
          <type>const SalOp *</type>
          <declname>op</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="557" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="557" bodyend="562"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a4b534ac98f5b655eae304349662ebfba" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>const char *</type>
        <definition>const char* sal_op_get_remote_ua</definition>
        <argsstring>(const SalOp *op)</argsstring>
        <name>sal_op_get_remote_ua</name>
        <param>
          <type>const SalOp *</type>
          <declname>op</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="564" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="564" bodyend="566"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a13ec3e176e96193d1f52db42a7912354" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void *</type>
        <definition>void* sal_op_get_user_pointer</definition>
        <argsstring>(const SalOp *op)</argsstring>
        <name>sal_op_get_user_pointer</name>
        <param>
          <type>const SalOp *</type>
          <declname>op</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="568" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="568" bodyend="570"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a9f2db95297bfd123ebfbb5ffd190c4fe" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>const char *</type>
        <definition>const char* sal_op_get_proxy</definition>
        <argsstring>(const SalOp *op)</argsstring>
        <name>sal_op_get_proxy</name>
        <param>
          <type>const SalOp *</type>
          <declname>op</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="572" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="572" bodyend="574"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a809f1dcf93f5e21b99f01c3a8c0dc50f" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>const char *</type>
        <definition>const char* sal_op_get_network_origin</definition>
        <argsstring>(const SalOp *op)</argsstring>
        <name>sal_op_get_network_origin</name>
        <param>
          <type>const SalOp *</type>
          <declname>op</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="576" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="576" bodyend="578"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1af7fc4b63c5639417974aab1a644af83d" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>const char *</type>
        <definition>const char* sal_op_get_call_id</definition>
        <argsstring>(const SalOp *op)</argsstring>
        <name>sal_op_get_call_id</name>
        <param>
          <type>const SalOp *</type>
          <declname>op</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="579" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="579" bodyend="581"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a476fea9776ef8afa3558d38b05a6d9fd" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>char *</type>
        <definition>char* sal_op_get_dialog_id</definition>
        <argsstring>(const SalOp *op)</argsstring>
        <name>sal_op_get_dialog_id</name>
        <param>
          <type>const SalOp *</type>
          <declname>op</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="582" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="582" bodyend="589"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a26ebdc8046e3f3a75ab00b3a231ad366" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void __sal_op_init</definition>
        <argsstring>(SalOp *b, Sal *sal)</argsstring>
        <name>__sal_op_init</name>
        <param>
          <type>SalOp *</type>
          <declname>b</declname>
        </param>
        <param>
          <type>Sal *</type>
          <declname>sal</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="590" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="590" bodyend="593"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1afd84555929758481a90ffff7444e1436" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void __sal_op_set_network_origin</definition>
        <argsstring>(SalOp *op, const char *origin)</argsstring>
        <name>__sal_op_set_network_origin</name>
        <param>
          <type>SalOp *</type>
          <declname>op</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>origin</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="595" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="595" bodyend="597"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a0da09bee4b679defd4ae4e3027f4fe7c" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void __sal_op_set_remote_contact</definition>
        <argsstring>(SalOp *op, const char *remote_contact)</argsstring>
        <name>__sal_op_set_remote_contact</name>
        <param>
          <type>SalOp *</type>
          <declname>op</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>remote_contact</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="599" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="599" bodyend="601"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a037c7fda11aec4d7533abe94322879fc" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void __sal_op_set_network_origin_address</definition>
        <argsstring>(SalOp *op, SalAddress *origin)</argsstring>
        <name>__sal_op_set_network_origin_address</name>
        <param>
          <type>SalOp *</type>
          <declname>op</declname>
        </param>
        <param>
          <type>SalAddress *</type>
          <declname>origin</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="603" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="603" bodyend="607"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a04d5035b0a296d3cf317ed5da5321d3c" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void __sal_op_free</definition>
        <argsstring>(SalOp *op)</argsstring>
        <name>__sal_op_free</name>
        <param>
          <type>SalOp *</type>
          <declname>op</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="609" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="609" bodyend="682"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1ad07c4dc0544f8451bfdd1d49094c4045" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>SalAuthInfo *</type>
        <definition>SalAuthInfo* sal_auth_info_new</definition>
        <argsstring>()</argsstring>
        <name>sal_auth_info_new</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="684" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="684" bodyend="686"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a17aab91c6b38242f220bbdaba7d7b6fa" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>SalAuthInfo *</type>
        <definition>SalAuthInfo* sal_auth_info_clone</definition>
        <argsstring>(const SalAuthInfo *auth_info)</argsstring>
        <name>sal_auth_info_clone</name>
        <param>
          <type>const SalAuthInfo *</type>
          <declname>auth_info</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="688" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="688" bodyend="696"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1af96d3256d2d4d5e699e4a6998e71e337" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void sal_auth_info_delete</definition>
        <argsstring>(SalAuthInfo *auth_info)</argsstring>
        <name>sal_auth_info_delete</name>
        <param>
          <type>SalAuthInfo *</type>
          <declname>auth_info</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="698" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="698" bodyend="708"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a33b3e9aeb7835a24e4935b79136cff16" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>const char *</type>
        <definition>const char* sal_stream_type_to_string</definition>
        <argsstring>(SalStreamType type)</argsstring>
        <name>sal_stream_type_to_string</name>
        <param>
          <type>SalStreamType</type>
          <declname>type</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="712" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="712" bodyend="719"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a4e467d3c53bd43e3e054ffa5b8d0a093" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>const char *</type>
        <definition>const char* sal_stream_description_get_type_as_string</definition>
        <argsstring>(const SalStreamDescription *desc)</argsstring>
        <name>sal_stream_description_get_type_as_string</name>
        <param>
          <type>const SalStreamDescription *</type>
          <declname>desc</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="721" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="721" bodyend="724"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a69f1747d679a77f581d05e996a5e7ab2" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>const char *</type>
        <definition>const char* sal_media_proto_to_string</definition>
        <argsstring>(SalMediaProto type)</argsstring>
        <name>sal_media_proto_to_string</name>
        <param>
          <type>SalMediaProto</type>
          <declname>type</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="726" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="726" bodyend="736"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1ad2dfd1a738b3b9cf4e3d009e50f5c1a7" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>const char *</type>
        <definition>const char* sal_stream_description_get_proto_as_string</definition>
        <argsstring>(const SalStreamDescription *desc)</argsstring>
        <name>sal_stream_description_get_proto_as_string</name>
        <param>
          <type>const SalStreamDescription *</type>
          <declname>desc</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="738" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="738" bodyend="741"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1ac45a53748916e2e421066fae04ff2cb8" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>const char *</type>
        <definition>const char* sal_stream_dir_to_string</definition>
        <argsstring>(SalStreamDir type)</argsstring>
        <name>sal_stream_dir_to_string</name>
        <param>
          <type>SalStreamDir</type>
          <declname>type</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="744" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="744" bodyend="753"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a3e4703d239de8680feff5b730db06aa5" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>const char *</type>
        <definition>const char* sal_reason_to_string</definition>
        <argsstring>(const SalReason reason)</argsstring>
        <name>sal_reason_to_string</name>
        <param>
          <type>const SalReason</type>
          <declname>reason</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="755" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="755" bodyend="770"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a0cf1493e5543815c406fa1eefd94b58b" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>const SalAddress *</type>
        <definition>const SalAddress* sal_op_get_service_route</definition>
        <argsstring>(const SalOp *op)</argsstring>
        <name>sal_op_get_service_route</name>
        <param>
          <type>const SalOp *</type>
          <declname>op</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="771" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="771" bodyend="773"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1ae7347c69c356fa504ad9fd05a4d2b3e1" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void sal_op_set_service_route</definition>
        <argsstring>(SalOp *op, const SalAddress *service_route)</argsstring>
        <name>sal_op_set_service_route</name>
        <param>
          <type>SalOp *</type>
          <declname>op</declname>
        </param>
        <param>
          <type>const SalAddress *</type>
          <declname>service_route</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="774" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="774" bodyend="779"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1aea79ff5d8eb3726522e0c827d4bc5910" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>const char *</type>
        <definition>const char* sal_presence_status_to_string</definition>
        <argsstring>(const SalPresenceStatus status)</argsstring>
        <name>sal_presence_status_to_string</name>
        <param>
          <type>const SalPresenceStatus</type>
          <declname>status</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="781" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="781" bodyend="796"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1afe673adc329762ca837592161d00056a" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>const char *</type>
        <definition>const char* sal_privacy_to_string</definition>
        <argsstring>(SalPrivacy privacy)</argsstring>
        <name>sal_privacy_to_string</name>
        <param>
          <type>SalPrivacy</type>
          <declname>privacy</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="797" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="797" bodyend="807"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a4c6666add300677ece181527f4d6b245" prot="public" static="yes" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>static void remove_trailing_spaces</definition>
        <argsstring>(char *line)</argsstring>
        <name>remove_trailing_spaces</name>
        <param>
          <type>char *</type>
          <declname>line</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="809" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="809" bodyend="815"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1ab264f89e7dd53088790654fe8ad36c7d" prot="public" static="yes" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>int</type>
        <definition>static int line_get_value</definition>
        <argsstring>(const char *input, const char *key, char *value, size_t value_size, size_t *read)</argsstring>
        <name>line_get_value</name>
        <param>
          <type>const char *</type>
          <declname>input</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>key</declname>
        </param>
        <param>
          <type>char *</type>
          <declname>value</declname>
        </param>
        <param>
          <type>size_t</type>
          <declname>value_size</declname>
        </param>
        <param>
          <type>size_t *</type>
          <declname>read</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="817" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="817" bodyend="839"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a10fab5f634323464c8d9373cff60b454" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>int</type>
        <definition>int sal_lines_get_value</definition>
        <argsstring>(const char *data, const char *key, char *value, size_t value_size)</argsstring>
        <name>sal_lines_get_value</name>
        <param>
          <type>const char *</type>
          <declname>data</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>key</declname>
        </param>
        <param>
          <type>char *</type>
          <declname>value</declname>
        </param>
        <param>
          <type>size_t</type>
          <declname>value_size</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="841" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="841" bodyend="850"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a644cf76be5dc39402d3d5265cfb48a86" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>int</type>
        <definition>int sal_body_has_type</definition>
        <argsstring>(const SalBody *body, const char *type, const char *subtype)</argsstring>
        <name>sal_body_has_type</name>
        <param>
          <type>const SalBody *</type>
          <declname>body</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>type</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>subtype</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="852" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="852" bodyend="856"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1ab940ea7b137b57d6627b8570ab00a0bb" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>belle_sip_stack_t *</type>
        <definition>belle_sip_stack_t* sal_get_belle_sip_stack</definition>
        <argsstring>(Sal *sal)</argsstring>
        <name>sal_get_belle_sip_stack</name>
        <param>
          <type>Sal *</type>
          <declname>sal</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="858" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="858" bodyend="860"/>
      </memberdef>
      <memberdef kind="function" id="sal_8c_1a3e5981e1e808eb2f44557a2d3c9a83fb" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>char *</type>
        <definition>char* sal_op_get_public_uri</definition>
        <argsstring>(SalOp *op)</argsstring>
        <name>sal_op_get_public_uri</name>
        <param>
          <type>SalOp *</type>
          <declname>op</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" line="862" column="1" bodyfile="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c" bodystart="862" bodyend="867"/>
      </memberdef>
      </sectiondef>
    <briefdescription>
    </briefdescription>
    <detaileddescription>
    </detaileddescription>
    <programlisting>
<codeline lineno="1"><highlight class="comment">/*</highlight></codeline>
<codeline lineno="2"><highlight class="comment">linphone</highlight></codeline>
<codeline lineno="3"><highlight class="comment">Copyright<sp/>(C)<sp/>2010<sp/><sp/>Simon<sp/>MORLAT<sp/>(simon.morlat@free.fr)</highlight></codeline>
<codeline lineno="4"><highlight class="comment"></highlight></codeline>
<codeline lineno="5"><highlight class="comment">This<sp/>program<sp/>is<sp/>free<sp/>software;<sp/>you<sp/>can<sp/>redistribute<sp/>it<sp/>and/or</highlight></codeline>
<codeline lineno="6"><highlight class="comment">modify<sp/>it<sp/>under<sp/>the<sp/>terms<sp/>of<sp/>the<sp/>GNU<sp/>General<sp/>Public<sp/>License</highlight></codeline>
<codeline lineno="7"><highlight class="comment">as<sp/>published<sp/>by<sp/>the<sp/>Free<sp/>Software<sp/>Foundation;<sp/>either<sp/>version<sp/>2</highlight></codeline>
<codeline lineno="8"><highlight class="comment">of<sp/>the<sp/>License,<sp/>or<sp/>(at<sp/>your<sp/>option)<sp/>any<sp/>later<sp/>version.</highlight></codeline>
<codeline lineno="9"><highlight class="comment"></highlight></codeline>
<codeline lineno="10"><highlight class="comment">This<sp/>program<sp/>is<sp/>distributed<sp/>in<sp/>the<sp/>hope<sp/>that<sp/>it<sp/>will<sp/>be<sp/>useful,</highlight></codeline>
<codeline lineno="11"><highlight class="comment">but<sp/>WITHOUT<sp/>ANY<sp/>WARRANTY;<sp/>without<sp/>even<sp/>the<sp/>implied<sp/>warranty<sp/>of</highlight></codeline>
<codeline lineno="12"><highlight class="comment">MERCHANTABILITY<sp/>or<sp/>FITNESS<sp/>FOR<sp/>A<sp/>PARTICULAR<sp/>PURPOSE.<sp/><sp/>See<sp/>the</highlight></codeline>
<codeline lineno="13"><highlight class="comment">GNU<sp/>General<sp/>Public<sp/>License<sp/>for<sp/>more<sp/>details.</highlight></codeline>
<codeline lineno="14"><highlight class="comment"></highlight></codeline>
<codeline lineno="15"><highlight class="comment">You<sp/>should<sp/>have<sp/>received<sp/>a<sp/>copy<sp/>of<sp/>the<sp/>GNU<sp/>General<sp/>Public<sp/>License</highlight></codeline>
<codeline lineno="16"><highlight class="comment">along<sp/>with<sp/>this<sp/>program;<sp/>if<sp/>not,<sp/>write<sp/>to<sp/>the<sp/>Free<sp/>Software</highlight></codeline>
<codeline lineno="17"><highlight class="comment">Foundation,<sp/>Inc.,<sp/>59<sp/>Temple<sp/>Place<sp/>-<sp/>Suite<sp/>330,<sp/>Boston,<sp/>MA<sp/><sp/>02111-1307,<sp/>USA.</highlight></codeline>
<codeline lineno="18"><highlight class="comment">*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="19"><highlight class="normal"></highlight></codeline>
<codeline lineno="25"><highlight class="preprocessor">#ifdef<sp/>HAVE_CONFIG_H</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="26"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;config.h&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="27"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="28"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;sal/sal.h&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="29"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;bellesip_sal/sal_impl.h&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="30"><highlight class="normal"></highlight></codeline>
<codeline lineno="31"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;ctype.h&gt;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="32"><highlight class="normal"></highlight></codeline>
<codeline lineno="33"><highlight class="normal"></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/>sal_transport_to_string(SalTransport<sp/>transport)<sp/>{</highlight></codeline>
<codeline lineno="34"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">switch</highlight><highlight class="normal"><sp/>(transport)<sp/>{</highlight></codeline>
<codeline lineno="35"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalTransportUDP:</highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;udp&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="36"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalTransportTCP:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;tcp&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="37"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalTransportTLS:</highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;tls&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="38"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalTransportDTLS:</highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;dtls&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="39"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">default</highlight><highlight class="normal">:<sp/>{</highlight></codeline>
<codeline lineno="40"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms_fatal(</highlight><highlight class="stringliteral">&quot;Unexpected<sp/>transport<sp/>[%i]&quot;</highlight><highlight class="normal">,transport);</highlight></codeline>
<codeline lineno="41"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>NULL;</highlight></codeline>
<codeline lineno="42"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="43"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="44"><highlight class="normal">}</highlight></codeline>
<codeline lineno="45"><highlight class="normal"></highlight></codeline>
<codeline lineno="46"><highlight class="normal">SalTransport<sp/>sal_transport_parse(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/>param)<sp/>{</highlight></codeline>
<codeline lineno="47"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!param)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>SalTransportUDP;</highlight></codeline>
<codeline lineno="48"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(strcasecmp(</highlight><highlight class="stringliteral">&quot;udp&quot;</highlight><highlight class="normal">,param)==0)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>SalTransportUDP;</highlight></codeline>
<codeline lineno="49"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(strcasecmp(</highlight><highlight class="stringliteral">&quot;tcp&quot;</highlight><highlight class="normal">,param)==0)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>SalTransportTCP;</highlight></codeline>
<codeline lineno="50"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(strcasecmp(</highlight><highlight class="stringliteral">&quot;tls&quot;</highlight><highlight class="normal">,param)==0)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>SalTransportTLS;</highlight></codeline>
<codeline lineno="51"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(strcasecmp(</highlight><highlight class="stringliteral">&quot;dtls&quot;</highlight><highlight class="normal">,param)==0)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>SalTransportDTLS;</highlight></codeline>
<codeline lineno="52"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms_error(</highlight><highlight class="stringliteral">&quot;Unknown<sp/>transport<sp/>type[%s],<sp/>returning<sp/>UDP&quot;</highlight><highlight class="normal">,<sp/>param);</highlight></codeline>
<codeline lineno="53"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>SalTransportUDP;</highlight></codeline>
<codeline lineno="54"><highlight class="normal">}</highlight></codeline>
<codeline lineno="55"><highlight class="normal"></highlight></codeline>
<codeline lineno="56"><highlight class="normal">SalMediaDescription<sp/>*sal_media_description_new(){</highlight></codeline>
<codeline lineno="57"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>SalMediaDescription<sp/>*md=ms_new0(SalMediaDescription,1);</highlight></codeline>
<codeline lineno="58"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i;</highlight></codeline>
<codeline lineno="59"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>md-&gt;refcount=1;</highlight></codeline>
<codeline lineno="60"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal">(i<sp/>=<sp/>0;<sp/>i<sp/>&lt;<sp/>SAL_MEDIA_DESCRIPTION_MAX_STREAMS;<sp/>i++)<sp/>{</highlight></codeline>
<codeline lineno="61"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>md-&gt;streams[i].dir=SalStreamInactive;</highlight></codeline>
<codeline lineno="62"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>md-&gt;streams[i].rtp_port<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="63"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>md-&gt;streams[i].rtcp_port<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="64"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="65"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>md;</highlight></codeline>
<codeline lineno="66"><highlight class="normal">}</highlight></codeline>
<codeline lineno="67"><highlight class="normal"></highlight></codeline>
<codeline lineno="68"><highlight class="normal"></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>sal_media_description_destroy(SalMediaDescription<sp/>*md){</highlight></codeline>
<codeline lineno="69"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i;</highlight></codeline>
<codeline lineno="70"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal">(i=0;i&lt;SAL_MEDIA_DESCRIPTION_MAX_STREAMS;i++){</highlight></codeline>
<codeline lineno="71"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms_list_free_with_data(md-&gt;streams[i].payloads,(void<sp/>(*)(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*))payload_type_destroy);</highlight></codeline>
<codeline lineno="72"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms_list_free_with_data(md-&gt;streams[i].already_assigned_payloads,(void<sp/>(*)(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*))payload_type_destroy);</highlight></codeline>
<codeline lineno="73"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>md-&gt;streams[i].payloads=NULL;</highlight></codeline>
<codeline lineno="74"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>md-&gt;streams[i].already_assigned_payloads=NULL;</highlight></codeline>
<codeline lineno="75"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sal_custom_sdp_attribute_free(md-&gt;streams[i].custom_sdp_attributes);</highlight></codeline>
<codeline lineno="76"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="77"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sal_custom_sdp_attribute_free(md-&gt;custom_sdp_attributes);</highlight></codeline>
<codeline lineno="78"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms_free(md);</highlight></codeline>
<codeline lineno="79"><highlight class="normal">}</highlight></codeline>
<codeline lineno="80"><highlight class="normal"></highlight></codeline>
<codeline lineno="81"><highlight class="normal">SalMediaDescription<sp/>*<sp/>sal_media_description_ref(SalMediaDescription<sp/>*md){</highlight></codeline>
<codeline lineno="82"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>md-&gt;refcount++;</highlight></codeline>
<codeline lineno="83"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>md;</highlight></codeline>
<codeline lineno="84"><highlight class="normal">}</highlight></codeline>
<codeline lineno="85"><highlight class="normal"></highlight></codeline>
<codeline lineno="86"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>sal_media_description_unref(SalMediaDescription<sp/>*md){</highlight></codeline>
<codeline lineno="87"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>md-&gt;refcount--;</highlight></codeline>
<codeline lineno="88"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(md-&gt;refcount==0){</highlight></codeline>
<codeline lineno="89"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sal_media_description_destroy<sp/>(md);</highlight></codeline>
<codeline lineno="90"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="91"><highlight class="normal">}</highlight></codeline>
<codeline lineno="92"><highlight class="normal"></highlight></codeline>
<codeline lineno="93"><highlight class="normal">SalStreamDescription<sp/>*sal_media_description_find_stream(SalMediaDescription<sp/>*md,<sp/>SalMediaProto<sp/>proto,<sp/>SalStreamType<sp/>type){</highlight></codeline>
<codeline lineno="94"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i;</highlight></codeline>
<codeline lineno="95"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal">(i=0;i&lt;SAL_MEDIA_DESCRIPTION_MAX_STREAMS;++i){</highlight></codeline>
<codeline lineno="96"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>SalStreamDescription<sp/>*ss=&amp;md-&gt;streams[i];</highlight></codeline>
<codeline lineno="97"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!sal_stream_description_active(ss))<sp/></highlight><highlight class="keywordflow">continue</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="98"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(ss-&gt;proto==proto<sp/>&amp;&amp;<sp/>ss-&gt;type==type)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>ss;</highlight></codeline>
<codeline lineno="99"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="100"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>NULL;</highlight></codeline>
<codeline lineno="101"><highlight class="normal">}</highlight></codeline>
<codeline lineno="102"><highlight class="normal"></highlight></codeline>
<codeline lineno="103"><highlight class="normal"></highlight><highlight class="keywordtype">unsigned</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>sal_media_description_nb_active_streams_of_type(SalMediaDescription<sp/>*md,<sp/>SalStreamType<sp/>type)<sp/>{</highlight></codeline>
<codeline lineno="104"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">unsigned</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i;</highlight></codeline>
<codeline lineno="105"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">unsigned</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>nb<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="106"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(i<sp/>=<sp/>0;<sp/>i<sp/>&lt;<sp/>SAL_MEDIA_DESCRIPTION_MAX_STREAMS;<sp/>++i)<sp/>{</highlight></codeline>
<codeline lineno="107"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!sal_stream_description_active(&amp;md-&gt;streams[i]))<sp/></highlight><highlight class="keywordflow">continue</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="108"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(md-&gt;streams[i].type<sp/>==<sp/>type)<sp/>nb++;</highlight></codeline>
<codeline lineno="109"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="110"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>nb;</highlight></codeline>
<codeline lineno="111"><highlight class="normal">}</highlight></codeline>
<codeline lineno="112"><highlight class="normal"></highlight></codeline>
<codeline lineno="113"><highlight class="normal">SalStreamDescription<sp/>*<sp/>sal_media_description_get_active_stream_of_type(SalMediaDescription<sp/>*md,<sp/>SalStreamType<sp/>type,<sp/></highlight><highlight class="keywordtype">unsigned</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>idx)<sp/>{</highlight></codeline>
<codeline lineno="114"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">unsigned</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i;</highlight></codeline>
<codeline lineno="115"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(i<sp/>=<sp/>0;<sp/>i<sp/>&lt;<sp/>SAL_MEDIA_DESCRIPTION_MAX_STREAMS;<sp/>++i)<sp/>{</highlight></codeline>
<codeline lineno="116"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!sal_stream_description_active(&amp;md-&gt;streams[i]))<sp/></highlight><highlight class="keywordflow">continue</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="117"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(md-&gt;streams[i].type<sp/>==<sp/>type)<sp/>{</highlight></codeline>
<codeline lineno="118"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(idx--<sp/>==<sp/>0)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>&amp;md-&gt;streams[i];</highlight></codeline>
<codeline lineno="119"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="120"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="121"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>NULL;</highlight></codeline>
<codeline lineno="122"><highlight class="normal">}</highlight></codeline>
<codeline lineno="123"><highlight class="normal"></highlight></codeline>
<codeline lineno="124"><highlight class="normal">SalStreamDescription<sp/>*<sp/>sal_media_description_find_secure_stream_of_type(SalMediaDescription<sp/>*md,<sp/>SalStreamType<sp/>type)<sp/>{</highlight></codeline>
<codeline lineno="125"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>SalStreamDescription<sp/>*desc<sp/>=<sp/>sal_media_description_find_stream(md,<sp/>SalProtoRtpSavpf,<sp/>type);</highlight></codeline>
<codeline lineno="126"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(desc<sp/>==<sp/>NULL)<sp/>desc<sp/>=<sp/>sal_media_description_find_stream(md,<sp/>SalProtoRtpSavp,<sp/>type);</highlight></codeline>
<codeline lineno="127"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>desc;</highlight></codeline>
<codeline lineno="128"><highlight class="normal">}</highlight></codeline>
<codeline lineno="129"><highlight class="normal"></highlight></codeline>
<codeline lineno="130"><highlight class="normal">SalStreamDescription<sp/>*<sp/>sal_media_description_find_best_stream(SalMediaDescription<sp/>*md,<sp/>SalStreamType<sp/>type)<sp/>{</highlight></codeline>
<codeline lineno="131"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>SalStreamDescription<sp/>*desc<sp/>=<sp/>sal_media_description_find_stream(md,<sp/>SalProtoUdpTlsRtpSavpf,<sp/>type);</highlight></codeline>
<codeline lineno="132"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(desc<sp/>==<sp/>NULL)<sp/>desc<sp/>=<sp/>sal_media_description_find_stream(md,<sp/>SalProtoUdpTlsRtpSavp,<sp/>type);</highlight></codeline>
<codeline lineno="133"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(desc<sp/>==<sp/>NULL)<sp/>desc<sp/>=<sp/>sal_media_description_find_stream(md,<sp/>SalProtoRtpSavpf,<sp/>type);</highlight></codeline>
<codeline lineno="134"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(desc<sp/>==<sp/>NULL)<sp/>desc<sp/>=<sp/>sal_media_description_find_stream(md,<sp/>SalProtoRtpSavp,<sp/>type);</highlight></codeline>
<codeline lineno="135"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(desc<sp/>==<sp/>NULL)<sp/>desc<sp/>=<sp/>sal_media_description_find_stream(md,<sp/>SalProtoRtpAvpf,<sp/>type);</highlight></codeline>
<codeline lineno="136"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(desc<sp/>==<sp/>NULL)<sp/>desc<sp/>=<sp/>sal_media_description_find_stream(md,<sp/>SalProtoRtpAvp,<sp/>type);</highlight></codeline>
<codeline lineno="137"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>desc;</highlight></codeline>
<codeline lineno="138"><highlight class="normal">}</highlight></codeline>
<codeline lineno="139"><highlight class="normal"></highlight></codeline>
<codeline lineno="140"><highlight class="normal">bool_t<sp/>sal_media_description_empty(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalMediaDescription<sp/>*md){</highlight></codeline>
<codeline lineno="141"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(sal_media_description_get_nb_active_streams(md)<sp/>&gt;<sp/>0)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>FALSE;</highlight></codeline>
<codeline lineno="142"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>TRUE;</highlight></codeline>
<codeline lineno="143"><highlight class="normal">}</highlight></codeline>
<codeline lineno="144"><highlight class="normal"></highlight></codeline>
<codeline lineno="145"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>sal_media_description_set_dir(SalMediaDescription<sp/>*md,<sp/>SalStreamDir<sp/>stream_dir){</highlight></codeline>
<codeline lineno="146"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i;</highlight></codeline>
<codeline lineno="147"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal">(i=0;i&lt;SAL_MEDIA_DESCRIPTION_MAX_STREAMS;++i){</highlight></codeline>
<codeline lineno="148"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>SalStreamDescription<sp/>*ss=&amp;md-&gt;streams[i];</highlight></codeline>
<codeline lineno="149"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!sal_stream_description_active(ss))<sp/></highlight><highlight class="keywordflow">continue</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="150"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ss-&gt;dir=stream_dir;</highlight></codeline>
<codeline lineno="151"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="152"><highlight class="normal">}</highlight></codeline>
<codeline lineno="153"><highlight class="normal"></highlight></codeline>
<codeline lineno="154"><highlight class="normal"></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>sal_media_description_get_nb_active_streams(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalMediaDescription<sp/>*md)<sp/>{</highlight></codeline>
<codeline lineno="155"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i;</highlight></codeline>
<codeline lineno="156"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>nb<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="157"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(i<sp/>=<sp/>0;<sp/>i<sp/>&lt;<sp/>SAL_MEDIA_DESCRIPTION_MAX_STREAMS;<sp/>i++)<sp/>{</highlight></codeline>
<codeline lineno="158"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(sal_stream_description_active(&amp;md-&gt;streams[i]))<sp/>nb++;</highlight></codeline>
<codeline lineno="159"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="160"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>nb;</highlight></codeline>
<codeline lineno="161"><highlight class="normal">}</highlight></codeline>
<codeline lineno="162"><highlight class="normal"></highlight></codeline>
<codeline lineno="163"><highlight class="normal"></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/>bool_t<sp/>is_null_address(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*addr){</highlight></codeline>
<codeline lineno="164"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>strcmp(addr,</highlight><highlight class="stringliteral">&quot;0.0.0.0&quot;</highlight><highlight class="normal">)==0<sp/>||<sp/>strcmp(addr,</highlight><highlight class="stringliteral">&quot;::0&quot;</highlight><highlight class="normal">)==0;</highlight></codeline>
<codeline lineno="165"><highlight class="normal">}</highlight></codeline>
<codeline lineno="166"><highlight class="normal"></highlight></codeline>
<codeline lineno="167"><highlight class="normal"></highlight><highlight class="comment">/*check<sp/>for<sp/>the<sp/>presence<sp/>of<sp/>at<sp/>least<sp/>one<sp/>stream<sp/>with<sp/>requested<sp/>direction<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="168"><highlight class="normal"></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/>bool_t<sp/>has_dir(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalMediaDescription<sp/>*md,<sp/>SalStreamDir<sp/>stream_dir){</highlight></codeline>
<codeline lineno="169"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i;</highlight></codeline>
<codeline lineno="170"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline>
<codeline lineno="171"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>we<sp/>are<sp/>looking<sp/>for<sp/>at<sp/>least<sp/>one<sp/>stream<sp/>with<sp/>requested<sp/>direction,<sp/>inactive<sp/>streams<sp/>are<sp/>ignored*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="172"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal">(i=0;i&lt;SAL_MEDIA_DESCRIPTION_MAX_STREAMS;++i){</highlight></codeline>
<codeline lineno="173"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalStreamDescription<sp/>*ss=&amp;md-&gt;streams[i];</highlight></codeline>
<codeline lineno="174"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!sal_stream_description_active(ss))<sp/></highlight><highlight class="keywordflow">continue</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="175"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(ss-&gt;dir==stream_dir)<sp/>{</highlight></codeline>
<codeline lineno="176"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>TRUE;</highlight></codeline>
<codeline lineno="177"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="178"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*compatibility<sp/>check<sp/>for<sp/>phones<sp/>that<sp/>only<sp/>used<sp/>the<sp/>null<sp/>address<sp/>and<sp/>no<sp/>attributes<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="179"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(ss-&gt;dir==SalStreamSendRecv<sp/>&amp;&amp;<sp/>stream_dir==SalStreamSendOnly<sp/>&amp;&amp;<sp/>(is_null_address(md-&gt;addr)<sp/>||<sp/>is_null_address(ss-&gt;rtp_addr))){</highlight></codeline>
<codeline lineno="180"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>TRUE;</highlight></codeline>
<codeline lineno="181"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="182"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="183"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>FALSE;</highlight></codeline>
<codeline lineno="184"><highlight class="normal">}</highlight></codeline>
<codeline lineno="185"><highlight class="normal"></highlight></codeline>
<codeline lineno="186"><highlight class="normal">bool_t<sp/>sal_media_description_has_dir(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalMediaDescription<sp/>*md,<sp/>SalStreamDir<sp/>stream_dir){</highlight></codeline>
<codeline lineno="187"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(stream_dir==SalStreamRecvOnly){</highlight></codeline>
<codeline lineno="188"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>has_dir(md,<sp/>SalStreamRecvOnly)<sp/>&amp;&amp;<sp/>!(has_dir(md,SalStreamSendOnly)<sp/>||<sp/>has_dir(md,SalStreamSendRecv));</highlight></codeline>
<codeline lineno="189"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(stream_dir==SalStreamSendOnly){</highlight></codeline>
<codeline lineno="190"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>has_dir(md,<sp/>SalStreamSendOnly)<sp/>&amp;&amp;<sp/>!(has_dir(md,SalStreamRecvOnly)<sp/>||<sp/>has_dir(md,SalStreamSendRecv));</highlight></codeline>
<codeline lineno="191"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(stream_dir==SalStreamSendRecv){</highlight></codeline>
<codeline lineno="192"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>has_dir(md,SalStreamSendRecv);</highlight></codeline>
<codeline lineno="193"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight><highlight class="keywordflow">else</highlight><highlight class="normal">{</highlight></codeline>
<codeline lineno="194"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*SalStreamInactive*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="195"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(has_dir(md,SalStreamSendOnly)<sp/>||<sp/>has_dir(md,SalStreamSendRecv)<sp/><sp/>||<sp/>has_dir(md,SalStreamRecvOnly))</highlight></codeline>
<codeline lineno="196"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>FALSE;</highlight></codeline>
<codeline lineno="197"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>TRUE;</highlight></codeline>
<codeline lineno="198"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="199"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>FALSE;</highlight></codeline>
<codeline lineno="200"><highlight class="normal">}</highlight></codeline>
<codeline lineno="201"><highlight class="normal"></highlight></codeline>
<codeline lineno="202"><highlight class="normal">bool_t<sp/>sal_stream_description_active(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalStreamDescription<sp/>*sd)<sp/>{</highlight></codeline>
<codeline lineno="203"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>(sd-&gt;rtp_port<sp/>&gt;<sp/>0);</highlight></codeline>
<codeline lineno="204"><highlight class="normal">}</highlight></codeline>
<codeline lineno="205"><highlight class="normal"></highlight></codeline>
<codeline lineno="206"><highlight class="normal"></highlight><highlight class="comment">/*these<sp/>are<sp/>switch<sp/>case,<sp/>so<sp/>that<sp/>when<sp/>a<sp/>new<sp/>proto<sp/>is<sp/>added<sp/>we<sp/>can&apos;t<sp/>forget<sp/>to<sp/>modify<sp/>this<sp/>function*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="207"><highlight class="normal">bool_t<sp/>sal_stream_description_has_avpf(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalStreamDescription<sp/>*sd)<sp/>{</highlight></codeline>
<codeline lineno="208"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">switch</highlight><highlight class="normal"><sp/>(sd-&gt;proto){</highlight></codeline>
<codeline lineno="209"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalProtoRtpAvpf:</highlight></codeline>
<codeline lineno="210"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalProtoRtpSavpf:</highlight></codeline>
<codeline lineno="211"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalProtoUdpTlsRtpSavpf:</highlight></codeline>
<codeline lineno="212"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>TRUE;</highlight></codeline>
<codeline lineno="213"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalProtoRtpAvp:</highlight></codeline>
<codeline lineno="214"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalProtoRtpSavp:</highlight></codeline>
<codeline lineno="215"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalProtoUdpTlsRtpSavp:</highlight></codeline>
<codeline lineno="216"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalProtoOther:</highlight></codeline>
<codeline lineno="217"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>FALSE;</highlight></codeline>
<codeline lineno="218"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="219"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>FALSE;</highlight></codeline>
<codeline lineno="220"><highlight class="normal">}</highlight></codeline>
<codeline lineno="221"><highlight class="normal"></highlight></codeline>
<codeline lineno="222"><highlight class="normal"></highlight><highlight class="comment">/*these<sp/>are<sp/>switch<sp/>case,<sp/>so<sp/>that<sp/>when<sp/>a<sp/>new<sp/>proto<sp/>is<sp/>added<sp/>we<sp/>can&apos;t<sp/>forget<sp/>to<sp/>modify<sp/>this<sp/>function*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="223"><highlight class="normal">bool_t<sp/>sal_stream_description_has_srtp(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalStreamDescription<sp/>*sd)<sp/>{</highlight></codeline>
<codeline lineno="224"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">switch</highlight><highlight class="normal"><sp/>(sd-&gt;proto){</highlight></codeline>
<codeline lineno="225"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalProtoRtpSavp:</highlight></codeline>
<codeline lineno="226"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalProtoRtpSavpf:</highlight></codeline>
<codeline lineno="227"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>TRUE;</highlight></codeline>
<codeline lineno="228"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalProtoRtpAvp:</highlight></codeline>
<codeline lineno="229"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalProtoRtpAvpf:</highlight></codeline>
<codeline lineno="230"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalProtoUdpTlsRtpSavpf:</highlight></codeline>
<codeline lineno="231"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalProtoUdpTlsRtpSavp:</highlight></codeline>
<codeline lineno="232"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalProtoOther:</highlight></codeline>
<codeline lineno="233"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>FALSE;</highlight></codeline>
<codeline lineno="234"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="235"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>FALSE;</highlight></codeline>
<codeline lineno="236"><highlight class="normal">}</highlight></codeline>
<codeline lineno="237"><highlight class="normal"></highlight></codeline>
<codeline lineno="238"><highlight class="normal">bool_t<sp/>sal_stream_description_has_dtls(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalStreamDescription<sp/>*sd)<sp/>{</highlight></codeline>
<codeline lineno="239"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">switch</highlight><highlight class="normal"><sp/>(sd-&gt;proto){</highlight></codeline>
<codeline lineno="240"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalProtoUdpTlsRtpSavpf:</highlight></codeline>
<codeline lineno="241"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalProtoUdpTlsRtpSavp:</highlight></codeline>
<codeline lineno="242"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>TRUE;</highlight></codeline>
<codeline lineno="243"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalProtoRtpSavp:</highlight></codeline>
<codeline lineno="244"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalProtoRtpSavpf:</highlight></codeline>
<codeline lineno="245"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalProtoRtpAvp:</highlight></codeline>
<codeline lineno="246"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalProtoRtpAvpf:</highlight></codeline>
<codeline lineno="247"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalProtoOther:</highlight></codeline>
<codeline lineno="248"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>FALSE;</highlight></codeline>
<codeline lineno="249"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="250"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>FALSE;</highlight></codeline>
<codeline lineno="251"><highlight class="normal">}</highlight></codeline>
<codeline lineno="252"><highlight class="normal"></highlight></codeline>
<codeline lineno="253"><highlight class="normal">bool_t<sp/>sal_media_description_has_avpf(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalMediaDescription<sp/>*md)<sp/>{</highlight></codeline>
<codeline lineno="254"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i;</highlight></codeline>
<codeline lineno="255"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(md-&gt;nb_streams<sp/>==<sp/>0)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>FALSE;</highlight></codeline>
<codeline lineno="256"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(i<sp/>=<sp/>0;<sp/>i<sp/>&lt;<sp/>SAL_MEDIA_DESCRIPTION_MAX_STREAMS;<sp/>i++)<sp/>{</highlight></codeline>
<codeline lineno="257"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!sal_stream_description_active(&amp;md-&gt;streams[i]))<sp/></highlight><highlight class="keywordflow">continue</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="258"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(sal_stream_description_has_avpf(&amp;md-&gt;streams[i])<sp/>!=<sp/>TRUE)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>FALSE;</highlight></codeline>
<codeline lineno="259"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="260"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>TRUE;</highlight></codeline>
<codeline lineno="261"><highlight class="normal">}</highlight></codeline>
<codeline lineno="262"><highlight class="normal"></highlight></codeline>
<codeline lineno="263"><highlight class="normal">bool_t<sp/>sal_media_description_has_srtp(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalMediaDescription<sp/>*md)<sp/>{</highlight></codeline>
<codeline lineno="264"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i;</highlight></codeline>
<codeline lineno="265"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(md-&gt;nb_streams<sp/>==<sp/>0)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>FALSE;</highlight></codeline>
<codeline lineno="266"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(i<sp/>=<sp/>0;<sp/>i<sp/>&lt;<sp/>SAL_MEDIA_DESCRIPTION_MAX_STREAMS;<sp/>i++)<sp/>{</highlight></codeline>
<codeline lineno="267"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!sal_stream_description_active(&amp;md-&gt;streams[i]))<sp/></highlight><highlight class="keywordflow">continue</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="268"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(sal_stream_description_has_srtp(&amp;md-&gt;streams[i])<sp/>!=<sp/>TRUE)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>FALSE;</highlight></codeline>
<codeline lineno="269"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="270"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>TRUE;</highlight></codeline>
<codeline lineno="271"><highlight class="normal">}</highlight></codeline>
<codeline lineno="272"><highlight class="normal"></highlight></codeline>
<codeline lineno="273"><highlight class="normal">bool_t<sp/>sal_media_description_has_dtls(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalMediaDescription<sp/>*md)<sp/>{</highlight></codeline>
<codeline lineno="274"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i;</highlight></codeline>
<codeline lineno="275"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(md-&gt;nb_streams<sp/>==<sp/>0)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>FALSE;</highlight></codeline>
<codeline lineno="276"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(i<sp/>=<sp/>0;<sp/>i<sp/>&lt;<sp/>SAL_MEDIA_DESCRIPTION_MAX_STREAMS;<sp/>i++)<sp/>{</highlight></codeline>
<codeline lineno="277"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!sal_stream_description_active(&amp;md-&gt;streams[i]))<sp/></highlight><highlight class="keywordflow">continue</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="278"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(sal_stream_description_has_dtls(&amp;md-&gt;streams[i])<sp/>!=<sp/>TRUE)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>FALSE;</highlight></codeline>
<codeline lineno="279"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="280"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>TRUE;</highlight></codeline>
<codeline lineno="281"><highlight class="normal">}</highlight></codeline>
<codeline lineno="282"><highlight class="normal"></highlight></codeline>
<codeline lineno="283"><highlight class="normal"></highlight><highlight class="comment">/*</highlight></codeline>
<codeline lineno="284"><highlight class="comment">static<sp/>bool_t<sp/>fmtp_equals(const<sp/>char<sp/>*p1,<sp/>const<sp/>char<sp/>*p2){</highlight></codeline>
<codeline lineno="285"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>if<sp/>(p1<sp/>&amp;&amp;<sp/>p2<sp/>&amp;&amp;<sp/>strcmp(p1,p2)==0)<sp/>return<sp/>TRUE;</highlight></codeline>
<codeline lineno="286"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>if<sp/>(p1==NULL<sp/>&amp;&amp;<sp/>p2==NULL)<sp/>return<sp/>TRUE;</highlight></codeline>
<codeline lineno="287"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>return<sp/>FALSE;</highlight></codeline>
<codeline lineno="288"><highlight class="comment">}</highlight></codeline>
<codeline lineno="289"><highlight class="comment">*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="290"><highlight class="normal"></highlight></codeline>
<codeline lineno="291"><highlight class="normal"></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/>bool_t<sp/>payload_type_equals(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>PayloadType<sp/>*p1,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>PayloadType<sp/>*p2){</highlight></codeline>
<codeline lineno="292"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(p1-&gt;type!=p2-&gt;type)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>FALSE;</highlight></codeline>
<codeline lineno="293"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(strcmp(p1-&gt;mime_type,p2-&gt;mime_type)!=0)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>FALSE;</highlight></codeline>
<codeline lineno="294"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(p1-&gt;clock_rate!=p2-&gt;clock_rate)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>FALSE;</highlight></codeline>
<codeline lineno="295"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(p1-&gt;channels!=p2-&gt;channels)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>FALSE;</highlight></codeline>
<codeline lineno="296"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(payload_type_get_number(p1)<sp/>!=<sp/>payload_type_get_number(p2))<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>FALSE;</highlight></codeline>
<codeline lineno="297"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*</highlight></codeline>
<codeline lineno="298"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Do<sp/>not<sp/>compare<sp/>fmtp<sp/>right<sp/>now:<sp/>they<sp/>are<sp/>modified<sp/>internally<sp/>when<sp/>the<sp/>call<sp/>is<sp/>started</highlight></codeline>
<codeline lineno="299"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="300"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*</highlight></codeline>
<codeline lineno="301"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>if<sp/>(!fmtp_equals(p1-&gt;recv_fmtp,p2-&gt;recv_fmtp)<sp/>||</highlight></codeline>
<codeline lineno="302"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>!fmtp_equals(p1-&gt;send_fmtp,p2-&gt;send_fmtp))</highlight></codeline>
<codeline lineno="303"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>return<sp/>FALSE;</highlight></codeline>
<codeline lineno="304"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="305"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>TRUE;</highlight></codeline>
<codeline lineno="306"><highlight class="normal">}</highlight></codeline>
<codeline lineno="307"><highlight class="normal"></highlight></codeline>
<codeline lineno="308"><highlight class="normal"></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/>bool_t<sp/>is_recv_only(PayloadType<sp/>*p){</highlight></codeline>
<codeline lineno="309"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>(p-&gt;flags<sp/>&amp;<sp/>PAYLOAD_TYPE_FLAG_CAN_RECV)<sp/>&amp;&amp;<sp/>!<sp/>(p-&gt;flags<sp/>&amp;<sp/>PAYLOAD_TYPE_FLAG_CAN_SEND);</highlight></codeline>
<codeline lineno="310"><highlight class="normal">}</highlight></codeline>
<codeline lineno="311"><highlight class="normal"></highlight></codeline>
<codeline lineno="312"><highlight class="normal"></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/>bool_t<sp/>payload_list_equals(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>MSList<sp/>*l1,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>MSList<sp/>*l2){</highlight></codeline>
<codeline lineno="313"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>MSList<sp/>*e1,*e2;</highlight></codeline>
<codeline lineno="314"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal">(e1=l1,e2=l2;e1!=NULL<sp/>&amp;&amp;<sp/>e2!=NULL;<sp/>e1=e1-&gt;next,e2=e2-&gt;next){</highlight></codeline>
<codeline lineno="315"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>PayloadType<sp/>*p1=(PayloadType*)e1-&gt;data;</highlight></codeline>
<codeline lineno="316"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>PayloadType<sp/>*p2=(PayloadType*)e2-&gt;data;</highlight></codeline>
<codeline lineno="317"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!payload_type_equals(p1,p2))</highlight></codeline>
<codeline lineno="318"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>FALSE;</highlight></codeline>
<codeline lineno="319"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="320"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(e1!=NULL){</highlight></codeline>
<codeline lineno="321"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*skip<sp/>possible<sp/>recv-only<sp/>payloads*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="322"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal">(;e1!=NULL<sp/>&amp;&amp;<sp/>is_recv_only((PayloadType*)e1-&gt;data);e1=e1-&gt;next){</highlight></codeline>
<codeline lineno="323"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms_message(</highlight><highlight class="stringliteral">&quot;Skipping<sp/>recv-only<sp/>payload<sp/>type...&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="324"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="325"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="326"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(e1!=NULL<sp/>||<sp/>e2!=NULL){</highlight></codeline>
<codeline lineno="327"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*means<sp/>one<sp/>list<sp/>is<sp/>longer<sp/>than<sp/>the<sp/>other*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="328"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>FALSE;</highlight></codeline>
<codeline lineno="329"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="330"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>TRUE;</highlight></codeline>
<codeline lineno="331"><highlight class="normal">}</highlight></codeline>
<codeline lineno="332"><highlight class="normal"></highlight></codeline>
<codeline lineno="333"><highlight class="normal"></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>sal_stream_description_equals(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalStreamDescription<sp/>*sd1,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalStreamDescription<sp/>*sd2)<sp/>{</highlight></codeline>
<codeline lineno="334"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>result<sp/>=<sp/>SAL_MEDIA_DESCRIPTION_UNCHANGED;</highlight></codeline>
<codeline lineno="335"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i;</highlight></codeline>
<codeline lineno="336"><highlight class="normal"></highlight></codeline>
<codeline lineno="337"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>A<sp/>different<sp/>proto<sp/>should<sp/>result<sp/>in<sp/>SAL_MEDIA_DESCRIPTION_NETWORK_CHANGED<sp/>but<sp/>the<sp/>encryption<sp/>change</highlight></codeline>
<codeline lineno="338"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>needs<sp/>a<sp/>stream<sp/>restart<sp/>for<sp/>now,<sp/>so<sp/>use<sp/>SAL_MEDIA_DESCRIPTION_CODEC_CHANGED<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="339"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(sd1-&gt;proto<sp/>!=<sp/>sd2-&gt;proto)<sp/>result<sp/>|=<sp/>SAL_MEDIA_DESCRIPTION_CODEC_CHANGED;</highlight></codeline>
<codeline lineno="340"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(i<sp/>=<sp/>0;<sp/>i<sp/>&lt;<sp/>SAL_CRYPTO_ALGO_MAX;<sp/>i++)<sp/>{</highlight></codeline>
<codeline lineno="341"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>((sd1-&gt;crypto[i].tag<sp/>!=<sp/>sd2-&gt;crypto[i].tag)</highlight></codeline>
<codeline lineno="342"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>||<sp/>(sd1-&gt;crypto[i].algo<sp/>!=<sp/>sd2-&gt;crypto[i].algo)){</highlight></codeline>
<codeline lineno="343"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result|=SAL_MEDIA_DESCRIPTION_CRYPTO_POLICY_CHANGED;</highlight></codeline>
<codeline lineno="344"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="345"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>((strncmp(sd1-&gt;crypto[i].master_key,<sp/>sd2-&gt;crypto[i].master_key,<sp/></highlight><highlight class="keyword">sizeof</highlight><highlight class="normal">(sd1-&gt;crypto[i].master_key)<sp/>-<sp/>1)))<sp/>{</highlight></codeline>
<codeline lineno="346"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>|=<sp/>SAL_MEDIA_DESCRIPTION_CRYPTO_KEYS_CHANGED;</highlight></codeline>
<codeline lineno="347"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="348"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="349"><highlight class="normal"></highlight></codeline>
<codeline lineno="350"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(sd1-&gt;type<sp/>!=<sp/>sd2-&gt;type)<sp/>result<sp/>|=<sp/>SAL_MEDIA_DESCRIPTION_CODEC_CHANGED;</highlight></codeline>
<codeline lineno="351"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(strcmp(sd1-&gt;rtp_addr,<sp/>sd2-&gt;rtp_addr)<sp/>!=<sp/>0)<sp/>result<sp/>|=<sp/>SAL_MEDIA_DESCRIPTION_NETWORK_CHANGED;</highlight></codeline>
<codeline lineno="352"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(sd1-&gt;rtp_addr[0]!=</highlight><highlight class="charliteral">&apos;\0&apos;</highlight><highlight class="normal"><sp/>&amp;&amp;<sp/>sd2-&gt;rtp_addr[0]!=</highlight><highlight class="charliteral">&apos;\0&apos;</highlight><highlight class="normal"><sp/>&amp;&amp;<sp/>ms_is_multicast(sd1-&gt;rtp_addr)<sp/>!=<sp/>ms_is_multicast(sd2-&gt;rtp_addr))</highlight></codeline>
<codeline lineno="353"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>|=<sp/>SAL_MEDIA_DESCRIPTION_NETWORK_XXXCAST_CHANGED;</highlight></codeline>
<codeline lineno="354"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(sd1-&gt;rtp_port<sp/>!=<sp/>sd2-&gt;rtp_port)<sp/>{</highlight></codeline>
<codeline lineno="355"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>((sd1-&gt;rtp_port<sp/>==<sp/>0)<sp/>||<sp/>(sd2-&gt;rtp_port<sp/>==<sp/>0))<sp/>result<sp/>|=<sp/>SAL_MEDIA_DESCRIPTION_CODEC_CHANGED;</highlight></codeline>
<codeline lineno="356"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>result<sp/>|=<sp/>SAL_MEDIA_DESCRIPTION_NETWORK_CHANGED;</highlight></codeline>
<codeline lineno="357"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="358"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(strcmp(sd1-&gt;rtcp_addr,<sp/>sd2-&gt;rtcp_addr)<sp/>!=<sp/>0)<sp/>result<sp/>|=<sp/>SAL_MEDIA_DESCRIPTION_NETWORK_CHANGED;</highlight></codeline>
<codeline lineno="359"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(sd1-&gt;rtcp_port<sp/>!=<sp/>sd2-&gt;rtcp_port)<sp/>result<sp/>|=<sp/>SAL_MEDIA_DESCRIPTION_NETWORK_CHANGED;</highlight></codeline>
<codeline lineno="360"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!payload_list_equals(sd1-&gt;payloads,<sp/>sd2-&gt;payloads))<sp/>result<sp/>|=<sp/>SAL_MEDIA_DESCRIPTION_CODEC_CHANGED;</highlight></codeline>
<codeline lineno="361"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(sd1-&gt;bandwidth<sp/>!=<sp/>sd2-&gt;bandwidth)<sp/>result<sp/>|=<sp/>SAL_MEDIA_DESCRIPTION_CODEC_CHANGED;</highlight></codeline>
<codeline lineno="362"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(sd1-&gt;ptime<sp/>!=<sp/>sd2-&gt;ptime)<sp/>result<sp/>|=<sp/>SAL_MEDIA_DESCRIPTION_CODEC_CHANGED;</highlight></codeline>
<codeline lineno="363"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(sd1-&gt;dir<sp/>!=<sp/>sd2-&gt;dir)<sp/>result<sp/>|=<sp/>SAL_MEDIA_DESCRIPTION_CODEC_CHANGED;</highlight></codeline>
<codeline lineno="364"><highlight class="normal"></highlight></codeline>
<codeline lineno="365"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>ICE<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="366"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(strcmp(sd1-&gt;ice_ufrag,<sp/>sd2-&gt;ice_ufrag)<sp/>!=<sp/>0)<sp/>result<sp/>|=<sp/>SAL_MEDIA_DESCRIPTION_ICE_RESTART_DETECTED;</highlight></codeline>
<codeline lineno="367"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(strcmp(sd1-&gt;ice_pwd,<sp/>sd2-&gt;ice_pwd)<sp/>!=<sp/>0)<sp/>result<sp/>|=<sp/>SAL_MEDIA_DESCRIPTION_ICE_RESTART_DETECTED;</highlight></codeline>
<codeline lineno="368"><highlight class="normal"></highlight></codeline>
<codeline lineno="369"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*DTLS*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="370"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(sd1-&gt;dtls_role<sp/>!=<sp/>sd2-&gt;dtls_role)<sp/>result<sp/>|=<sp/>SAL_MEDIA_DESCRIPTION_CRYPTO_KEYS_CHANGED;</highlight></codeline>
<codeline lineno="371"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(strcmp(sd1-&gt;dtls_fingerprint,<sp/>sd2-&gt;dtls_fingerprint)<sp/>!=<sp/>0)<sp/>result<sp/>|=<sp/>SAL_MEDIA_DESCRIPTION_CRYPTO_KEYS_CHANGED;</highlight></codeline>
<codeline lineno="372"><highlight class="normal"></highlight></codeline>
<codeline lineno="373"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>result;</highlight></codeline>
<codeline lineno="374"><highlight class="normal">}</highlight></codeline>
<codeline lineno="375"><highlight class="normal"></highlight></codeline>
<codeline lineno="376"><highlight class="normal"></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*<sp/>sal_media_description_print_differences(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>result){</highlight></codeline>
<codeline lineno="377"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*out<sp/>=<sp/>NULL;</highlight></codeline>
<codeline lineno="378"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(result<sp/>&amp;<sp/>SAL_MEDIA_DESCRIPTION_CODEC_CHANGED){</highlight></codeline>
<codeline lineno="379"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>out<sp/>=<sp/>ms_strcat_printf(out,<sp/></highlight><highlight class="stringliteral">&quot;%s<sp/>&quot;</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">&quot;CODEC_CHANGED&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="380"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>&amp;=<sp/>~SAL_MEDIA_DESCRIPTION_CODEC_CHANGED;</highlight></codeline>
<codeline lineno="381"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="382"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(result<sp/>&amp;<sp/>SAL_MEDIA_DESCRIPTION_NETWORK_CHANGED){</highlight></codeline>
<codeline lineno="383"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>out<sp/>=<sp/>ms_strcat_printf(out,<sp/></highlight><highlight class="stringliteral">&quot;%s<sp/>&quot;</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">&quot;NETWORK_CHANGED&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="384"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>&amp;=<sp/>~SAL_MEDIA_DESCRIPTION_NETWORK_CHANGED;</highlight></codeline>
<codeline lineno="385"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="386"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(result<sp/>&amp;<sp/>SAL_MEDIA_DESCRIPTION_ICE_RESTART_DETECTED){</highlight></codeline>
<codeline lineno="387"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>out<sp/>=<sp/>ms_strcat_printf(out,<sp/></highlight><highlight class="stringliteral">&quot;%s<sp/>&quot;</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">&quot;ICE_RESTART_DETECTED&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="388"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>&amp;=<sp/>~SAL_MEDIA_DESCRIPTION_ICE_RESTART_DETECTED;</highlight></codeline>
<codeline lineno="389"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="390"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(result<sp/>&amp;<sp/>SAL_MEDIA_DESCRIPTION_CRYPTO_KEYS_CHANGED){</highlight></codeline>
<codeline lineno="391"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>out<sp/>=<sp/>ms_strcat_printf(out,<sp/></highlight><highlight class="stringliteral">&quot;%s<sp/>&quot;</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">&quot;CRYPTO_KEYS_CHANGED&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="392"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>&amp;=<sp/>~SAL_MEDIA_DESCRIPTION_CRYPTO_KEYS_CHANGED;</highlight></codeline>
<codeline lineno="393"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="394"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(result<sp/>&amp;<sp/>SAL_MEDIA_DESCRIPTION_NETWORK_XXXCAST_CHANGED){</highlight></codeline>
<codeline lineno="395"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>out<sp/>=<sp/>ms_strcat_printf(out,<sp/></highlight><highlight class="stringliteral">&quot;%s<sp/>&quot;</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">&quot;NETWORK_XXXCAST_CHANGED&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="396"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>&amp;=<sp/>~SAL_MEDIA_DESCRIPTION_NETWORK_XXXCAST_CHANGED;</highlight></codeline>
<codeline lineno="397"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="398"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(result<sp/>&amp;<sp/>SAL_MEDIA_DESCRIPTION_STREAMS_CHANGED){</highlight></codeline>
<codeline lineno="399"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>out<sp/>=<sp/>ms_strcat_printf(out,<sp/></highlight><highlight class="stringliteral">&quot;%s<sp/>&quot;</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">&quot;STREAMS_CHANGED&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="400"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>&amp;=<sp/>~SAL_MEDIA_DESCRIPTION_STREAMS_CHANGED;</highlight></codeline>
<codeline lineno="401"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="402"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(result<sp/>&amp;<sp/>SAL_MEDIA_DESCRIPTION_CRYPTO_POLICY_CHANGED){</highlight></codeline>
<codeline lineno="403"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>out<sp/>=<sp/>ms_strcat_printf(out,<sp/></highlight><highlight class="stringliteral">&quot;%s<sp/>&quot;</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">&quot;CRYPTO_POLICY_CHANGED&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="404"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>&amp;=<sp/>~SAL_MEDIA_DESCRIPTION_CRYPTO_POLICY_CHANGED;</highlight></codeline>
<codeline lineno="405"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="406"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(result<sp/>&amp;<sp/>SAL_MEDIA_DESCRIPTION_FORCE_STREAM_RECONSTRUCTION){</highlight></codeline>
<codeline lineno="407"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>out<sp/>=<sp/>ms_strcat_printf(out,<sp/></highlight><highlight class="stringliteral">&quot;%s<sp/>&quot;</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">&quot;FORCE_STREAM_RECONSTRUCTION&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="408"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>&amp;=<sp/>~SAL_MEDIA_DESCRIPTION_FORCE_STREAM_RECONSTRUCTION;</highlight></codeline>
<codeline lineno="409"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="410"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(result){</highlight></codeline>
<codeline lineno="411"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms_fatal(</highlight><highlight class="stringliteral">&quot;There<sp/>are<sp/>unhandled<sp/>result<sp/>bitmasks<sp/>in<sp/>sal_media_description_print_differences(),<sp/>fix<sp/>it&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="412"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="413"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!out)<sp/>out<sp/>=<sp/>ms_strdup(</highlight><highlight class="stringliteral">&quot;NONE&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="414"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>out;</highlight></codeline>
<codeline lineno="415"><highlight class="normal">}</highlight></codeline>
<codeline lineno="416"><highlight class="normal"></highlight></codeline>
<codeline lineno="417"><highlight class="normal"></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>sal_media_description_equals(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalMediaDescription<sp/>*md1,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalMediaDescription<sp/>*md2)<sp/>{</highlight></codeline>
<codeline lineno="418"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>result<sp/>=<sp/>SAL_MEDIA_DESCRIPTION_UNCHANGED;</highlight></codeline>
<codeline lineno="419"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i;</highlight></codeline>
<codeline lineno="420"><highlight class="normal"></highlight></codeline>
<codeline lineno="421"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(strcmp(md1-&gt;addr,<sp/>md2-&gt;addr)<sp/>!=<sp/>0)<sp/>result<sp/>|=<sp/>SAL_MEDIA_DESCRIPTION_NETWORK_CHANGED;</highlight></codeline>
<codeline lineno="422"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(md1-&gt;addr[0]!=</highlight><highlight class="charliteral">&apos;\0&apos;</highlight><highlight class="normal"><sp/>&amp;&amp;<sp/>md2-&gt;addr[0]!=</highlight><highlight class="charliteral">&apos;\0&apos;</highlight><highlight class="normal"><sp/>&amp;&amp;<sp/>ms_is_multicast(md1-&gt;addr)<sp/>!=<sp/>ms_is_multicast(md2-&gt;addr))</highlight></codeline>
<codeline lineno="423"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>|=<sp/>SAL_MEDIA_DESCRIPTION_NETWORK_XXXCAST_CHANGED;</highlight></codeline>
<codeline lineno="424"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(md1-&gt;nb_streams<sp/>!=<sp/>md2-&gt;nb_streams)<sp/>result<sp/>|=<sp/>SAL_MEDIA_DESCRIPTION_STREAMS_CHANGED;</highlight></codeline>
<codeline lineno="425"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(md1-&gt;bandwidth<sp/>!=<sp/>md2-&gt;bandwidth)<sp/>result<sp/>|=<sp/>SAL_MEDIA_DESCRIPTION_CODEC_CHANGED;</highlight></codeline>
<codeline lineno="426"><highlight class="normal"></highlight></codeline>
<codeline lineno="427"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>ICE<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="428"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(strcmp(md1-&gt;ice_ufrag,<sp/>md2-&gt;ice_ufrag)<sp/>!=<sp/>0)<sp/>result<sp/>|=<sp/>SAL_MEDIA_DESCRIPTION_ICE_RESTART_DETECTED;</highlight></codeline>
<codeline lineno="429"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(strcmp(md1-&gt;ice_pwd,<sp/>md2-&gt;ice_pwd)<sp/>!=<sp/>0)<sp/>result<sp/>|=<sp/>SAL_MEDIA_DESCRIPTION_ICE_RESTART_DETECTED;</highlight></codeline>
<codeline lineno="430"><highlight class="normal"></highlight></codeline>
<codeline lineno="431"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal">(i<sp/>=<sp/>0;<sp/>i<sp/>&lt;<sp/>SAL_MEDIA_DESCRIPTION_MAX_STREAMS;<sp/>++i){</highlight></codeline>
<codeline lineno="432"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!sal_stream_description_active(&amp;md1-&gt;streams[i])<sp/>&amp;&amp;<sp/>!sal_stream_description_active(&amp;md2-&gt;streams[i]))<sp/></highlight><highlight class="keywordflow">continue</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="433"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>|=<sp/>sal_stream_description_equals(&amp;md1-&gt;streams[i],<sp/>&amp;md2-&gt;streams[i]);</highlight></codeline>
<codeline lineno="434"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="435"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>result;</highlight></codeline>
<codeline lineno="436"><highlight class="normal">}</highlight></codeline>
<codeline lineno="437"><highlight class="normal"></highlight></codeline>
<codeline lineno="438"><highlight class="normal"></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>assign_address(SalAddress**<sp/>address,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*value){</highlight></codeline>
<codeline lineno="439"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(*address){</highlight></codeline>
<codeline lineno="440"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sal_address_destroy(*address);</highlight></codeline>
<codeline lineno="441"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*address=NULL;</highlight></codeline>
<codeline lineno="442"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="443"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(value)</highlight></codeline>
<codeline lineno="444"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*address=sal_address_new(value);</highlight></codeline>
<codeline lineno="445"><highlight class="normal">}</highlight></codeline>
<codeline lineno="446"><highlight class="normal"></highlight></codeline>
<codeline lineno="447"><highlight class="normal"></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>assign_string(</highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>**str,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*arg){</highlight></codeline>
<codeline lineno="448"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(*str){</highlight></codeline>
<codeline lineno="449"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms_free(*str);</highlight></codeline>
<codeline lineno="450"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*str=NULL;</highlight></codeline>
<codeline lineno="451"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="452"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(arg)</highlight></codeline>
<codeline lineno="453"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*str=ms_strdup(arg);</highlight></codeline>
<codeline lineno="454"><highlight class="normal">}</highlight></codeline>
<codeline lineno="455"><highlight class="normal"></highlight></codeline>
<codeline lineno="456"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>sal_op_set_contact_address(SalOp<sp/>*op,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalAddress<sp/>*address){</highlight></codeline>
<codeline lineno="457"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(((SalOpBase*)op)-&gt;contact_address)<sp/>sal_address_destroy(((SalOpBase*)op)-&gt;contact_address);</highlight></codeline>
<codeline lineno="458"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>((SalOpBase*)op)-&gt;contact_address=address?sal_address_clone(address):NULL;</highlight></codeline>
<codeline lineno="459"><highlight class="normal">}</highlight></codeline>
<codeline lineno="460"><highlight class="normal"></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalAddress*<sp/>sal_op_get_contact_address(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalOp<sp/>*op)<sp/>{</highlight></codeline>
<codeline lineno="461"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>((SalOpBase*)op)-&gt;contact_address;</highlight></codeline>
<codeline lineno="462"><highlight class="normal">}</highlight></codeline>
<codeline lineno="463"><highlight class="normal"></highlight></codeline>
<codeline lineno="464"><highlight class="normal"></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalAddress*sal_op_get_remote_contact_address(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalOp*<sp/>op)</highlight></codeline>
<codeline lineno="465"><highlight class="normal">{</highlight></codeline>
<codeline lineno="466"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>((SalOpBase*)op)-&gt;remote_contact_address;</highlight></codeline>
<codeline lineno="467"><highlight class="normal">}</highlight></codeline>
<codeline lineno="468"><highlight class="normal"></highlight></codeline>
<codeline lineno="469"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>SET_PARAM(op,name)<sp/>\</highlight></codeline>
<codeline lineno="470"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>char*<sp/>name##_string=NULL;<sp/>\</highlight></codeline>
<codeline lineno="471"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>assign_address(&amp;((SalOpBase*)op)-&gt;name##_address,name);<sp/>\</highlight></codeline>
<codeline lineno="472"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>if<sp/>(((SalOpBase*)op)-&gt;name##_address)<sp/>{<sp/>\</highlight></codeline>
<codeline lineno="473"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>name##_string=sal_address_as_string(((SalOpBase*)op)-&gt;name##_address);<sp/>\</highlight></codeline>
<codeline lineno="474"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}\</highlight></codeline>
<codeline lineno="475"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>assign_string(&amp;((SalOpBase*)op)-&gt;name,name##_string);<sp/>\</highlight></codeline>
<codeline lineno="476"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>if(name##_string)<sp/>ms_free(name##_string);</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="477"><highlight class="normal"></highlight></codeline>
<codeline lineno="478"><highlight class="normal"></highlight></codeline>
<codeline lineno="479"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>sal_op_set_route(SalOp<sp/>*op,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*route){</highlight></codeline>
<codeline lineno="480"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/>route_string=(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*)0;</highlight></codeline>
<codeline lineno="481"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>SalOpBase*<sp/>op_base<sp/>=<sp/>(SalOpBase*)op;</highlight></codeline>
<codeline lineno="482"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(op_base-&gt;route_addresses)<sp/>{</highlight></codeline>
<codeline lineno="483"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms_list_for_each(op_base-&gt;route_addresses,(void<sp/>(*)(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*))sal_address_destroy);</highlight></codeline>
<codeline lineno="484"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>op_base-&gt;route_addresses=ms_list_free(op_base-&gt;route_addresses);</highlight></codeline>
<codeline lineno="485"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="486"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(route)<sp/>{</highlight></codeline>
<codeline lineno="487"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>op_base-&gt;route_addresses=ms_list_append(NULL,NULL);</highlight></codeline>
<codeline lineno="488"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>assign_address((SalAddress**)&amp;(op_base-&gt;route_addresses-&gt;data),route);</highlight></codeline>
<codeline lineno="489"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>route_string=sal_address_as_string((SalAddress*)op_base-&gt;route_addresses-&gt;data);<sp/>\</highlight></codeline>
<codeline lineno="490"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="491"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>assign_string(&amp;op_base-&gt;route,route_string);<sp/>\</highlight></codeline>
<codeline lineno="492"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>if(route_string)<sp/>ms_free(route_string);</highlight></codeline>
<codeline lineno="493"><highlight class="normal">}</highlight></codeline>
<codeline lineno="494"><highlight class="normal">const<sp/>MSList*<sp/>sal_op_get_route_addresses(const<sp/>SalOp<sp/>*op)<sp/>{</highlight></codeline>
<codeline lineno="495"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>((SalOpBase*)op)-&gt;route_addresses;</highlight></codeline>
<codeline lineno="496"><highlight class="normal">}</highlight></codeline>
<codeline lineno="497"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>sal_op_set_route_address(SalOp<sp/>*op,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalAddress<sp/>*address){</highlight></codeline>
<codeline lineno="498"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/>address_string=sal_address_as_string(address);<sp/></highlight><highlight class="comment">/*can<sp/>probably<sp/>be<sp/>optimized*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="499"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sal_op_set_route(op,address_string);</highlight></codeline>
<codeline lineno="500"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms_free(address_string);</highlight></codeline>
<codeline lineno="501"><highlight class="normal">}</highlight></codeline>
<codeline lineno="502"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>sal_op_add_route_address(SalOp<sp/>*op,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalAddress<sp/>*address){</highlight></codeline>
<codeline lineno="503"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>SalOpBase*<sp/>op_base<sp/>=<sp/>(SalOpBase*)op;</highlight></codeline>
<codeline lineno="504"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(op_base-&gt;route_addresses)<sp/>{</highlight></codeline>
<codeline lineno="505"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>op_base-&gt;route_addresses=ms_list_append(op_base-&gt;route_addresses,(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal">*)sal_address_clone(address));</highlight></codeline>
<codeline lineno="506"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}<sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="507"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sal_op_set_route_address(op,address);</highlight></codeline>
<codeline lineno="508"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="509"><highlight class="normal">}</highlight></codeline>
<codeline lineno="510"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>sal_op_set_realm(SalOp<sp/>*op,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*realm){</highlight></codeline>
<codeline lineno="511"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>SalOpBase*<sp/>op_base<sp/>=<sp/>(SalOpBase*)op;</highlight></codeline>
<codeline lineno="512"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(op_base-&gt;realm<sp/>!=<sp/>NULL){</highlight></codeline>
<codeline lineno="513"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms_free(op_base-&gt;realm);</highlight></codeline>
<codeline lineno="514"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="515"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>op_base-&gt;realm<sp/>=<sp/>ms_strdup(realm);</highlight></codeline>
<codeline lineno="516"><highlight class="normal">}</highlight></codeline>
<codeline lineno="517"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>sal_op_set_from(SalOp<sp/>*op,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*from){</highlight></codeline>
<codeline lineno="518"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>SET_PARAM(op,from);</highlight></codeline>
<codeline lineno="519"><highlight class="normal">}</highlight></codeline>
<codeline lineno="520"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>sal_op_set_from_address(SalOp<sp/>*op,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalAddress<sp/>*from){</highlight></codeline>
<codeline lineno="521"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/>address_string=sal_address_as_string(from);<sp/></highlight><highlight class="comment">/*can<sp/>probably<sp/>be<sp/>optimized*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="522"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sal_op_set_from(op,address_string);</highlight></codeline>
<codeline lineno="523"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms_free(address_string);</highlight></codeline>
<codeline lineno="524"><highlight class="normal">}</highlight></codeline>
<codeline lineno="525"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>sal_op_set_to(SalOp<sp/>*op,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*to){</highlight></codeline>
<codeline lineno="526"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>SET_PARAM(op,to);</highlight></codeline>
<codeline lineno="527"><highlight class="normal">}</highlight></codeline>
<codeline lineno="528"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>sal_op_set_to_address(SalOp<sp/>*op,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalAddress<sp/>*to){</highlight></codeline>
<codeline lineno="529"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/>address_string=sal_address_as_string(to);<sp/></highlight><highlight class="comment">/*can<sp/>probably<sp/>be<sp/>optimized*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="530"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sal_op_set_to(op,address_string);</highlight></codeline>
<codeline lineno="531"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms_free(address_string);</highlight></codeline>
<codeline lineno="532"><highlight class="normal">}</highlight></codeline>
<codeline lineno="533"><highlight class="normal"></highlight></codeline>
<codeline lineno="534"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>sal_op_set_user_pointer(SalOp<sp/>*op,<sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*up){</highlight></codeline>
<codeline lineno="535"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>((SalOpBase*)op)-&gt;user_pointer=up;</highlight></codeline>
<codeline lineno="536"><highlight class="normal">}</highlight></codeline>
<codeline lineno="537"><highlight class="normal"></highlight></codeline>
<codeline lineno="538"><highlight class="normal">Sal<sp/>*sal_op_get_sal(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalOp<sp/>*op){</highlight></codeline>
<codeline lineno="539"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>((SalOpBase*)op)-&gt;root;</highlight></codeline>
<codeline lineno="540"><highlight class="normal">}</highlight></codeline>
<codeline lineno="541"><highlight class="normal"></highlight></codeline>
<codeline lineno="542"><highlight class="normal"></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*sal_op_get_from(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalOp<sp/>*op){</highlight></codeline>
<codeline lineno="543"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>((SalOpBase*)op)-&gt;from;</highlight></codeline>
<codeline lineno="544"><highlight class="normal">}</highlight></codeline>
<codeline lineno="545"><highlight class="normal"></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalAddress<sp/>*sal_op_get_from_address(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalOp<sp/>*op){</highlight></codeline>
<codeline lineno="546"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>((SalOpBase*)op)-&gt;from_address;</highlight></codeline>
<codeline lineno="547"><highlight class="normal">}</highlight></codeline>
<codeline lineno="548"><highlight class="normal"></highlight></codeline>
<codeline lineno="549"><highlight class="normal"></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*sal_op_get_to(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalOp<sp/>*op){</highlight></codeline>
<codeline lineno="550"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>((SalOpBase*)op)-&gt;to;</highlight></codeline>
<codeline lineno="551"><highlight class="normal">}</highlight></codeline>
<codeline lineno="552"><highlight class="normal"></highlight></codeline>
<codeline lineno="553"><highlight class="normal"></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalAddress<sp/>*sal_op_get_to_address(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalOp<sp/>*op){</highlight></codeline>
<codeline lineno="554"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>((SalOpBase*)op)-&gt;to_address;</highlight></codeline>
<codeline lineno="555"><highlight class="normal">}</highlight></codeline>
<codeline lineno="556"><highlight class="normal"></highlight></codeline>
<codeline lineno="557"><highlight class="normal"></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*sal_op_get_route(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalOp<sp/>*op){</highlight></codeline>
<codeline lineno="558"><highlight class="normal"></highlight><highlight class="preprocessor">#ifdef<sp/>BELLE_SIP</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="559"><highlight class="normal">ms_fatal(</highlight><highlight class="stringliteral">&quot;sal_op_get_route<sp/>not<sp/>supported,<sp/>use<sp/>sal_op_get_route_addresses<sp/>instead&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="560"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="561"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>((SalOpBase*)op)-&gt;route;</highlight></codeline>
<codeline lineno="562"><highlight class="normal">}</highlight></codeline>
<codeline lineno="563"><highlight class="normal"></highlight></codeline>
<codeline lineno="564"><highlight class="normal"></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*sal_op_get_remote_ua(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalOp<sp/>*op){</highlight></codeline>
<codeline lineno="565"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>((SalOpBase*)op)-&gt;remote_ua;</highlight></codeline>
<codeline lineno="566"><highlight class="normal">}</highlight></codeline>
<codeline lineno="567"><highlight class="normal"></highlight></codeline>
<codeline lineno="568"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*sal_op_get_user_pointer(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalOp<sp/>*op){</highlight></codeline>
<codeline lineno="569"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>((SalOpBase*)op)-&gt;user_pointer;</highlight></codeline>
<codeline lineno="570"><highlight class="normal">}</highlight></codeline>
<codeline lineno="571"><highlight class="normal"></highlight></codeline>
<codeline lineno="572"><highlight class="normal"></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*sal_op_get_proxy(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalOp<sp/>*op){</highlight></codeline>
<codeline lineno="573"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>((SalOpBase*)op)-&gt;route;</highlight></codeline>
<codeline lineno="574"><highlight class="normal">}</highlight></codeline>
<codeline lineno="575"><highlight class="normal"></highlight></codeline>
<codeline lineno="576"><highlight class="normal"></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*sal_op_get_network_origin(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalOp<sp/>*op){</highlight></codeline>
<codeline lineno="577"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>((SalOpBase*)op)-&gt;origin;</highlight></codeline>
<codeline lineno="578"><highlight class="normal">}</highlight></codeline>
<codeline lineno="579"><highlight class="normal"></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/>sal_op_get_call_id(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalOp<sp/>*op)<sp/>{</highlight></codeline>
<codeline lineno="580"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><sp/>((SalOpBase*)op)-&gt;call_id;</highlight></codeline>
<codeline lineno="581"><highlight class="normal">}</highlight></codeline>
<codeline lineno="582"><highlight class="normal"></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/>sal_op_get_dialog_id(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalOp<sp/>*op)<sp/>{</highlight></codeline>
<codeline lineno="583"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(op-&gt;dialog<sp/>!=<sp/>NULL)<sp/>{</highlight></codeline>
<codeline lineno="584"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>ms_strdup_printf(</highlight><highlight class="stringliteral">&quot;%s;to-tag=%s;from-tag=%s&quot;</highlight><highlight class="normal">,<sp/>((SalOpBase*)op)-&gt;call_id,</highlight></codeline>
<codeline lineno="585"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>belle_sip_dialog_get_remote_tag(op-&gt;dialog),<sp/>belle_sip_dialog_get_local_tag(op-&gt;dialog));</highlight></codeline>
<codeline lineno="586"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="587"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>NULL;</highlight></codeline>
<codeline lineno="588"><highlight class="normal"></highlight></codeline>
<codeline lineno="589"><highlight class="normal">}</highlight></codeline>
<codeline lineno="590"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>__sal_op_init(SalOp<sp/>*b,<sp/>Sal<sp/>*sal){</highlight></codeline>
<codeline lineno="591"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>memset(b,0,</highlight><highlight class="keyword">sizeof</highlight><highlight class="normal">(SalOpBase));</highlight></codeline>
<codeline lineno="592"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>((SalOpBase*)b)-&gt;root=sal;</highlight></codeline>
<codeline lineno="593"><highlight class="normal">}</highlight></codeline>
<codeline lineno="594"><highlight class="normal"></highlight></codeline>
<codeline lineno="595"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>__sal_op_set_network_origin(SalOp<sp/>*op,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*origin){</highlight></codeline>
<codeline lineno="596"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>SET_PARAM(op,origin);</highlight></codeline>
<codeline lineno="597"><highlight class="normal">}</highlight></codeline>
<codeline lineno="598"><highlight class="normal"></highlight></codeline>
<codeline lineno="599"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>__sal_op_set_remote_contact(SalOp<sp/>*op,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/>remote_contact){</highlight></codeline>
<codeline lineno="600"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>SET_PARAM(op,remote_contact);</highlight></codeline>
<codeline lineno="601"><highlight class="normal">}</highlight></codeline>
<codeline lineno="602"><highlight class="normal"></highlight></codeline>
<codeline lineno="603"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>__sal_op_set_network_origin_address(SalOp<sp/>*op,<sp/>SalAddress<sp/>*origin){</highlight></codeline>
<codeline lineno="604"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/>address_string=sal_address_as_string(origin);<sp/></highlight><highlight class="comment">/*can<sp/>probably<sp/>be<sp/>optimized*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="605"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>__sal_op_set_network_origin(op,address_string);</highlight></codeline>
<codeline lineno="606"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms_free(address_string);</highlight></codeline>
<codeline lineno="607"><highlight class="normal">}</highlight></codeline>
<codeline lineno="608"><highlight class="normal"></highlight></codeline>
<codeline lineno="609"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>__sal_op_free(SalOp<sp/>*op){</highlight></codeline>
<codeline lineno="610"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>SalOpBase<sp/>*b=(SalOpBase<sp/>*)op;</highlight></codeline>
<codeline lineno="611"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(b-&gt;from_address){</highlight></codeline>
<codeline lineno="612"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sal_address_destroy(b-&gt;from_address);</highlight></codeline>
<codeline lineno="613"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>b-&gt;from_address=NULL;</highlight></codeline>
<codeline lineno="614"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="615"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(b-&gt;to_address){</highlight></codeline>
<codeline lineno="616"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sal_address_destroy(b-&gt;to_address);</highlight></codeline>
<codeline lineno="617"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>b-&gt;to_address=NULL;</highlight></codeline>
<codeline lineno="618"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="619"><highlight class="normal"></highlight></codeline>
<codeline lineno="620"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(b-&gt;service_route){</highlight></codeline>
<codeline lineno="621"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sal_address_destroy(b-&gt;service_route);</highlight></codeline>
<codeline lineno="622"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>b-&gt;service_route=NULL;</highlight></codeline>
<codeline lineno="623"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="624"><highlight class="normal"></highlight></codeline>
<codeline lineno="625"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(b-&gt;origin_address){</highlight></codeline>
<codeline lineno="626"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sal_address_destroy(b-&gt;origin_address);</highlight></codeline>
<codeline lineno="627"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>b-&gt;origin_address=NULL;</highlight></codeline>
<codeline lineno="628"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="629"><highlight class="normal"></highlight></codeline>
<codeline lineno="630"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(b-&gt;from)<sp/>{</highlight></codeline>
<codeline lineno="631"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms_free(b-&gt;from);</highlight></codeline>
<codeline lineno="632"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>b-&gt;from=NULL;</highlight></codeline>
<codeline lineno="633"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="634"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(b-&gt;to)<sp/>{</highlight></codeline>
<codeline lineno="635"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms_free(b-&gt;to);</highlight></codeline>
<codeline lineno="636"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>b-&gt;to=NULL;</highlight></codeline>
<codeline lineno="637"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="638"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(b-&gt;route)<sp/>{</highlight></codeline>
<codeline lineno="639"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms_free(b-&gt;route);</highlight></codeline>
<codeline lineno="640"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>b-&gt;route=NULL;</highlight></codeline>
<codeline lineno="641"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="642"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(b-&gt;realm)<sp/>{</highlight></codeline>
<codeline lineno="643"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms_free(b-&gt;realm);</highlight></codeline>
<codeline lineno="644"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>b-&gt;realm=NULL;</highlight></codeline>
<codeline lineno="645"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="646"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(b-&gt;contact_address)<sp/>{</highlight></codeline>
<codeline lineno="647"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sal_address_destroy(b-&gt;contact_address);</highlight></codeline>
<codeline lineno="648"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="649"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(b-&gt;origin){</highlight></codeline>
<codeline lineno="650"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms_free(b-&gt;origin);</highlight></codeline>
<codeline lineno="651"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>b-&gt;origin=NULL;</highlight></codeline>
<codeline lineno="652"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="653"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(b-&gt;remote_ua){</highlight></codeline>
<codeline lineno="654"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms_free(b-&gt;remote_ua);</highlight></codeline>
<codeline lineno="655"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>b-&gt;remote_ua=NULL;</highlight></codeline>
<codeline lineno="656"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="657"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(b-&gt;remote_contact){</highlight></codeline>
<codeline lineno="658"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms_free(b-&gt;remote_contact);</highlight></codeline>
<codeline lineno="659"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>b-&gt;remote_contact=NULL;</highlight></codeline>
<codeline lineno="660"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="661"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(b-&gt;remote_contact_address){</highlight></codeline>
<codeline lineno="662"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sal_address_destroy(b-&gt;remote_contact_address);</highlight></codeline>
<codeline lineno="663"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="664"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(b-&gt;local_media)</highlight></codeline>
<codeline lineno="665"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sal_media_description_unref(b-&gt;local_media);</highlight></codeline>
<codeline lineno="666"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(b-&gt;remote_media)</highlight></codeline>
<codeline lineno="667"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sal_media_description_unref(b-&gt;remote_media);</highlight></codeline>
<codeline lineno="668"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(b-&gt;call_id)</highlight></codeline>
<codeline lineno="669"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms_free((</highlight><highlight class="keywordtype">void</highlight><highlight class="normal">*)b-&gt;call_id);</highlight></codeline>
<codeline lineno="670"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(b-&gt;service_route)<sp/>{</highlight></codeline>
<codeline lineno="671"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sal_address_destroy(b-&gt;service_route);</highlight></codeline>
<codeline lineno="672"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="673"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(b-&gt;route_addresses){</highlight></codeline>
<codeline lineno="674"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms_list_for_each(b-&gt;route_addresses,(void<sp/>(*)(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal">*))<sp/>sal_address_destroy);</highlight></codeline>
<codeline lineno="675"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>b-&gt;route_addresses=ms_list_free(b-&gt;route_addresses);</highlight></codeline>
<codeline lineno="676"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="677"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(b-&gt;recv_custom_headers)</highlight></codeline>
<codeline lineno="678"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sal_custom_header_free(b-&gt;recv_custom_headers);</highlight></codeline>
<codeline lineno="679"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(b-&gt;sent_custom_headers)</highlight></codeline>
<codeline lineno="680"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sal_custom_header_free(b-&gt;sent_custom_headers);</highlight></codeline>
<codeline lineno="681"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms_free(op);</highlight></codeline>
<codeline lineno="682"><highlight class="normal">}</highlight></codeline>
<codeline lineno="683"><highlight class="normal"></highlight></codeline>
<codeline lineno="684"><highlight class="normal">SalAuthInfo*<sp/>sal_auth_info_new()<sp/>{</highlight></codeline>
<codeline lineno="685"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>ms_new0(SalAuthInfo,1);</highlight></codeline>
<codeline lineno="686"><highlight class="normal">}</highlight></codeline>
<codeline lineno="687"><highlight class="normal"></highlight></codeline>
<codeline lineno="688"><highlight class="normal">SalAuthInfo*<sp/>sal_auth_info_clone(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalAuthInfo*<sp/>auth_info)<sp/>{</highlight></codeline>
<codeline lineno="689"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>SalAuthInfo*<sp/>new_auth_info=sal_auth_info_new();</highlight></codeline>
<codeline lineno="690"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>new_auth_info-&gt;username=auth_info-&gt;username?ms_strdup(auth_info-&gt;username):NULL;</highlight></codeline>
<codeline lineno="691"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>new_auth_info-&gt;userid=auth_info-&gt;userid?ms_strdup(auth_info-&gt;userid):NULL;</highlight></codeline>
<codeline lineno="692"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>new_auth_info-&gt;realm=auth_info-&gt;realm?ms_strdup(auth_info-&gt;realm):NULL;</highlight></codeline>
<codeline lineno="693"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>new_auth_info-&gt;domain=auth_info-&gt;realm?ms_strdup(auth_info-&gt;domain):NULL;</highlight></codeline>
<codeline lineno="694"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>new_auth_info-&gt;password=auth_info-&gt;password?ms_strdup(auth_info-&gt;password):NULL;</highlight></codeline>
<codeline lineno="695"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>new_auth_info;</highlight></codeline>
<codeline lineno="696"><highlight class="normal">}</highlight></codeline>
<codeline lineno="697"><highlight class="normal"></highlight></codeline>
<codeline lineno="698"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>sal_auth_info_delete(SalAuthInfo*<sp/>auth_info)<sp/>{</highlight></codeline>
<codeline lineno="699"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(auth_info-&gt;username)<sp/>ms_free(auth_info-&gt;username);</highlight></codeline>
<codeline lineno="700"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(auth_info-&gt;userid)<sp/>ms_free(auth_info-&gt;userid);</highlight></codeline>
<codeline lineno="701"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(auth_info-&gt;realm)<sp/>ms_free(auth_info-&gt;realm);</highlight></codeline>
<codeline lineno="702"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(auth_info-&gt;domain)<sp/>ms_free(auth_info-&gt;domain);</highlight></codeline>
<codeline lineno="703"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(auth_info-&gt;password)<sp/>ms_free(auth_info-&gt;password);</highlight></codeline>
<codeline lineno="704"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(auth_info-&gt;ha1)<sp/>ms_free(auth_info-&gt;ha1);</highlight></codeline>
<codeline lineno="705"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(auth_info-&gt;certificates)<sp/>sal_certificates_chain_delete(auth_info-&gt;certificates);</highlight></codeline>
<codeline lineno="706"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(auth_info-&gt;key)<sp/>sal_signing_key_delete(auth_info-&gt;key);</highlight></codeline>
<codeline lineno="707"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms_free(auth_info);</highlight></codeline>
<codeline lineno="708"><highlight class="normal">}</highlight></codeline>
<codeline lineno="709"><highlight class="normal"></highlight></codeline>
<codeline lineno="710"><highlight class="normal"></highlight></codeline>
<codeline lineno="711"><highlight class="normal"></highlight></codeline>
<codeline lineno="712"><highlight class="normal"></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/>sal_stream_type_to_string(SalStreamType<sp/>type)<sp/>{</highlight></codeline>
<codeline lineno="713"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">switch</highlight><highlight class="normal"><sp/>(type)<sp/>{</highlight></codeline>
<codeline lineno="714"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalAudio:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;audio&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="715"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalVideo:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;video&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="716"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalText:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;text&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="717"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">default</highlight><highlight class="normal">:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;other&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="718"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="719"><highlight class="normal">}</highlight></codeline>
<codeline lineno="720"><highlight class="normal"></highlight></codeline>
<codeline lineno="721"><highlight class="normal"></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*sal_stream_description_get_type_as_string(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalStreamDescription<sp/>*desc){</highlight></codeline>
<codeline lineno="722"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(desc-&gt;type==SalOther)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>desc-&gt;typeother;</highlight></codeline>
<codeline lineno="723"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>sal_stream_type_to_string(desc-&gt;type);</highlight></codeline>
<codeline lineno="724"><highlight class="normal">}</highlight></codeline>
<codeline lineno="725"><highlight class="normal"></highlight></codeline>
<codeline lineno="726"><highlight class="normal"></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/>sal_media_proto_to_string(SalMediaProto<sp/>type)<sp/>{</highlight></codeline>
<codeline lineno="727"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">switch</highlight><highlight class="normal"><sp/>(type)<sp/>{</highlight></codeline>
<codeline lineno="728"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalProtoRtpAvp:</highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;RTP/AVP&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="729"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalProtoRtpSavp:</highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;RTP/SAVP&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="730"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalProtoUdpTlsRtpSavp:</highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;UDP/TLS/RTP/SAVP&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="731"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalProtoRtpAvpf:</highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;RTP/AVPF&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="732"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalProtoRtpSavpf:</highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;RTP/SAVPF&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="733"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalProtoUdpTlsRtpSavpf:</highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;UDP/TLS/RTP/SAVPF&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="734"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">default</highlight><highlight class="normal">:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;unknown&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="735"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="736"><highlight class="normal">}</highlight></codeline>
<codeline lineno="737"><highlight class="normal"></highlight></codeline>
<codeline lineno="738"><highlight class="normal"></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*sal_stream_description_get_proto_as_string(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalStreamDescription<sp/>*desc){</highlight></codeline>
<codeline lineno="739"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(desc-&gt;proto==SalProtoOther)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>desc-&gt;proto_other;</highlight></codeline>
<codeline lineno="740"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>sal_media_proto_to_string(desc-&gt;proto);</highlight></codeline>
<codeline lineno="741"><highlight class="normal">}</highlight></codeline>
<codeline lineno="742"><highlight class="normal"></highlight></codeline>
<codeline lineno="743"><highlight class="normal"></highlight></codeline>
<codeline lineno="744"><highlight class="normal"></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/>sal_stream_dir_to_string(SalStreamDir<sp/>type)<sp/>{</highlight></codeline>
<codeline lineno="745"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">switch</highlight><highlight class="normal"><sp/>(type)<sp/>{</highlight></codeline>
<codeline lineno="746"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalStreamSendRecv:</highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;sendrecv&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="747"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalStreamSendOnly:</highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;sendonly&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="748"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalStreamRecvOnly:</highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;recvonly&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="749"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalStreamInactive:</highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;inative&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="750"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">default</highlight><highlight class="normal">:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;unknown&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="751"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="752"><highlight class="normal"></highlight></codeline>
<codeline lineno="753"><highlight class="normal">}</highlight></codeline>
<codeline lineno="754"><highlight class="normal"></highlight></codeline>
<codeline lineno="755"><highlight class="normal"></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/>sal_reason_to_string(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalReason<sp/>reason)<sp/>{</highlight></codeline>
<codeline lineno="756"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">switch</highlight><highlight class="normal"><sp/>(reason)<sp/>{</highlight></codeline>
<codeline lineno="757"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalReasonDeclined<sp/>:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;SalReasonDeclined&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="758"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalReasonBusy:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;SalReasonBusy&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="759"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalReasonRedirect:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;SalReasonRedirect&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="760"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalReasonTemporarilyUnavailable:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;SalReasonTemporarilyUnavailable&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="761"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalReasonNotFound:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;SalReasonNotFound&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="762"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalReasonDoNotDisturb:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;SalReasonDoNotDisturb&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="763"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalReasonUnsupportedContent:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;SalReasonUnsupportedContent&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="764"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalReasonForbidden:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;SalReasonForbidden&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="765"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalReasonUnknown:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;SalReasonUnknown&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="766"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalReasonServiceUnavailable:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;SalReasonServiceUnavailable&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="767"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalReasonNotAcceptable:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;SalReasonNotAcceptable&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="768"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">default</highlight><highlight class="normal">:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;Unkown<sp/>reason&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="769"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="770"><highlight class="normal">}</highlight></codeline>
<codeline lineno="771"><highlight class="normal"></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalAddress*<sp/>sal_op_get_service_route(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalOp<sp/>*op)<sp/>{</highlight></codeline>
<codeline lineno="772"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>((SalOpBase*)op)-&gt;service_route;</highlight></codeline>
<codeline lineno="773"><highlight class="normal">}</highlight></codeline>
<codeline lineno="774"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>sal_op_set_service_route(SalOp<sp/>*op,</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalAddress*<sp/>service_route)<sp/>{</highlight></codeline>
<codeline lineno="775"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(((SalOpBase*)op)-&gt;service_route)</highlight></codeline>
<codeline lineno="776"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sal_address_destroy(((SalOpBase*)op)-&gt;service_route);</highlight></codeline>
<codeline lineno="777"><highlight class="normal"></highlight></codeline>
<codeline lineno="778"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>((SalOpBase*)op)-&gt;service_route=service_route?sal_address_clone(service_route):NULL;</highlight></codeline>
<codeline lineno="779"><highlight class="normal">}</highlight></codeline>
<codeline lineno="780"><highlight class="normal"></highlight></codeline>
<codeline lineno="781"><highlight class="normal"></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/>sal_presence_status_to_string(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalPresenceStatus<sp/>status)<sp/>{</highlight></codeline>
<codeline lineno="782"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">switch</highlight><highlight class="normal"><sp/>(status)<sp/>{</highlight></codeline>
<codeline lineno="783"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalPresenceOffline:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;SalPresenceOffline&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="784"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalPresenceOnline:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;SalPresenceOnline&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="785"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalPresenceBusy:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;SalPresenceBusy&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="786"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalPresenceBerightback:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;SalPresenceBerightback&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="787"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalPresenceAway:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;SalPresenceAway&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="788"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalPresenceOnthephone:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;SalPresenceOnthephone&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="789"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalPresenceOuttolunch:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;SalPresenceOuttolunch&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="790"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalPresenceDonotdisturb:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;SalPresenceDonotdisturb&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="791"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalPresenceMoved:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;SalPresenceMoved&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="792"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalPresenceAltService:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;SalPresenceAltService&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="793"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">default</highlight><highlight class="normal"><sp/>:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;unknown&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="794"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="795"><highlight class="normal"></highlight></codeline>
<codeline lineno="796"><highlight class="normal">}</highlight></codeline>
<codeline lineno="797"><highlight class="normal"></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/>sal_privacy_to_string(SalPrivacy<sp/>privacy)<sp/>{</highlight></codeline>
<codeline lineno="798"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">switch</highlight><highlight class="normal">(privacy)<sp/>{</highlight></codeline>
<codeline lineno="799"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalPrivacyUser:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;user&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="800"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalPrivacyHeader:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;header&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="801"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalPrivacySession:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;session&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="802"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalPrivacyId:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;id&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="803"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalPrivacyNone:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;none&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="804"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>SalPrivacyCritical:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;critical&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="805"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">default</highlight><highlight class="normal">:<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>NULL;</highlight></codeline>
<codeline lineno="806"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="807"><highlight class="normal">}</highlight></codeline>
<codeline lineno="808"><highlight class="normal"></highlight></codeline>
<codeline lineno="809"><highlight class="normal"></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>remove_trailing_spaces(</highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*line){</highlight></codeline>
<codeline lineno="810"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>i;</highlight></codeline>
<codeline lineno="811"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal">(i=strlen(line)-1;i&gt;=0;--i){</highlight></codeline>
<codeline lineno="812"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(isspace(line[i]))<sp/>line[i]=</highlight><highlight class="charliteral">&apos;\0&apos;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="813"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">break</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="814"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="815"><highlight class="normal">}</highlight></codeline>
<codeline lineno="816"><highlight class="normal"></highlight></codeline>
<codeline lineno="817"><highlight class="normal"></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>line_get_value(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*input,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*key,<sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*value,<sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>value_size,<sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>*read){</highlight></codeline>
<codeline lineno="818"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*end=strchr(input,</highlight><highlight class="charliteral">&apos;\n&apos;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="819"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>line[256]={0};</highlight></codeline>
<codeline lineno="820"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>key_candidate[256];</highlight></codeline>
<codeline lineno="821"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*equal;</highlight></codeline>
<codeline lineno="822"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>len;</highlight></codeline>
<codeline lineno="823"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!end)<sp/>len=strlen(input);</highlight></codeline>
<codeline lineno="824"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>len=end<sp/>+1<sp/>-input;</highlight></codeline>
<codeline lineno="825"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*read=len;</highlight></codeline>
<codeline lineno="826"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>strncpy(line,input,MIN(len,</highlight><highlight class="keyword">sizeof</highlight><highlight class="normal">(line)));</highlight></codeline>
<codeline lineno="827"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>equal=strchr(line,</highlight><highlight class="charliteral">&apos;=&apos;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="828"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!equal)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>FALSE;</highlight></codeline>
<codeline lineno="829"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*equal=</highlight><highlight class="charliteral">&apos;\0&apos;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="830"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(sscanf(line,</highlight><highlight class="stringliteral">&quot;%s&quot;</highlight><highlight class="normal">,key_candidate)!=1)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>FALSE;</highlight></codeline>
<codeline lineno="831"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(strcasecmp(key,key_candidate)==0){</highlight></codeline>
<codeline lineno="832"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>equal++;</highlight></codeline>
<codeline lineno="833"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>remove_trailing_spaces(equal);</highlight></codeline>
<codeline lineno="834"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>strncpy(value,equal,value_size-1);</highlight></codeline>
<codeline lineno="835"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>value[value_size-1]=</highlight><highlight class="charliteral">&apos;\0&apos;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="836"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>TRUE;</highlight></codeline>
<codeline lineno="837"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="838"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>FALSE;</highlight></codeline>
<codeline lineno="839"><highlight class="normal">}</highlight></codeline>
<codeline lineno="840"><highlight class="normal"></highlight></codeline>
<codeline lineno="841"><highlight class="normal"></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>sal_lines_get_value(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*data,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*key,<sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*value,<sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>value_size){</highlight></codeline>
<codeline lineno="842"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>read=0;</highlight></codeline>
<codeline lineno="843"><highlight class="normal"></highlight></codeline>
<codeline lineno="844"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">do</highlight><highlight class="normal">{</highlight></codeline>
<codeline lineno="845"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(line_get_value(data,key,value,value_size,&amp;read))</highlight></codeline>
<codeline lineno="846"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>TRUE;</highlight></codeline>
<codeline lineno="847"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>data+=read;</highlight></codeline>
<codeline lineno="848"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight><highlight class="keywordflow">while</highlight><highlight class="normal">(read!=0);</highlight></codeline>
<codeline lineno="849"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>FALSE;</highlight></codeline>
<codeline lineno="850"><highlight class="normal">}</highlight></codeline>
<codeline lineno="851"><highlight class="normal"></highlight></codeline>
<codeline lineno="852"><highlight class="normal"></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>sal_body_has_type(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>SalBody<sp/>*body,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*type,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*subtype){</highlight></codeline>
<codeline lineno="853"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>body-&gt;type<sp/>&amp;&amp;<sp/>body-&gt;subtype</highlight></codeline>
<codeline lineno="854"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>&amp;&amp;<sp/>strcmp(body-&gt;type,type)==0</highlight></codeline>
<codeline lineno="855"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>&amp;&amp;<sp/>strcmp(body-&gt;subtype,subtype)==0;</highlight></codeline>
<codeline lineno="856"><highlight class="normal">}</highlight></codeline>
<codeline lineno="857"><highlight class="normal"></highlight></codeline>
<codeline lineno="858"><highlight class="normal">belle_sip_stack_t<sp/>*sal_get_belle_sip_stack(Sal<sp/>*sal)<sp/>{</highlight></codeline>
<codeline lineno="859"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>sal-&gt;stack;</highlight></codeline>
<codeline lineno="860"><highlight class="normal">}</highlight></codeline>
<codeline lineno="861"><highlight class="normal"></highlight></codeline>
<codeline lineno="862"><highlight class="normal"></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/>sal_op_get_public_uri(SalOp<sp/>*op)<sp/>{</highlight></codeline>
<codeline lineno="863"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(op<sp/>&amp;&amp;<sp/>op-&gt;refresher)<sp/>{</highlight></codeline>
<codeline lineno="864"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>belle_sip_refresher_get_public_uri(op-&gt;refresher);</highlight></codeline>
<codeline lineno="865"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="866"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>NULL;</highlight></codeline>
<codeline lineno="867"><highlight class="normal">}</highlight></codeline>
    </programlisting>
    <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/sal.c"/>
  </compounddef>
</doxygen>
