[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[Libevent-users] some trivial patches
- To: libevent-users@xxxxxxxxxxxxx
- Subject: [Libevent-users] some trivial patches
- From: Mansour Moufid <mansourmoufid@xxxxxxxxx>
- Date: Fri, 27 May 2011 23:57:45 -0400
- Delivered-to: archiver@xxxxxxxx
- Delivered-to: libevent-users-outgoing@xxxxxxxx
- Delivered-to: libevent-users@xxxxxxxx
- Delivery-date: Fri, 27 May 2011 23:58:13 -0400
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:from:date:message-id:subject:to :content-type; bh=pWLa44oCRzOrDam23lTo+faZpsZI9n/OO0JDVlX8llg=; b=PQh9GqDs5oM4uDR1ogFra854C7wUdgqN6VTnm8T+J7lWqpNzSGhRtZT0Iq3kGbqQ2F HyR0na+VQKQTSXd2RxOdxCb5nrAjG1jOy0GCXSriD7Zk2vpruN9ndvMowyl4GnjeglSS NSiuuEPFJSlsBzxtJmRiVfSyewDDJ2qh6zdsY=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:from:date:message-id:subject:to:content-type; b=FcMGKjG55F4qiBEYHVCiAua3BQGHpFs3MrtTIn5/S/TZzseavfBgAGIs1porc9l7Bt ok8q6QAQnLqpXnmhNOUFBjjr8qK4+MqYjkXbbIiFHol3T4bRnIlaG6eAb1MVW5WJ1sej hDuPVT3HSHwYzvIWxFd2GWnovdsUrWvADBuaU=
- Reply-to: libevent-users@xxxxxxxxxxxxx
- Sender: owner-libevent-users@xxxxxxxxxxxxx
Changes to the evhttp_connection_set_max_* functions in `http.c'.
Changes to the evhttp_set_max_* functions in `http.c'.
Check if the `evhttp_new_object' function in `http.c' returns NULL.
Changes to the `evhttp_maybe_add_content_length_header' function in
`http.c'.
Correct some `evbuffer_get_length' signedness typos in `http.c'.
http.c | 70 ++++++++++++++++++++++++------------------------
include/event2/http.h | 8 +++---
2 files changed, 39 insertions(+), 39 deletions(-)
Compiles and passes `regress', but not tested otherwise.
PS: Is it best to post to the list or the tracker?
From fb6efc292ce3bc574ce37281f4d7c41aafc95013 Mon Sep 17 00:00:00 2001
From: Mansour Moufid <mansourmoufid@xxxxxxxxx>
Date: Fri, 27 May 2011 18:06:35 -0400
Subject: [PATCH 1/5] Changes to the evhttp_connection_set_max_* functions in `http.c'.
The `max_headers_size' element of an `evhttp_connection' struct is
defined as type size_t in `http-internal.h'.
The `evhttp_connection_set_max_headers_size' function parameter
`new_max_headers_size' was of type ev_ssize_t; this function then
checked for negative values, in which case it assigned a value of
EV_SIZE_MAX. Just set it directly. (If anything, check for zero.)
The `max_body_size' element of an `evhttp_connection' struct is
defined as type ev_uint64_t in `http-internal.h'.
The `evhttp_connection_set_max_body_size' function parameter
`new_max_body_size' was of type ev_ssize_t; this function then
checked for negative values, in which case it assigned a value of
EV_UINT64_MAX. Again, check for zero and assign directly.
Then use:
if (n > EV_SIZE_MAX)
n = EV_SIZE_MAX;
evhttp_connection_set_max_headers_size(foo, n);
if (n > EV_UINT64_MAX)
n = EV_UINT64_MAX;
evhttp_connection_set_max_body_size(foo, n);
But these functions aren't used anywhere I can see...
---
http.c | 17 +++++++----------
include/event2/http.h | 4 ++--
2 files changed, 9 insertions(+), 12 deletions(-)
diff --git a/http.c b/http.c
index fed40c3..87c554d 100644
--- a/http.c
+++ b/http.c
@@ -625,21 +625,18 @@ evhttp_make_header(struct evhttp_connection *evcon, struct evhttp_request *req)
void
evhttp_connection_set_max_headers_size(struct evhttp_connection *evcon,
- ev_ssize_t new_max_headers_size)
+ size_t new_max_headers_size)
{
- if (new_max_headers_size<0)
- evcon->max_headers_size = EV_SIZE_MAX;
- else
- evcon->max_headers_size = new_max_headers_size;
+ EVUTIL_ASSERT(new_max_headers_size != 0);
+ evcon->max_headers_size = new_max_headers_size;
}
+
void
evhttp_connection_set_max_body_size(struct evhttp_connection* evcon,
- ev_ssize_t new_max_body_size)
+ ev_uint64_t new_max_body_size)
{
- if (new_max_body_size<0)
- evcon->max_body_size = EV_UINT64_MAX;
- else
- evcon->max_body_size = new_max_body_size;
+ EVUTIL_ASSERT(new_max_body_size != 0);
+ evcon->max_body_size = new_max_body_size;
}
static int
diff --git a/include/event2/http.h b/include/event2/http.h
index 793e2b8..aab0bf4 100644
--- a/include/event2/http.h
+++ b/include/event2/http.h
@@ -460,10 +460,10 @@ struct evhttp_connection *evhttp_request_get_connection(struct evhttp_request *r
struct event_base *evhttp_connection_get_base(struct evhttp_connection *req);
void evhttp_connection_set_max_headers_size(struct evhttp_connection *evcon,
- ev_ssize_t new_max_headers_size);
+ size_t new_max_headers_size);
void evhttp_connection_set_max_body_size(struct evhttp_connection* evcon,
- ev_ssize_t new_max_body_size);
+ ev_uint64_t new_max_body_size);
/** Frees an http connection */
void evhttp_connection_free(struct evhttp_connection *evcon);
--
1.7.1
From 0bc56b3d4132dd4920685b0d17bf86fc979bc4a0 Mon Sep 17 00:00:00 2001
From: Mansour Moufid <mansourmoufid@xxxxxxxxx>
Date: Fri, 27 May 2011 18:35:28 -0400
Subject: [PATCH 2/5] Changes to the evhttp_set_max_* functions in `http.c'.
Modify the `evhttp_set_max_headers_size' and `evhttp_set_max_body_size'
functions, similarly to the previous commit.
---
http.c | 18 +++++++-----------
include/event2/http.h | 4 ++--
2 files changed, 9 insertions(+), 13 deletions(-)
diff --git a/http.c b/http.c
index 87c554d..9100263 100644
--- a/http.c
+++ b/http.c
@@ -3252,7 +3252,7 @@ evhttp_new_object(void)
evutil_timerclear(&http->timeout);
evhttp_set_max_headers_size(http, EV_SIZE_MAX);
- evhttp_set_max_body_size(http, EV_SIZE_MAX);
+ evhttp_set_max_body_size(http, EV_UINT64_MAX);
evhttp_set_allowed_methods(http,
EVHTTP_REQ_GET |
EVHTTP_REQ_POST |
@@ -3436,21 +3436,17 @@ evhttp_set_timeout_tv(struct evhttp* http, const struct timeval* tv)
}
void
-evhttp_set_max_headers_size(struct evhttp* http, ev_ssize_t max_headers_size)
+evhttp_set_max_headers_size(struct evhttp* http, size_t max_headers_size)
{
- if (max_headers_size < 0)
- http->default_max_headers_size = EV_SIZE_MAX;
- else
- http->default_max_headers_size = max_headers_size;
+ EVUTIL_ASSERT(max_headers_size != 0);
+ http->default_max_headers_size = max_headers_size;
}
void
-evhttp_set_max_body_size(struct evhttp* http, ev_ssize_t max_body_size)
+evhttp_set_max_body_size(struct evhttp* http, ev_uint64_t max_body_size)
{
- if (max_body_size < 0)
- http->default_max_body_size = EV_UINT64_MAX;
- else
- http->default_max_body_size = max_body_size;
+ EVUTIL_ASSERT(max_body_size != 0);
+ http->default_max_body_size = max_body_size;
}
void
diff --git a/include/event2/http.h b/include/event2/http.h
index aab0bf4..5d73670 100644
--- a/include/event2/http.h
+++ b/include/event2/http.h
@@ -187,9 +187,9 @@ evutil_socket_t evhttp_bound_socket_get_fd(struct evhttp_bound_socket *bound_soc
void evhttp_free(struct evhttp* http);
/** XXX Document. */
-void evhttp_set_max_headers_size(struct evhttp* http, ev_ssize_t max_headers_size);
+void evhttp_set_max_headers_size(struct evhttp* http, size_t max_headers_size);
/** XXX Document. */
-void evhttp_set_max_body_size(struct evhttp* http, ev_ssize_t max_body_size);
+void evhttp_set_max_body_size(struct evhttp* http, ev_uint64_t max_body_size);
/**
Sets the what HTTP methods are supported in requests accepted by this
--
1.7.1
From 3bbd975af7b04832f503b8cd499739b4f77f6f60 Mon Sep 17 00:00:00 2001
From: Mansour Moufid <mansourmoufid@xxxxxxxxx>
Date: Fri, 27 May 2011 18:40:31 -0400
Subject: [PATCH 3/5] Check if the `evhttp_new_object' function in `http.c' returns NULL.
---
http.c | 10 ++++++++--
1 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/http.c b/http.c
index 9100263..2f6e50a 100644
--- a/http.c
+++ b/http.c
@@ -3272,8 +3272,11 @@ evhttp_new_object(void)
struct evhttp *
evhttp_new(struct event_base *base)
{
- struct evhttp *http = evhttp_new_object();
+ struct evhttp *http = NULL;
+ http = evhttp_new_object();
+ if (http == NULL)
+ return (NULL);
http->base = base;
return (http);
@@ -3286,8 +3289,11 @@ evhttp_new(struct event_base *base)
struct evhttp *
evhttp_start(const char *address, unsigned short port)
{
- struct evhttp *http = evhttp_new_object();
+ struct evhttp *http = NULL;
+ http = evhttp_new_object();
+ if (http == NULL)
+ return (NULL);
if (evhttp_bind_socket(http, address, port) == -1) {
mm_free(http);
return (NULL);
--
1.7.1
From 850e17aa2956400dc1dd7c0878240e28be2797ba Mon Sep 17 00:00:00 2001
From: Mansour Moufid <mansourmoufid@xxxxxxxxx>
Date: Fri, 27 May 2011 18:45:57 -0400
Subject: [PATCH 4/5] Changes to the `evhttp_maybe_add_content_length_header' function in `http.c'.
Change the `content_length' parameter of the
`evhttp_maybe_add_content_length_header' function to type size_t.
This function is only used in the `evhttp_make_header_response'
function, which correctly passes it a size_t value
(evbuffer_get_length returns size_t; cf `include/event2/buffer.h').
---
http.c | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/http.c b/http.c
index 2f6e50a..52ba574 100644
--- a/http.c
+++ b/http.c
@@ -519,12 +519,13 @@ evhttp_maybe_add_date_header(struct evkeyvalq *headers)
* unless it already has a content-length or transfer-encoding header. */
static void
evhttp_maybe_add_content_length_header(struct evkeyvalq *headers,
- long content_length) /* XXX use size_t or int64, not long. */
+ size_t content_length)
{
if (evhttp_find_header(headers, "Transfer-Encoding") == NULL &&
evhttp_find_header(headers, "Content-Length") == NULL) {
char len[22];
- evutil_snprintf(len, sizeof(len), "%ld", content_length);
+ evutil_snprintf(len, sizeof(len), "%lu",
+ (unsigned long)content_length);
evhttp_add_header(headers, "Content-Length", len);
}
}
@@ -564,7 +565,7 @@ evhttp_make_header_response(struct evhttp_connection *evcon,
*/
evhttp_maybe_add_content_length_header(
req->output_headers,
- (long)evbuffer_get_length(req->output_buffer));
+ evbuffer_get_length(req->output_buffer));
}
}
--
1.7.1
From 16ad306c3bbb6d7949b1179b2e1f0c0924956df4 Mon Sep 17 00:00:00 2001
From: Mansour Moufid <mansourmoufid@xxxxxxxxx>
Date: Fri, 27 May 2011 18:55:37 -0400
Subject: [PATCH 5/5] Correct some `evbuffer_get_length' signedness typos in `http.c'.
---
http.c | 18 +++++++++---------
1 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/http.c b/http.c
index 52ba574..8fde01a 100644
--- a/http.c
+++ b/http.c
@@ -460,8 +460,8 @@ evhttp_make_header_request(struct evhttp_connection *evcon,
if ((req->type == EVHTTP_REQ_POST || req->type == EVHTTP_REQ_PUT) &&
evhttp_find_header(req->output_headers, "Content-Length") == NULL){
char size[22];
- evutil_snprintf(size, sizeof(size), "%ld",
- (long)evbuffer_get_length(req->output_buffer));
+ evutil_snprintf(size, sizeof(size), "%lu",
+ (unsigned long)evbuffer_get_length(req->output_buffer));
evhttp_add_header(req->output_headers, "Content-Length", size);
}
}
@@ -612,7 +612,7 @@ evhttp_make_header(struct evhttp_connection *evcon, struct evhttp_request *req)
}
evbuffer_add(output, "\r\n", 2);
- if (evbuffer_get_length(req->output_buffer) > 0) {
+ if (evbuffer_get_length(req->output_buffer) != 0) {
/*
* For a request, we add the POST data, for a reply, this
* is the regular data.
@@ -841,7 +841,7 @@ evhttp_handle_chunked_read(struct evhttp_request *req, struct evbuffer *buf)
{
ev_ssize_t len;
- while ((len = evbuffer_get_length(buf)) > 0) {
+ while ((len = evbuffer_get_length(buf)) != 0) {
if (req->ntoread < 0) {
/* Read chunk size */
ev_int64_t ntoread;
@@ -975,7 +975,7 @@ evhttp_read_body(struct evhttp_connection *evcon, struct evhttp_request *req)
return;
}
- if (evbuffer_get_length(req->input_buffer) > 0 && req->chunk_cb != NULL) {
+ if (evbuffer_get_length(req->input_buffer) != 0 && req->chunk_cb != NULL) {
req->flags |= EVHTTP_REQ_DEFER_FREE;
(*req->chunk_cb)(req, req->cb_arg);
req->flags &= ~EVHTTP_REQ_DEFER_FREE;
@@ -1042,9 +1042,9 @@ evhttp_read_cb(struct bufferevent *bufev, void *arg)
input = bufferevent_get_input(evcon->bufev);
total_len = evbuffer_get_length(input);
- event_debug(("%s: read %d bytes in EVCON_IDLE state,"
+ event_debug(("%s: read %lu bytes in EVCON_IDLE state,"
" resetting connection",
- __func__, (int)total_len));
+ __func__, (unsigned long)total_len));
#endif
evhttp_connection_reset(evcon);
@@ -1926,9 +1926,9 @@ evhttp_get_body_length(struct evhttp_request *req)
req->ntoread = ntoread;
}
- event_debug(("%s: bytes to read: %ld (in buffer %ld)\n",
+ event_debug(("%s: bytes to read: %ld (in buffer %lu)\n",
__func__, (long)req->ntoread,
- evbuffer_get_length(bufferevent_get_input(req->evcon->bufev))));
+ (unsigned long)evbuffer_get_length(bufferevent_get_input(req->evcon->bufev))));
return (0);
}
--
1.7.1