[asterisk-commits] dbailey: branch 1.4 r82887 - /branches/1.4/main/manager.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Tue Sep 18 16:10:15 CDT 2007


Author: dbailey
Date: Tue Sep 18 16:10:14 2007
New Revision: 82887

URL: http://svn.digium.com/view/asterisk?view=rev&rev=82887
Log:
Fixed a bug where http manager sessions prevented the eventq from being cleaned out because http manager sessions do not have a valid file descriptor.

Modified:
    branches/1.4/main/manager.c

Modified: branches/1.4/main/manager.c
URL: http://svn.digium.com/view/asterisk/branches/1.4/main/manager.c?view=diff&rev=82887&r1=82886&r2=82887
==============================================================================
--- branches/1.4/main/manager.c (original)
+++ branches/1.4/main/manager.c Tue Sep 18 16:10:14 2007
@@ -1976,19 +1976,25 @@
 	struct eventqent *eqe;
 	int ret = 0;
 	ast_mutex_lock(&s->__lock);
-	if (s->fd > -1) {
-		if (!s->eventq)
-			s->eventq = master_eventq;
-		while(s->eventq->next) {
-			eqe = s->eventq->next;
-			if ((s->authenticated && (s->readperm & eqe->category) == eqe->category) &&
-			    ((s->send_events & eqe->category) == eqe->category)) {
+	if (!s->eventq)
+		s->eventq = master_eventq;
+	while(s->eventq->next) {
+		eqe = s->eventq->next;
+		if ((s->authenticated && (s->readperm & eqe->category) == eqe->category) &&
+				   ((s->send_events & eqe->category) == eqe->category)) {
+			if (s->fd > -1) {
 				if (!ret && ast_carefulwrite(s->fd, eqe->eventdata, strlen(eqe->eventdata), s->writetimeout) < 0)
 					ret = -1;
+			} else {
+				if (!s->outputstr && !(s->outputstr = ast_calloc(1, sizeof(*s->outputstr)))) {
+					ast_mutex_unlock(&s->__lock);
+					return;
+				}
+				ast_dynamic_str_append(&s->outputstr, 0, "%s", buf->str);
 			}
-			unuse_eventqent(s->eventq);
-			s->eventq = eqe;
-		}
+				   }
+				   unuse_eventqent(s->eventq);
+				   s->eventq = eqe;
 	}
 	ast_mutex_unlock(&s->__lock);
 	return ret;




More information about the asterisk-commits mailing list