<div>hi,Radael..</div>
<div>&nbsp;</div>
<div>This code have add to CVS ?</div>
<div>&nbsp;</div>
<div>thanks...</div>
<div><br><br>&nbsp;</div>
<div><span class="gmail_quote">On 3/5/06, <b class="gmail_sendername">Rafael Vidal Aroca</b> &lt;<a href="mailto:rafael@3wt.com.br">rafael@3wt.com.br</a>&gt; wrote:</span>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid"><br>&nbsp;&nbsp; Hi guys,<br><br>&nbsp;&nbsp; some days ago i was asking in this list how we could avoid 2 users<br>from simultaneosly connecting. Well, after some discussion, i decided to
<br>implement a general solution, that should&nbsp;&nbsp;work for other problems too.<br><br>&nbsp;&nbsp; The idea is to execute an exeternal program every time a user<br>registers or unregisters, so we can setup scripts to insert data in<br>
databases, or take some actions.<br><br>&nbsp;&nbsp; I made it for IAX2, but will implement that for SIP too, if needed.<br><br>&nbsp;&nbsp; An working example is:<br><br>&nbsp;&nbsp; Configure iax.conf<br><br>&nbsp;&nbsp; - In the section [general] add a parameter
<br>&nbsp;&nbsp; exec=/tmp/script.sh<br><br>&nbsp;&nbsp; Then, create the /tmp/script.sh<br>&nbsp;&nbsp; #!/bin/sh<br>&nbsp;&nbsp; #Sun Mar&nbsp;&nbsp;5 09:56:53 BRT 2006<br>&nbsp;&nbsp; #Rafael Aroca &lt;<a href="mailto:rafael@3wt.com.br">rafael@3wt.com.br</a>&gt;<br>&nbsp;&nbsp; #Test script executed by asterisk on registering and unregistering peers
<br><br>&nbsp;&nbsp; echo &quot;[`date`] Received from asterisk parameters $*&quot; &gt;&gt; /tmp/output<br><br>&nbsp;&nbsp; Apply the patch, compile, copy the new channel_iax2.so, and run<br>asterisk.<br><br>&nbsp;&nbsp; Everytime asterisk receives an IAX2 message of REGISTER or a clients
<br>gets UNREGISTERED, /tmp/output receives a new line. My output now after<br>some tests is:<br><br>root@gemini:/home/rafael/voip# cat /tmp/output<br>[Sun Mar&nbsp;&nbsp;5 11:03:43 BRT 2006] Received from asterisk parameters<br>register 2005
<br>[Sun Mar&nbsp;&nbsp;5 11:03:51 BRT 2006] Received from asterisk parameters<br>unregister 2004<br>[Sun Mar&nbsp;&nbsp;5 11:44:14 BRT 2006] Received from asterisk parameters<br>register 2005<br>[Sun Mar&nbsp;&nbsp;5 11:44:40 BRT 2006] Received from asterisk parameters
<br>register 2005<br>[Sun Mar&nbsp;&nbsp;5 11:45:14 BRT 2006] Received from asterisk parameters<br>register 2005<br>[Sun Mar&nbsp;&nbsp;5 11:45:40 BRT 2006] Received from asterisk parameters<br>register 2005<br>[Sun Mar&nbsp;&nbsp;5 11:46:14 BRT 2006] Received from asterisk parameters
<br>register 2005<br>[Sun Mar&nbsp;&nbsp;5 11:47:24 BRT 2006] Received from asterisk parameters<br>unregister 2005<br><br><br>&nbsp;&nbsp; Based on that, we can connect to database, or do some other<br>interesting actions.<br><br>&nbsp;&nbsp; The patch for this feature follows attached. By the way, would it be
<br>possible (if my code is safe and verified by someone else) to add this<br>to asterisk SVN?<br><br>thanks<br><br>[] Rafael.<br><br><br><br><br><br><br><br><br><br>--- asterisk-1.2.4/channels/chan_iax2.c 2006-01-19 23:00:
46.000000000 -0200<br>+++ asterisk-1.2.4-tmp/channels/chan_iax2.c&nbsp;&nbsp;&nbsp;&nbsp; 2006-03-05 10:55:58.000000000 -0300<br>@@ -145,6 +145,7 @@<br><br>static char language[MAX_LANGUAGE] = &quot;&quot;;<br>static char regcontext[AST_MAX_CONTEXT] = &quot;&quot;;
<br>+static char execOnRegister[100] = &quot;&quot;;<br><br>static int max_retries = 4;<br>static int ping_time = 20;<br>@@ -5552,8 +5553,31 @@<br>static int expire_registry(void *data)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct iax2_peer *p = data;
<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int res_fork, res_exec;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ast_log(LOG_DEBUG, &quot;Expiring registration for peer '%s'\n&quot;, p-&gt;name);<br>+<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; res_fork = fork();<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (res_fork &lt; 0) {<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ast_log(LOG_NOTICE, &quot;Could not fork&quot;);
<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>+<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (res_fork == 0) {<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Example: works fine<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //res_exec = execlp(&quot;ls&quot;, &quot;ls&quot;, &quot;-la&quot;, NULL);<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; res_exec = execlp(execOnRegister, execOnRegister, &quot;unregister&quot;, p-&gt;name, NULL);
<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; res_exec = -1;<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>+<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (res_exec &lt; 0) {<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ast_log(LOG_NOTICE, &quot;Could not exec %s&quot;, execOnRegister);
<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ast_log(LOG_NOTICE, &quot;Process spawned with PID %d&quot;, res_fork);<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>+<br>+<br>+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Reset the address */
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memset(&amp;p-&gt;addr, 0, sizeof(p-&gt;addr));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Reset expire notice */<br>@@ -5626,6 +5650,7 @@<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char data[80];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char iabuf[INET_ADDRSTRLEN];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int version;<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int res_fork, res_exec;
<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memset(&amp;ied, 0, sizeof(ied));<br><br>@@ -5645,9 +5670,33 @@<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; snprintf(data, sizeof(data), &quot;%s:%d:%d&quot;, ast_inet_ntoa(iabuf, sizeof(iabuf), sin-&gt;sin_addr), ntohs(sin-&gt;sin_port), p-&gt;expiry);
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!ast_test_flag(p, IAX_TEMPONLY) &amp;&amp; sin-&gt;sin_addr.s_addr) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ast_db_put(&quot;IAX/Registry&quot;, p-&gt;name, data);<br>+<br>+<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ast_log(LOG_NOTICE, &quot;Running %s for peer '%s'\n&quot;, execOnRegister, p-&gt;name);
<br>+<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; res_fork = fork();<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (res_fork &lt; 0) {<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ast_log(LOG_NOTICE, &quot;Could not fork&quot;);<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>+<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (res_fork == 0) {<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Example: works fine<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //res_exec = execlp(&quot;ls&quot;, &quot;ls&quot;, &quot;-la&quot;, NULL);<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; res_exec = execlp(execOnRegister, execOnRegister, &quot;register&quot;, p-&gt;name, NULL);
<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; res_exec = -1;<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>+<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (res_exec &lt; 0) {<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ast_log(LOG_NOTICE, &quot;Could not exec %s&quot;, execOnRegister);
<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ast_log(LOG_NOTICE, &quot;Process spawned with PID %d&quot;, res_fork);<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp;&nbsp;(option_verbose &gt; 2)
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ast_verbose(VERBOSE_PREFIX_3 &quot;Registered IAX2 '%s' (%s) at %s:%d\n&quot;, p-&gt;name,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ast_test_flag(&amp;iaxs[callno]-&gt;state, IAX_STATE_AUTHENTICATED) ? &quot;AUTHENTICATED&quot; : &quot;UNAUTHENTICATED&quot;, ast_inet_ntoa(iabuf, sizeof(iabuf), sin-&gt;sin_addr), ntohs(sin-&gt;sin_port));
<br>+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; manager_event(EVENT_FLAG_SYSTEM, &quot;PeerStatus&quot;, &quot;Peer: IAX2/%s\r\nPeerStatus: Registered\r\n&quot;, p-&gt;name);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; register_peer_exten(p, 1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ast_device_state_changed(&quot;IAX2/%s&quot;, p-&gt;name); /* Activate notification */
<br>@@ -8624,6 +8673,8 @@<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; portno = atoi(v-&gt;value);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else if (!strcasecmp(v-&gt;name, &quot;pingtime&quot;))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ping_time = atoi(v-&gt;value);<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (!strcasecmp(v-&gt;name, &quot;exec&quot;))<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ast_copy_string(execOnRegister, v-&gt;value, sizeof(execOnRegister));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (!strcasecmp(v-&gt;name, &quot;nochecksums&quot;)) {
<br>#ifdef SO_NO_CHECK<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (ast_true(v-&gt;value))<br><br><br>_______________________________________________<br>--Bandwidth and Colocation provided by <a href="http://Easynews.com">Easynews.com</a>
 --<br><br>asterisk-dev mailing list<br>To UNSUBSCRIBE or update options visit:<br>&nbsp;&nbsp;<a href="http://lists.digium.com/mailman/listinfo/asterisk-dev">http://lists.digium.com/mailman/listinfo/asterisk-dev</a><br><br><br></blockquote>
</div><br><br clear="all"><br>-- <br>Jeffery<br><br>iaxtel Num: 1-700-576-1311<br>fwdnet Num: 728150