diff options
Diffstat (limited to 'src/http.c')
-rw-r--r-- | src/http.c | 14 |
1 files changed, 7 insertions, 7 deletions
@@ -12,10 +12,6 @@ int ParseHTTPInput(char *buf, struct message *m) { char *n, *v; - /* initialize message block - memset(m, 0, sizeof (struct message) ); - */ - n = buf; while ( (v = strstr(n, "=")) ) { v += 1; @@ -66,15 +62,18 @@ int _read(struct mansession *s, struct message *m) { char line[MAX_LEN], method[10], formdata[MAX_LEN], header[MAX_LEN]; int res, clength = 0; - if (s->dead) - return -1; - memset(method, 0, sizeof method); memset(formdata, 0, sizeof formdata); memset(header, 0, sizeof header); /* for http, don't do get_input forever */ for (;;) { + + if (s->inputcomplete && !s->outputcomplete) + continue; + else if (s->inputcomplete && s->outputcomplete) + return -1; + memset(line, 0, sizeof line); res = get_input(s, line); debugmsg("res=%d, line: %s",res, line); @@ -107,6 +106,7 @@ int _read(struct mansession *s, struct message *m) { BuildHTTPHeader(header); pthread_mutex_lock(&s->lock); + s->inputcomplete = 1; ast_carefulwrite(s->fd, header, strlen(header), s->writetimeout); pthread_mutex_unlock(&s->lock); debugmsg("header: %s", header); |