From 0aec4ef713376d2cbc8ea05ecc9ef641b958642e Mon Sep 17 00:00:00 2001 From: Mark Spencer <markster@digium.com> Date: Fri, 14 Oct 2005 20:37:40 +0000 Subject: [PATCH] Fix carefulwrite and its usage within manager (bug #5355, maybe) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6792 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- manager.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/manager.c b/manager.c index 55120e9661..bd99025a2e 100755 --- a/manager.c +++ b/manager.c @@ -118,12 +118,15 @@ int ast_carefulwrite(int fd, char *s, int len, int timeoutms) if (res < 0) res = 0; len -= res; s += res; - fds[0].fd = fd; - fds[0].events = POLLOUT; - /* Wait until writable again */ - res = poll(fds, 1, timeoutms); - if (res < 1) - return -1; + res = 0; + if (len) { + fds[0].fd = fd; + fds[0].events = POLLOUT; + /* Wait until writable again */ + res = poll(fds, 1, timeoutms); + if (res < 1) + return -1; + } } return res; } @@ -1292,7 +1295,7 @@ static int process_message(struct mansession *s, struct message *m) ast_mutex_lock(&s->__lock); s->busy = 0; while(s->eventq) { - if (ast_carefulwrite(s->fd, s->eventq->eventdata, strlen(s->eventq->eventdata), s->writetimeout)) { + if (ast_carefulwrite(s->fd, s->eventq->eventdata, strlen(s->eventq->eventdata), s->writetimeout) < 0) { ret = -1; break; } -- GitLab