[packages/libevent] remove fb-changes patch dropped from spec in d108ad9
atler
atler at pld-linux.org
Sat Feb 27 18:30:16 CET 2021
commit caa0d5c3fc89181c0af5bbe1d727460237f76a57
Author: Jan Palus <atler at pld-linux.org>
Date: Sat Feb 27 18:29:12 2021 +0100
remove fb-changes patch dropped from spec in d108ad9
libevent.fb-changes.diff | 698 -----------------------------------------------
1 file changed, 698 deletions(-)
---
diff --git a/libevent.fb-changes.diff b/libevent.fb-changes.diff
deleted file mode 100644
index 3e6e1c6..0000000
--- a/libevent.fb-changes.diff
+++ /dev/null
@@ -1,698 +0,0 @@
-diff -rp -U 5 libevent-1.4.14-stable/event.c libevent-1.4.14-stable-fb/event.c
---- libevent-1.4.14-stable/event.c 2010-06-07 14:40:35.000000000 -0700
-+++ libevent-1.4.14-stable-fb/event.c 2010-06-18 16:30:57.000000000 -0700
-@@ -136,14 +136,16 @@ detect_monotonic(void)
- }
-
- static int
- gettime(struct event_base *base, struct timeval *tp)
- {
-+/*
- if (base->tv_cache.tv_sec) {
- *tp = base->tv_cache;
- return (0);
- }
-+*/
-
- #if defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_MONOTONIC)
- if (use_monotonic) {
- struct timespec ts;
-
-@@ -479,11 +481,11 @@ event_base_loop(struct event_base *base,
- struct timeval tv;
- struct timeval *tv_p;
- int res, done;
-
- /* clear time cache */
-- base->tv_cache.tv_sec = 0;
-+ /* base->tv_cache.tv_sec = 0; */
-
- if (base->sig.ev_signal_added)
- evsignal_base = base;
- done = 0;
- while (!done) {
-@@ -531,17 +533,17 @@ event_base_loop(struct event_base *base,
-
- /* update last old time */
- gettime(base, &base->event_tv);
-
- /* clear time cache */
-- base->tv_cache.tv_sec = 0;
-+ /* base->tv_cache.tv_sec = 0; */
-
- res = evsel->dispatch(base, evbase, tv_p);
-
- if (res == -1)
- return (-1);
-- gettime(base, &base->tv_cache);
-+ /* gettime(base, &base->tv_cache); */
-
- timeout_process(base);
-
- if (base->event_count_active) {
- event_process_active(base);
-@@ -550,11 +552,11 @@ event_base_loop(struct event_base *base,
- } else if (flags & EVLOOP_NONBLOCK)
- done = 1;
- }
-
- /* clear time cache */
-- base->tv_cache.tv_sec = 0;
-+ /* base->tv_cache.tv_sec = 0; */
-
- event_debug(("%s: asked to terminate loop.", __func__));
- return (0);
- }
-
-Only in libevent-1.4.14-stable-fb: event.c.orig
-diff -rp -U 5 libevent-1.4.14-stable/evhttp.h libevent-1.4.14-stable-fb/evhttp.h
---- libevent-1.4.14-stable/evhttp.h 2010-06-07 14:40:35.000000000 -0700
-+++ libevent-1.4.14-stable-fb/evhttp.h 2010-06-18 16:36:24.000000000 -0700
-@@ -79,16 +79,54 @@ struct evhttp *evhttp_new(struct event_b
- * to multiple different ports.
- *
- * @param http a pointer to an evhttp object
- * @param address a string containing the IP address to listen(2) on
- * @param port the port number to listen on
-- * @return a newly allocated evhttp struct
-+ * @return 0 on success, -1 on error
- * @see evhttp_free()
- */
- int evhttp_bind_socket(struct evhttp *http, const char *address, u_short port);
-
- /**
-+ * Binds an HTTP server on the specified address and port, using backlog.
-+ *
-+ * Can be called multiple times to bind the same http server
-+ * to multiple different ports.
-+ *
-+ * @param http a pointer to an evhttp object
-+ * @param address a string containing the IP address to listen(2) on
-+ * @param port the port number to listen on
-+ * @param backlog the backlog value for listen(2)
-+ * @return 0 on success, -1 on error
-+ * @see evhttp_free()
-+ */
-+int evhttp_bind_socket_backlog(struct evhttp *http, const char *address, u_short port, int backlog);
-+
-+/**
-+ * Like evhttp_bind_socket(), but returns the socket file descriptor.
-+ *
-+ * @param http a pointer to an evhttp object
-+ * @param address a string containing the IP address to listen(2) on
-+ * @param port the port number to listen on
-+ * @return Socket file descriptor on success, -1 on failure
-+ * @see evhttp_bind_socket()
-+ */
-+int evhttp_bind_socket_with_fd(struct evhttp *http, const char *address, u_short port);
-+
-+/**
-+ * Like evhttp_bind_socket(), but returns the socket file descriptor.
-+ *
-+ * @param http a pointer to an evhttp object
-+ * @param address a string containing the IP address to listen(2) on
-+ * @param port the port number to listen on
-+ * @param backlog the backlog value for listen(2)
-+ * @return Socket file descriptor on success, -1 on failure
-+ * @see evhttp_bind_socket()
-+ */
-+int evhttp_bind_socket_backlog_fd(struct evhttp *http, const char *address, u_short port, int backlog);
-+
-+/**
- * Makes an HTTP server accept connections on the specified socket
- *
- * This may be useful to create a socket and then fork multiple instances
- * of an http server, or when a socket has been communicated via file
- * descriptor passing in situations where an http servers does not have
-@@ -103,10 +141,25 @@ int evhttp_bind_socket(struct evhttp *ht
- * @see evhttp_free(), evhttp_bind_socket()
- */
- int evhttp_accept_socket(struct evhttp *http, int fd);
-
- /**
-+ * Makes an HTTP server stop accepting connections on the specified socket
-+ *
-+ * This may be useful when a socket has been sent via file descriptor passing
-+ * and is no longer needed by the current process.
-+ *
-+ * This function does not close the socket.
-+ *
-+ * @param http a pointer to an evhttp object
-+ * @param fd a socket fd that is currently accepting connections
-+ * @return 0 on success, -1 on failure.
-+ * @see evhttp_accept_socket()
-+ */
-+int evhttp_del_accept_socket(struct evhttp *http, int fd);
-+
-+/**
- * Free the previously created HTTP server.
- *
- * Works only if no requests are currently being served.
- *
- * @param http the evhttp server object to be freed
-@@ -132,10 +185,25 @@ void evhttp_set_gencb(struct evhttp *,
- * @param http an evhttp object
- * @param timeout_in_secs the timeout, in seconds
- */
- void evhttp_set_timeout(struct evhttp *, int timeout_in_secs);
-
-+/**
-+ * Limit the number of simultaneous connections via this http instance.
-+ *
-+ * @param http an evhttp object
-+ * @param nlimit the maximum number of connections, zero is unlimited
-+ */
-+int evhttp_set_connection_limit(struct evhttp *http, int nlimit);
-+
-+/**
-+ * Return the maximum number of connections allowed for this instance.
-+ *
-+ * @param http an evhttp object
-+ */
-+int evhttp_get_connection_limit(struct evhttp *http);
-+
- /* Request/Response functionality */
-
- /**
- * Send an HTML error message to the client.
- *
-@@ -155,10 +223,23 @@ void evhttp_send_error(struct evhttp_req
- * @param databuf the body of the response
- */
- void evhttp_send_reply(struct evhttp_request *req, int code,
- const char *reason, struct evbuffer *databuf);
-
-+/**
-+ * Send an HTML reply synchronously as much as possible by calling _begin().
-+ * Great for a worker thread to send the reply immediately without queuing up
-+ * events back to the loop. Call _end() to send the rest of the packet from
-+ * event loop.
-+ *
-+ * When _begin() returns needs to be fed into _end() as the 1st parameter
-+ * "nwritten".
-+ */
-+int evhttp_send_reply_sync_begin(struct evhttp_request *req, int code,
-+ const char *reason, struct evbuffer *databuf);
-+void evhttp_send_reply_sync_end(int nwritten, struct evhttp_request *req);
-+
- /* Low-level response interface, for streaming/chunked replies */
- void evhttp_send_reply_start(struct evhttp_request *, int, const char *);
- void evhttp_send_reply_chunk(struct evhttp_request *, struct evbuffer *);
- void evhttp_send_reply_end(struct evhttp_request *);
-
-@@ -208,10 +289,11 @@ struct {
- char *remote_host;
- u_short remote_port;
-
- enum evhttp_request_kind kind;
- enum evhttp_cmd_type type;
-+ char *ext_method; /* webdav methods, for example */
-
- char *uri; /* uri after HTTP request was parsed */
-
- char major; /* HTTP Major number */
- char minor; /* HTTP Minor number */
-@@ -222,10 +304,12 @@ struct {
- struct evbuffer *input_buffer; /* read data */
- ev_int64_t ntoread;
- int chunked:1, /* a chunked request */
- userdone:1; /* the user has sent all data */
-
-+ int referenced;
-+
- struct evbuffer *output_buffer; /* outgoing post or data */
-
- /* Callback */
- void (*cb)(struct evhttp_request *, void *);
- void *cb_arg;
-diff -rp -U 5 libevent-1.4.14-stable/http-internal.h libevent-1.4.14-stable-fb/http-internal.h
---- libevent-1.4.14-stable/http-internal.h 2010-06-07 14:40:35.000000000 -0700
-+++ libevent-1.4.14-stable-fb/http-internal.h 2010-06-18 16:30:57.000000000 -0700
-@@ -114,10 +114,13 @@ struct evhttp {
- TAILQ_HEAD(boundq, evhttp_bound_socket) sockets;
-
- TAILQ_HEAD(httpcbq, evhttp_cb) callbacks;
- struct evconq connections;
-
-+ int connection_count;
-+ int connection_limit;
-+
- int timeout;
-
- void (*gencb)(struct evhttp_request *req, void *);
- void *gencbarg;
-
-diff -rp -U 5 libevent-1.4.14-stable/http.c libevent-1.4.14-stable-fb/http.c
---- libevent-1.4.14-stable/http.c 2010-06-07 14:40:35.000000000 -0700
-+++ libevent-1.4.14-stable-fb/http.c 2010-06-18 16:35:23.000000000 -0700
-@@ -217,10 +217,17 @@ static int evhttp_decode_uri_internal(co
- char *ret, int always_decode_plus);
-
- void evhttp_read(int, short, void *);
- void evhttp_write(int, short, void *);
-
-+
-+void evhttp_server_drop_connection(struct evhttp_connection *evcon);
-+void evhttp_server_add_connection(struct evhttp *http,
-+ struct evhttp_connection *evcon);
-+void evhttp_pause(struct evhttp *http);
-+void evhttp_resume(struct evhttp *http);
-+
- #ifndef HAVE_STRSEP
- /* strsep replacement for platforms that lack it. Only works if
- * del is one character long. */
- static char *
- strsep(char **s, const char *del)
-@@ -476,21 +483,19 @@ evhttp_make_header_response(struct evhtt
- */
- if (req->minor == 0 && is_keepalive)
- evhttp_add_header(req->output_headers,
- "Connection", "keep-alive");
-
-- if (req->minor == 1 || is_keepalive) {
- /*
- * we need to add the content length if the
- * user did not give it, this is required for
- * persistent connections to work.
- */
- evhttp_maybe_add_content_length_header(
- req->output_headers,
- (long)EVBUFFER_LENGTH(req->output_buffer));
- }
-- }
-
- /* Potentially add headers for unidentified content. */
- if (EVBUFFER_LENGTH(req->output_buffer)) {
- if (evhttp_find_header(req->output_headers,
- "Content-Type") == NULL) {
-@@ -685,18 +690,18 @@ evhttp_connection_fail(struct evhttp_con
-
- void
- evhttp_write(int fd, short what, void *arg)
- {
- struct evhttp_connection *evcon = arg;
-- int n;
-
- if (what == EV_TIMEOUT) {
- evhttp_connection_fail(evcon, EVCON_HTTP_TIMEOUT);
- return;
- }
-
-- n = evbuffer_write(evcon->output_buffer, fd);
-+ if (EVBUFFER_LENGTH(evcon->output_buffer) != 0) {
-+ int n = evbuffer_write(evcon->output_buffer, fd);
- if (n == -1) {
- event_debug(("%s: evbuffer_write", __func__));
- evhttp_connection_fail(evcon, EVCON_HTTP_EOF);
- return;
- }
-@@ -704,10 +709,11 @@ evhttp_write(int fd, short what, void *a
- if (n == 0) {
- event_debug(("%s: write nothing", __func__));
- evhttp_connection_fail(evcon, EVCON_HTTP_EOF);
- return;
- }
-+ }
-
- if (EVBUFFER_LENGTH(evcon->output_buffer) != 0) {
- evhttp_add_event(&evcon->ev,
- evcon->timeout, HTTP_WRITE_TIMEOUT);
- return;
-@@ -1010,15 +1016,13 @@ evhttp_connection_free(struct evhttp_con
- */
- while ((req = TAILQ_FIRST(&evcon->requests)) != NULL) {
- TAILQ_REMOVE(&evcon->requests, req, next);
- evhttp_request_free(req);
- }
--
-- if (evcon->http_server != NULL) {
-- struct evhttp *http = evcon->http_server;
-- TAILQ_REMOVE(&http->connections, evcon, next);
-- }
-+
-+ if (evcon->http_server != NULL)
-+ evhttp_server_drop_connection(evcon);
-
- if (event_initialized(&evcon->close_ev))
- event_del(&evcon->close_ev);
-
- if (event_initialized(&evcon->ev))
-@@ -1099,14 +1103,20 @@ evhttp_connection_reset(struct evhttp_co
- EVUTIL_CLOSESOCKET(evcon->fd);
- evcon->fd = -1;
- }
- evcon->state = EVCON_DISCONNECTED;
-
-- evbuffer_drain(evcon->input_buffer,
-- EVBUFFER_LENGTH(evcon->input_buffer));
-- evbuffer_drain(evcon->output_buffer,
-- EVBUFFER_LENGTH(evcon->output_buffer));
-+ /*
-+ * These can grow quite large if processing a large photo or video
-+ * upload/download. Instead of keeping the buffers around, just
-+ * free and allocate new.
-+ */
-+ evbuffer_free(evcon->input_buffer);
-+ evcon->input_buffer = evbuffer_new();
-+
-+ evbuffer_free(evcon->output_buffer);
-+ evcon->output_buffer = evbuffer_new();
- }
-
- static void
- evhttp_detect_close_cb(int fd, short what, void *arg)
- {
-@@ -1276,23 +1286,56 @@ evhttp_parse_request_line(struct evhttp_
- /* Parse the request line */
- method = strsep(&line, " ");
- if (line == NULL)
- return (-1);
- uri = strsep(&line, " ");
-- if (line == NULL)
-- return (-1);
-+ if (line == NULL) {
-+ version = "HTTP/1.0";
-+ } else {
- version = strsep(&line, " ");
- if (line != NULL)
- return (-1);
-+ }
-
- /* First line */
-+ req->ext_method = NULL;
- if (strcmp(method, "GET") == 0) {
- req->type = EVHTTP_REQ_GET;
- } else if (strcmp(method, "POST") == 0) {
- req->type = EVHTTP_REQ_POST;
- } else if (strcmp(method, "HEAD") == 0) {
- req->type = EVHTTP_REQ_HEAD;
-+ } else if (strcmp(method, "OPTIONS") == 0) {
-+ req->type = EVHTTP_REQ_POST;
-+ req->ext_method = "OPTIONS";
-+ } else if (strcmp(method, "REPORT") == 0) {
-+ req->type = EVHTTP_REQ_POST;
-+ req->ext_method = "REPORT";
-+ } else if (strcmp(method, "PROPFIND") == 0) {
-+ req->type = EVHTTP_REQ_POST;
-+ req->ext_method = "PROPFIND";
-+ } else if (strcmp(method, "PROPPATH") == 0) {
-+ req->type = EVHTTP_REQ_POST;
-+ req->ext_method = "PROPPATH";
-+ } else if (strcmp(method, "MKCOL") == 0) {
-+ req->type = EVHTTP_REQ_POST;
-+ req->ext_method = "MKCOL";
-+ } else if (strcmp(method, "MKCALENDAR") == 0) {
-+ req->type = EVHTTP_REQ_POST;
-+ req->ext_method = "MKCALENDAR";
-+ } else if (strcmp(method, "PUT") == 0) {
-+ req->type = EVHTTP_REQ_POST;
-+ req->ext_method = "PUT";
-+ } else if (strcmp(method, "DELETE") == 0) {
-+ req->type = EVHTTP_REQ_POST;
-+ req->ext_method = "DELETE";
-+ } else if (strcmp(method, "LOCK") == 0) {
-+ req->type = EVHTTP_REQ_POST;
-+ req->ext_method = "LOCK";
-+ } else if (strcmp(method, "UNLOCK") == 0) {
-+ req->type = EVHTTP_REQ_POST;
-+ req->ext_method = "UNLOCK";
- } else {
- event_debug(("%s: bad method %s on request %p from %s",
- __func__, method, req, req->remote_host));
- return (-1);
- }
-@@ -1961,14 +2004,48 @@ evhttp_send_reply(struct evhttp_request
- evhttp_response_code(req, code, reason);
-
- evhttp_send(req, databuf);
- }
-
-+int
-+evhttp_send_reply_sync_begin(struct evhttp_request *req, int code,
-+ const char *reason, struct evbuffer *databuf) {
-+ evhttp_response_code(req, code, reason);
-+ struct evhttp_connection *evcon = req->evcon;
-+
-+ assert(TAILQ_FIRST(&evcon->requests) == req);
-+
-+ /* xxx: not sure if we really should expose the data buffer this way */
-+ if (databuf != NULL)
-+ evbuffer_add_buffer(req->output_buffer, databuf);
-+
-+ /* Adds headers to the response */
-+ evhttp_make_header(evcon, req);
-+
-+ return evbuffer_write(evcon->output_buffer, evcon->fd);
-+}
-+
-+void
-+evhttp_send_reply_sync_end(int nwritten, struct evhttp_request *req) {
-+ struct evhttp_connection *evcon = req->evcon;
-+
-+ if (nwritten <= 0) {
-+ evhttp_connection_fail(evcon, EVCON_HTTP_EOF);
-+ } else if (EVBUFFER_LENGTH(evcon->output_buffer) == 0) {
-+ evhttp_send_done(evcon, NULL);
-+ } else {
-+ evhttp_write_buffer(evcon, evhttp_send_done, NULL);
-+ }
-+}
-+
-+
- void
- evhttp_send_reply_start(struct evhttp_request *req, int code,
- const char *reason)
- {
-+ req->referenced = 1;
-+
- evhttp_response_code(req, code, reason);
- if (req->major == 1 && req->minor == 1) {
- /* use chunked encoding for HTTP/1.1 */
- evhttp_add_header(req->output_headers, "Transfer-Encoding",
- "chunked");
-@@ -1984,10 +2061,12 @@ evhttp_send_reply_chunk(struct evhttp_re
- struct evhttp_connection *evcon = req->evcon;
-
- if (evcon == NULL)
- return;
-
-+ if (req->referenced < 0) return;
-+
- if (req->chunked) {
- evbuffer_add_printf(evcon->output_buffer, "%x\r\n",
- (unsigned)EVBUFFER_LENGTH(databuf));
- }
- evbuffer_add_buffer(evcon->output_buffer, databuf);
-@@ -2005,11 +2084,18 @@ evhttp_send_reply_end(struct evhttp_requ
- if (evcon == NULL) {
- evhttp_request_free(req);
- return;
- }
-
-- /* we expect no more calls form the user on this request */
-+ if (req->referenced < 0) {
-+ req->referenced = 0;
-+ evhttp_request_free(req);
-+ return;
-+ }
-+ req->referenced = 0;
-+
-+ /* we expect no more calls form the user on this request */
- req->userdone = 1;
-
- if (req->chunked) {
- evbuffer_add(req->evcon->output_buffer, "0\r\n\r\n", 5);
- evhttp_write_buffer(req->evcon, evhttp_send_done, NULL);
-@@ -2291,33 +2377,63 @@ accept_socket(int fd, short what, void *
-
- evhttp_get_request(http, nfd, (struct sockaddr *)&ss, addrlen);
- }
-
- int
--evhttp_bind_socket(struct evhttp *http, const char *address, u_short port)
-+evhttp_bind_socket_backlog_fd(struct evhttp *http, const char *address,
-+ u_short port, int backlog)
- {
- int fd;
- int res;
-
- if ((fd = bind_socket(address, port, 1 /*reuse*/)) == -1)
- return (-1);
-
-- if (listen(fd, 128) == -1) {
-+ if (listen(fd, backlog) == -1) {
- event_warn("%s: listen", __func__);
- EVUTIL_CLOSESOCKET(fd);
- return (-1);
- }
-
- res = evhttp_accept_socket(http, fd);
-
-- if (res != -1)
-+ if (res != -1) {
- event_debug(("Bound to port %d - Awaiting connections ... ",
- port));
-+ return (fd);
-+ }
-
- return (res);
- }
-
-+static int
-+mask_fd(int fd)
-+{
-+ return fd > 0 ? 0 : fd;
-+}
-+
-+int
-+evhttp_bind_socket(struct evhttp *http, const char *address, u_short port)
-+{
-+ return mask_fd(evhttp_bind_socket_backlog_fd(http, address, port, 128));
-+}
-+
-+int
-+evhttp_bind_socket_with_fd(struct evhttp *http, const char *address,
-+ u_short port)
-+{
-+ return evhttp_bind_socket_backlog_fd(http, address, port, 128);
-+}
-+
-+int
-+evhttp_bind_socket_backlog(struct evhttp *http, const char *address,
-+ u_short port, int backlog)
-+{
-+ return mask_fd(
-+ evhttp_bind_socket_backlog_fd(http, address, port, backlog));
-+}
-+
- int
- evhttp_accept_socket(struct evhttp *http, int fd)
- {
- struct evhttp_bound_socket *bound;
- struct event *ev;
-@@ -2343,10 +2459,29 @@ evhttp_accept_socket(struct evhttp *http
- TAILQ_INSERT_TAIL(&http->sockets, bound, next);
-
- return (0);
- }
-
-+int
-+evhttp_del_accept_socket(struct evhttp *http, int fd)
-+{
-+ struct evhttp_bound_socket *bound;
-+ TAILQ_FOREACH(bound, &http->sockets, next) {
-+ if (bound->bind_ev.ev_fd == fd)
-+ break;
-+ }
-+
-+ if (bound == NULL)
-+ return (-1);
-+
-+ TAILQ_REMOVE(&http->sockets, bound, next);
-+ event_del(&bound->bind_ev);
-+ free(bound);
-+
-+ return (0);
-+}
-+
- static struct evhttp*
- evhttp_new_object(void)
- {
- struct evhttp *http = NULL;
-
-@@ -2525,10 +2660,15 @@ evhttp_request_new(void (*cb)(struct evh
- }
-
- void
- evhttp_request_free(struct evhttp_request *req)
- {
-+ if (req->referenced) {
-+ req->referenced = -1;
-+ return;
-+ }
-+
- if (req->remote_host != NULL)
- free(req->remote_host);
- if (req->uri != NULL)
- free(req->uri);
- if (req->response_code_line != NULL)
-@@ -2655,17 +2795,76 @@ evhttp_get_request(struct evhttp *http,
-
- /*
- * if we want to accept more than one request on a connection,
- * we need to know which http server it belongs to.
- */
-- evcon->http_server = http;
-- TAILQ_INSERT_TAIL(&http->connections, evcon, next);
-+
-+ evhttp_server_add_connection(http, evcon);
-
- if (evhttp_associate_new_request_with_connection(evcon) == -1)
- evhttp_connection_free(evcon);
- }
-
-+void
-+evhttp_pause(struct evhttp *http)
-+{
-+ struct evhttp_bound_socket *bound;
-+ TAILQ_FOREACH(bound, &http->sockets, next) {
-+ event_del(&bound->bind_ev);
-+ }
-+}
-+
-+void
-+evhttp_resume(struct evhttp *http)
-+{
-+ struct evhttp_bound_socket *bound;
-+ TAILQ_FOREACH(bound, &http->sockets, next) {
-+ event_add(&bound->bind_ev, 0);
-+ }
-+}
-+
-+int
-+evhttp_get_connection_limit(struct evhttp *http)
-+{
-+ return http->connection_limit;
-+}
-+
-+int
-+evhttp_set_connection_limit(struct evhttp *http, int nlimit)
-+{
-+ int olimit = http->connection_limit;
-+ http->connection_limit = nlimit;
-+ return olimit;
-+}
-+
-+void
-+evhttp_server_add_connection(struct evhttp *http,
-+ struct evhttp_connection *evcon)
-+{
-+ evcon->http_server = http;
-+ TAILQ_INSERT_TAIL(&http->connections, evcon, next);
-+
-+ http->connection_count++;
-+ if (http->connection_limit > 0
-+ && http->connection_count >= http->connection_limit)
-+ {
-+ evhttp_pause(http);
-+ }
-+}
-+
-+void
-+evhttp_server_drop_connection(struct evhttp_connection *evcon)
-+{
-+ struct evhttp *http = evcon->http_server;
-+ TAILQ_REMOVE(&http->connections, evcon, next);
-+ http->connection_count--;
-+ if (http->connection_limit > 0
-+ && http->connection_count < http->connection_limit)
-+ {
-+ evhttp_resume(http);
-+ }
-+}
-
- /*
- * Network helper functions that we do not want to export to the rest of
- * the world.
- */
-
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/libevent.git/commitdiff/caa0d5c3fc89181c0af5bbe1d727460237f76a57
More information about the pld-cvs-commit
mailing list