Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

updated resolver_wev_handler_segfault_with_poll.patch to Ruslan Ermil…

…ov's version.
  • Loading branch information...
commit 8e35463045550d0592dc5b17c3f20bfbfb20a89f 1 parent fc1929f
@agentzh agentzh authored
View
50 patches/nginx-1.2.6-resolver_wev_handler_segfault_with_poll.patch
@@ -1,29 +1,31 @@
---- nginx-1.2.6/src/core/ngx_resolver.c 2012-11-12 10:47:07.000000000 -0800
-+++ nginx-1.2.6-patched/src/core/ngx_resolver.c 2013-01-22 14:52:42.716434183 -0800
-@@ -91,6 +91,7 @@ static void *ngx_resolver_dup(ngx_resolv
- static in_addr_t *ngx_resolver_rotate(ngx_resolver_t *r, in_addr_t *src,
- ngx_uint_t n);
- static u_char *ngx_resolver_log_error(ngx_log_t *log, u_char *buf, size_t len);
-+static void ngx_resolver_empty_handler(ngx_event_t *ev);
+--- nginx-1.2.6/src/event/modules/ngx_poll_module.c 2012-01-18 07:07:43.000000000 -0800
++++ nginx-1.2.6-patched/src/event/modules/ngx_poll_module.c 2013-01-23 12:34:13.990781456 -0800
+@@ -367,11 +367,18 @@ ngx_poll_process_events(ngx_cycle_t *cyc
+ */
+ revents |= POLLIN|POLLOUT;
++ if (c->read->active) {
++ revents |= POLLIN;
++ }
++
++ if (c->write->active) {
++ revents |= POLLOUT;
++ }
+ }
- ngx_resolver_t *
-@@ -2258,6 +2259,8 @@ ngx_udp_connect(ngx_udp_connection_t *uc
- rev->log = &uc->log;
- wev->log = &uc->log;
+ found = 0;
-+ wev->handler = ngx_resolver_empty_handler;
-+
- uc->connection = c;
+- if (revents & POLLIN) {
++ if ((revents & POLLIN) && c->read->active) {
+ found = 1;
- c->number = ngx_atomic_fetch_add(ngx_connection_counter, 1);
-@@ -2311,3 +2314,9 @@ ngx_udp_connect(ngx_udp_connection_t *uc
+ ev = c->read;
+@@ -388,7 +395,7 @@ ngx_poll_process_events(ngx_cycle_t *cyc
+ ngx_locked_post_event(ev, queue);
+ }
+
+- if (revents & POLLOUT) {
++ if ((revents & POLLOUT) && c->write->active) {
+ found = 1;
+ ev = c->write;
- return NGX_OK;
- }
-+
-+
-+static void
-+ngx_resolver_empty_handler(ngx_event_t *ev)
-+{
-+}
View
50 patches/nginx-1.3.7-resolver_wev_handler_segfault_with_poll.patch
@@ -1,29 +1,31 @@
---- nginx-1.3.7/src/core/ngx_resolver.c 2012-11-12 10:47:07.000000000 -0800
-+++ nginx-1.3.7-patched/src/core/ngx_resolver.c 2013-01-22 14:52:42.716434183 -0800
-@@ -91,6 +91,7 @@ static void *ngx_resolver_dup(ngx_resolv
- static in_addr_t *ngx_resolver_rotate(ngx_resolver_t *r, in_addr_t *src,
- ngx_uint_t n);
- static u_char *ngx_resolver_log_error(ngx_log_t *log, u_char *buf, size_t len);
-+static void ngx_resolver_empty_handler(ngx_event_t *ev);
+--- nginx-1.3.7/src/event/modules/ngx_poll_module.c 2012-01-18 07:07:43.000000000 -0800
++++ nginx-1.3.7-patched/src/event/modules/ngx_poll_module.c 2013-01-23 12:34:13.990781456 -0800
+@@ -367,11 +367,18 @@ ngx_poll_process_events(ngx_cycle_t *cyc
+ */
+ revents |= POLLIN|POLLOUT;
++ if (c->read->active) {
++ revents |= POLLIN;
++ }
++
++ if (c->write->active) {
++ revents |= POLLOUT;
++ }
+ }
- ngx_resolver_t *
-@@ -2258,6 +2259,8 @@ ngx_udp_connect(ngx_udp_connection_t *uc
- rev->log = &uc->log;
- wev->log = &uc->log;
+ found = 0;
-+ wev->handler = ngx_resolver_empty_handler;
-+
- uc->connection = c;
+- if (revents & POLLIN) {
++ if ((revents & POLLIN) && c->read->active) {
+ found = 1;
- c->number = ngx_atomic_fetch_add(ngx_connection_counter, 1);
-@@ -2311,3 +2314,9 @@ ngx_udp_connect(ngx_udp_connection_t *uc
+ ev = c->read;
+@@ -388,7 +395,7 @@ ngx_poll_process_events(ngx_cycle_t *cyc
+ ngx_locked_post_event(ev, queue);
+ }
+
+- if (revents & POLLOUT) {
++ if ((revents & POLLOUT) && c->write->active) {
+ found = 1;
+ ev = c->write;
- return NGX_OK;
- }
-+
-+
-+static void
-+ngx_resolver_empty_handler(ngx_event_t *ev)
-+{
-+}
Please sign in to comment.
Something went wrong with that request. Please try again.