⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 diversion_devel.sgml

📁 用来作为linux中SIP SERVER,完成VOIP网络电话中服务器的功能
💻 SGML
字号:
<!-- Module Developer's Guide --><chapter>    <chapterinfo>	<revhistory>	    <revision>		<revnumber>$Revision: 1.1 $</revnumber>		<date>$Date: 2004/11/15 13:53:55 $</date>	    </revision>	</revhistory>    </chapterinfo>    <title>Developer's Guide</title>    <para>	According to the specification new Diversion header field should be inserted as the topmost	Diversion header field in the message, that means before any other existing Diversion header	field in the message. In addition to that, <function	moreinfo="none">add_diversion</function> function can be called several times and each time	it should insert the new Diversion header field as the topmost one.    </para>    <para>	In order to implement this, add_diversion function creates the anchor in data_lump lists as	a static variable to ensure that the next call of the function will use the same anchor and	would insert new Diversion headers before the one created in the previous execution. To my	knowledge this is the only way of inserting the diversion header field before any other	created in previous runs of the function.    </para>    <para>	The anchor kept this way is only valid for a single message and we have to invalidate it	when another message is being processed. For this reason, the function also stores the id of	the message in another static variable and compares the value of that variable with the id	of the SIP message being processed. If they differ then the anchor will be invalidated and	the function creates a new one.    </para>    <para>	The following code snippet shows the code that invalidates the anchor, new anchor will be	created when the <varname>anchor</varname> variable is set to 0.    </para>    <programlisting format="linespecific">static inline int add_diversion_helper(struct sip_msg* msg, str* s){    static struct lump* anchor = 0;    static int msg_id = 0;    if (msg_id != msg->id) {        msg_id = msg->id;        anchor = 0;    }...}</programlisting></chapter><!-- Keep this element at the end of the fileLocal Variables:sgml-parent-document: ("diversion.sgml" "book" "chapter")End:-->

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -