<HTML>
<HEAD>
<TITLE>Re: [asterisk-users] Stopping chanspy followup</TITLE>
</HEAD>
<BODY>
<FONT FACE="Monaco, Courier New"><SPAN STYLE='font-size:12.0px'>Here is a patch file for my change to 1.4.23.1 code<BR>
<BR>
*** app_chanspy.c.orig &nbsp;&nbsp;&nbsp;Fri Dec 19 07:03:02 2008<BR>
--- app_chanspy.c &nbsp;&nbsp;&nbsp;Thu Feb &nbsp;5 09:53:32 2009<BR>
***************<BR>
*** 76,81 ****<BR>
--- 76,82 ----<BR>
&nbsp;&nbsp;&quot; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'Agent/1234'.\n&quot;<BR>
&nbsp;&nbsp;&quot; &nbsp;Options:\n&quot;<BR>
&nbsp;&nbsp;&quot; &nbsp;&nbsp;&nbsp;b &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- Only spy on channels involved in a bridged call.\n&quot;<BR>
+ &quot; &nbsp;&nbsp;&nbsp;e &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- Exit when no channels to spy on.\n&quot;<BR>
&nbsp;&nbsp;&quot; &nbsp;&nbsp;&nbsp;g(grp) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- Match only channels where their ${SPYGROUP} variable is set to\n&quot;<BR>
&nbsp;&nbsp;&quot; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contain 'grp' in an optional : delimited list.\n&quot;<BR>
&nbsp;&nbsp;&quot; &nbsp;&nbsp;&nbsp;q &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- Don't play a beep when beginning to spy on a channel, or speak the\n&quot;<BR>
***************<BR>
*** 104,109 ****<BR>
--- 105,111 ----<BR>
&nbsp;&nbsp;&quot; &nbsp;&nbsp;&nbsp;- Dialing * will stop spying and look for another channel to spy on.\n&quot;<BR>
&nbsp;&nbsp;&quot; &nbsp;Options:\n&quot;<BR>
&nbsp;&nbsp;&quot; &nbsp;&nbsp;&nbsp;b &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- Only spy on channels involved in a bridged call.\n&quot;<BR>
+ &quot; &nbsp;&nbsp;&nbsp;e &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- Exit when no channels to spy on.\n&quot;<BR>
&nbsp;&nbsp;&quot; &nbsp;&nbsp;&nbsp;g(grp) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- Match only channels where their ${SPYGROUP} variable is set to\n&quot;<BR>
&nbsp;&nbsp;&quot; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contain 'grp' in an optional : delimited list.\n&quot;<BR>
&nbsp;&nbsp;&quot; &nbsp;&nbsp;&nbsp;q &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- Don't play a beep when beginning to spy on a channel, or speak the\n&quot;<BR>
***************<BR>
*** 128,133 ****<BR>
--- 130,136 ----<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OPTION_RECORD &nbsp;&nbsp;&nbsp;= (1 &lt;&lt; 4),<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OPTION_WHISPER &nbsp;&nbsp;&nbsp;&nbsp;= (1 &lt;&lt; 5),<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OPTION_PRIVATE &nbsp;&nbsp;= (1 &lt;&lt; 6), &nbsp;&nbsp;&nbsp;/* Private Whisper mode */<BR>
+ &nbsp;&nbsp;&nbsp;&nbsp;OPTION_EXIT &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= (1 &lt;&lt; 7), &nbsp;&nbsp;&nbsp;/* Exit when nothing to do */<BR>
&nbsp;&nbsp;} chanspy_opt_flags;<BR>
&nbsp;&nbsp;<BR>
&nbsp;&nbsp;enum {<BR>
***************<BR>
*** 140,145 ****<BR>
--- 143,149 ----<BR>
&nbsp;&nbsp;AST_APP_OPTIONS(spy_opts, {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AST_APP_OPTION('q', OPTION_QUIET),<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AST_APP_OPTION('b', OPTION_BRIDGED),<BR>
+ &nbsp;&nbsp;&nbsp;&nbsp;AST_APP_OPTION('e', OPTION_EXIT),<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AST_APP_OPTION('w', OPTION_WHISPER),<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AST_APP_OPTION('W', OPTION_PRIVATE),<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AST_APP_OPTION_ARG('v', OPTION_VOLUME, OPT_ARG_VOLUME),<BR>
***************<BR>
*** 672,677 ****<BR>
--- 676,685 ----<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (res == -1 || ast_check_hangup(chan))<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (ast_test_flag(flags, OPTION_EXIT)) {<BR>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (! peer_chanspy_ds)<BR>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ast_clear_flag(chan, AST_FLAG_SPYING);<BR>
<BR>
-- <BR>
Jim Dickenson<BR>
<a href="mailto:dickenson@cfmc.com">mailto:dickenson@cfmc.com</a><BR>
<BR>
CfMC<BR>
<a href="http://www.cfmc.com/">http://www.cfmc.com/</a><BR>
</SPAN></FONT><SPAN STYLE='font-size:12.0px'><FONT FACE="Verdana, Helvetica, Arial"><BR>
<BR>
<BR>
<FONT COLOR="#0000FF">&gt; From: Anthony Francis &lt;anthonyf@rockynet.com&gt;<BR>
&gt; Reply-To: Asterisk Users Mailing List - Non-Commercial Discussion <BR>
&gt; &lt;asterisk-users@lists.digium.com&gt;<BR>
&gt; Date: Wed, 04 Feb 2009 16:55:25 -0700<BR>
&gt; To: Asterisk Users Mailing List - Non-Commercial Discussion <BR>
&gt; &lt;asterisk-users@lists.digium.com&gt;<BR>
&gt; Subject: Re: [asterisk-users] Stopping chanspy followup<BR>
&gt; <BR>
&gt; <BR>
&gt; Jim Dickenson wrote:<BR>
</FONT><FONT COLOR="#008000">&gt;&gt; I am still trying to figure out a reasonable way to exit the chanspy<BR>
&gt;&gt; application in a dialplan.<BR>
&gt;&gt; <BR>
&gt;&gt; For the most part I understand how things are working and there is one<BR>
&gt;&gt; change I would like to propose.<BR>
&gt;&gt; <BR>
&gt;&gt; The way the 1.4.23.1 code seems to work is that if there are no channels<BR>
&gt;&gt; that match the chanprefix argument the chanspy code stays in a loop waiting<BR>
&gt;&gt; for a new channel to come into being that matches chanprefix and spying will<BR>
&gt;&gt; start.<BR>
&gt;&gt; <BR>
&gt;&gt; I would like it if there are no channels to spy on that the chanspy<BR>
&gt;&gt; application exit.<BR>
&gt;&gt; <BR>
&gt;&gt; This can be done by changing line 673 of chanspy.c in the following way<BR>
&gt;&gt; <BR>
&gt;&gt; Old:<BR>
&gt;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (res == -1 || ast_check_hangup(chan))<BR>
&gt;&gt; <BR>
&gt;&gt; <BR>
&gt;&gt; New:<BR>
&gt;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (res == -1 || ast_check_hangup(chan) || !peer_chanspy_ds)<BR>
&gt;&gt; <BR>
&gt;&gt; Otherwise, as best I can tell, unless there is some error chanspy never<BR>
&gt;&gt; exits unless the channel running the chanspy application hangs up, which I<BR>
&gt;&gt; do not particularly want to do.<BR>
&gt;&gt; <BR>
&gt;&gt; &nbsp;&nbsp;<BR>
</FONT><FONT COLOR="#0000FF">&gt; In the interim I would recommend you make chat change and recompile.<BR>
&gt; <BR>
&gt; -- <BR>
&gt; Thank you and have any kind of day you want,<BR>
&gt; <BR>
&gt; Anthony Francis<BR>
&gt; <BR>
&gt; <BR>
&gt; <BR>
&gt; _______________________________________________<BR>
&gt; -- Bandwidth and Colocation Provided by <a href="http://www.api-digital.com">http://www.api-digital.com</a> --<BR>
&gt; <BR>
&gt; asterisk-users mailing list<BR>
&gt; To UNSUBSCRIBE or update options visit:<BR>
&gt; &nbsp;&nbsp;&nbsp;<a href="http://lists.digium.com/mailman/listinfo/asterisk-users">http://lists.digium.com/mailman/listinfo/asterisk-users</a><BR>
</FONT></FONT></SPAN>
</BODY>
</HTML>