diff options
| author | Garrett D'Amore <garrett@damore.org> | 2018-09-12 12:48:13 -0700 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2018-09-12 12:51:31 -0700 |
| commit | 0863d12e2b5173efeb074cbc9fa05f26274f126b (patch) | |
| tree | 2b4b137aa4d85d681fe0bc5118a22155cb691536 /src/supplemental/http/http_msg.c | |
| parent | 5f73996bf368e7f5d7249679c738a87873cb340d (diff) | |
| download | nng-0863d12e2b5173efeb074cbc9fa05f26274f126b.tar.gz nng-0863d12e2b5173efeb074cbc9fa05f26274f126b.tar.bz2 nng-0863d12e2b5173efeb074cbc9fa05f26274f126b.zip | |
fixes #717 need nng_http_req_reset and nng_http_res_reset
fixes #718 http_transact is still not right
fixes #719 calculation of buffer size is incorrect in http
Diffstat (limited to 'src/supplemental/http/http_msg.c')
| -rw-r--r-- | src/supplemental/http/http_msg.c | 25 |
1 files changed, 10 insertions, 15 deletions
diff --git a/src/supplemental/http/http_msg.c b/src/supplemental/http/http_msg.c index 1a651352..6d7e9f8a 100644 --- a/src/supplemental/http/http_msg.c +++ b/src/supplemental/http/http_msg.c @@ -103,9 +103,9 @@ nni_http_req_reset(nni_http_req *req) nni_strfree(req->meth); nni_strfree(req->uri); req->vers = req->meth = req->uri = NULL; - if (req->bufsz) { - req->buf[0] = '\0'; - } + nni_free(req->buf, req->bufsz); + req->bufsz = 0; + req->buf = NULL; req->parsed = false; } @@ -120,18 +120,15 @@ nni_http_res_reset(nni_http_res *res) res->rsn = NULL; res->code = 0; res->parsed = false; - if (res->bufsz) { - res->buf[0] = '\0'; - } + nni_free(res->buf, res->bufsz); + res->buf = NULL; + res->bufsz = 0; } void nni_http_req_free(nni_http_req *req) { nni_http_req_reset(req); - if (req->bufsz) { - nni_free(req->buf, req->bufsz); - } NNI_FREE_STRUCT(req); } @@ -139,9 +136,6 @@ void nni_http_res_free(nni_http_res *res) { nni_http_res_reset(res); - if (res->bufsz) { - nni_free(res->buf, res->bufsz); - } NNI_FREE_STRUCT(res); } @@ -490,7 +484,7 @@ http_asprintf(char **bufp, size_t *szp, nni_list *hdrs, const char *fmt, ...) va_end(ap); len += http_sprintf_headers(NULL, 0, hdrs); - len += 5; // \r\n\r\n\0 + len += 3; // \r\n\0 if (len <= *szp) { buf = *bufp; @@ -511,6 +505,7 @@ http_asprintf(char **bufp, size_t *szp, nni_list *hdrs, const char *fmt, ...) buf += n; len -= n; snprintf(buf, len, "\r\n"); + NNI_ASSERT(len == 3); return (0); } @@ -572,7 +567,7 @@ nni_http_req_get_buf(nni_http_req *req, void **data, size_t *szp) return (rv); } *data = req->buf; - *szp = strlen(req->buf); + *szp = req->bufsz - 1; // exclude terminating NUL return (0); } @@ -585,7 +580,7 @@ nni_http_res_get_buf(nni_http_res *res, void **data, size_t *szp) return (rv); } *data = res->buf; - *szp = strlen(res->buf); + *szp = res->bufsz - 1; // exclude terminating NUL return (0); } |
