X-Git-Url: http://git.dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fhtparser.c;h=a96b7b467c39bca53d962f633ad57d3a92b0e67c;hb=f2b26d44416abd494ce430659cfbbf254d9c3c55;hp=88c8e6d8330d5d0400ee9ee7f373bea5105a7beb;hpb=edad3c6ac0bf754458f386b2c540276b83e83020;p=ashd.git diff --git a/src/htparser.c b/src/htparser.c index 88c8e6d..a96b7b4 100644 --- a/src/htparser.c +++ b/src/htparser.c @@ -349,7 +349,7 @@ static void serve(struct muth *muth, va_list args) bufinit(inbuf); bufinit(outbuf); cfd = -1; - req = NULL; + req = resp = NULL; while(1) { /* * First, find and decode the header: @@ -388,7 +388,8 @@ static void serve(struct muth *muth, va_list args) headappheader(req, "X-Ash-Address", inet_ntop(AF_INET6, &((struct sockaddr_in6 *)&name)->sin6_addr, nmbuf, sizeof(nmbuf))); headappheader(req, "X-Ash-Port", sprintf3("%i", ntohs(((struct sockaddr_in6 *)&name)->sin6_port))); } - cfd = sendreq(plex, req); + if((cfd = sendreq(plex, req)) < 0) + goto out; /* * If there is message data, pass it: @@ -405,7 +406,8 @@ static void serve(struct muth *muth, va_list args) * Find and decode the response header: */ outbuf.d = 0; - headoff = readhead(cfd, &outbuf); + if((headoff = readhead(cfd, &outbuf)) < 0) + goto out; hd = memcpy(smalloc(headoff + 1), outbuf.b, headoff); hd[headoff] = 0; if((resp = parserawresp(hd)) == NULL)