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