From 41ab9c501517804eadbd65987059a17ceef7af80 Mon Sep 17 00:00:00 2001
From: Russell Bryant <russell@russellbryant.com>
Date: Sat, 22 Jul 2006 00:08:21 +0000
Subject: [PATCH] remove an XXX comment and document that
 ast_autoservice_start() will return -1 if the channel is already in the
 autoservice list.

Why is this a valid case to return -1, you ask?  Well, there should never be
any code where it is not clear if the channel is in autoservice or not because
trying to read frames from a channel that is in the autoservice list will lead
to bad results because more than one thread will be waiting on frames to arrive
on the channel and then trying to read them.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@38076 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 autoservice.c              |  1 -
 include/asterisk/channel.h | 14 ++++++++++++--
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/autoservice.c b/autoservice.c
index c0adc7f2b2..51a1e1ca67 100644
--- a/autoservice.c
+++ b/autoservice.c
@@ -104,7 +104,6 @@ int ast_autoservice_start(struct ast_channel *chan)
 		if (as->chan == chan)
 			break;
 	}
-	/* XXX if found, we return -1, why ??? */
 
 	/* If not, start autoservice on channel */
 	if (!as && (as = ast_calloc(1, sizeof(*as)))) {
diff --git a/include/asterisk/channel.h b/include/asterisk/channel.h
index 3d842bbe36..d3d5862adf 100644
--- a/include/asterisk/channel.h
+++ b/include/asterisk/channel.h
@@ -1060,10 +1060,20 @@ void ast_tonepair_stop(struct ast_channel *chan);
 /*! Play a tone pair for a given amount of time */
 int ast_tonepair(struct ast_channel *chan, int freq1, int freq2, int duration, int vol);
 
-/*! Automatically service a channel for us... */
+/*!
+ * \brief Automatically service a channel for us... 
+ *
+ * \retval 0 success
+ * \retval -1 failure, or the channel is already being autoserviced
+ */
 int ast_autoservice_start(struct ast_channel *chan);
 
-/*! Stop servicing a channel for us...  Returns -1 on error or if channel has been hungup */
+/*! 
+ * \brief Stop servicing a channel for us...  
+ *
+ * \retval 0 success
+ * \retval -1 error, or the channel has been hungup 
+ */
 int ast_autoservice_stop(struct ast_channel *chan);
 
 /* If built with zaptel optimizations, force a scheduled expiration on the
-- 
GitLab