aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2005-10-14 20:37:40 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2005-10-14 20:37:40 +0000
commit3a74931cd7728c70ab2fe574334900d2e07dd802 (patch)
tree575ad4dd3e4c239517c277db18a1aaf30ba8ebf6
parent8dd051949d230cb322c858ec5f841e02c0ef5355 (diff)
Fix carefulwrite and its usage within manager (bug #5355, maybe)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6792 f38db490-d61c-443f-a65b-d21fe96a405b
-rwxr-xr-xmanager.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/manager.c b/manager.c
index 55120e966..bd99025a2 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;
}