]> granicus.if.org Git - libevent/commitdiff
fix handling of chunked requests
authorNiels Provos <provos@gmail.com>
Wed, 14 Feb 2007 16:59:47 +0000 (16:59 +0000)
committerNiels Provos <provos@gmail.com>
Wed, 14 Feb 2007 16:59:47 +0000 (16:59 +0000)
svn:r328

buffer.c
event.h
http.c

index fe384753e724ebb3f1fc86423179666bb3164cde..77efd0cfa3e207d76d28fc49cea55a3fd605d6f9 100644 (file)
--- a/buffer.c
+++ b/buffer.c
@@ -291,7 +291,7 @@ evbuffer_expand(struct evbuffer *buf, size_t datlen)
 }
 
 int
-evbuffer_add(struct evbuffer *buf, void *data, size_t datlen)
+evbuffer_add(struct evbuffer *buf, const void *data, size_t datlen)
 {
        size_t need = buf->misalign + buf->off + datlen;
        size_t oldoff = buf->off;
diff --git a/event.h b/event.h
index 4bdfb49bdc109b91abc023b64a603df79a761d2b..65741d42e4affedc0361794d48778908e6e729c0 100644 (file)
--- a/event.h
+++ b/event.h
@@ -279,7 +279,7 @@ void bufferevent_settimeout(struct bufferevent *bufev,
 struct evbuffer *evbuffer_new(void);
 void evbuffer_free(struct evbuffer *);
 int evbuffer_expand(struct evbuffer *, size_t);
-int evbuffer_add(struct evbuffer *, void *, size_t);
+int evbuffer_add(struct evbuffer *, const void *, size_t);
 int evbuffer_remove(struct evbuffer *, void *, size_t);
 char *evbuffer_readline(struct evbuffer *);
 int evbuffer_add_buffer(struct evbuffer *, struct evbuffer *);
diff --git a/http.c b/http.c
index 281434cc23eebbb9a575ec163a96fc0d7678c262..aa66889bcf4030972e0cd7651933f0b78fb10879 100644 (file)
--- a/http.c
+++ b/http.c
@@ -635,7 +635,7 @@ evhttp_handle_chunked_read(struct evhttp_request *req, struct evbuffer *buf)
                        if (strlen(p) == 0)
                                continue;
                        req->ntoread = strtol(p, &endp, 16);
-                       error = *p == '\0' || *endp != '\0';
+                       error = *p == '\0' || (*endp != '\0' && *endp != ' ');
                        free(p);
                        if (error) {
                                /* could not get chunk size */