summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES10
-rw-r--r--include/arch/unix/networkio.h3
-rw-r--r--network_io/unix/poll.c4
3 files changed, 10 insertions, 7 deletions
diff --git a/CHANGES b/CHANGES
index 42b0d6de8..ee0a32173 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,9 @@
Changes with APR b1
+ *) Fix the Unix HAVE_POLL flavor of apr_poll_socket_mask() so that
+ it doesn't segfault. Avoid some wasted storage in a poll-related
+ APR structure. [INOUE Seiichiro <inoue@ariel-networks.com>]
+
*) Fix apr_setup_signal_thread() so that threads don't block
synchronous signals (e.g., SIGSEGV). It is a programming error
to do so, and some platforms (e.g., Solaris, AIX) don't call any
@@ -8,7 +12,7 @@ Changes with APR b1
*) Change the apr_table_elts macro so that it provides access via
a const pointer instead of a non-const pointer.
- [Brian Pane <bpane@pacbell.net]
+ [Brian Pane <bpane@pacbell.net>]
*) Use strerror_r() where available, since strerror() isn't always
thread-safe. Example systems where strerror() isn't thread-safe:
@@ -20,11 +24,11 @@ Changes with APR b1
*) New functions apr_hash_[merge|copy], change to overlay fn
so that it calls merge, which does a inline iteration instead
- of calling the iterator function. [Brian Pane <bpane@pacbell.net]
+ of calling the iterator function. [Brian Pane <bpane@pacbell.net>]
*) Introduce the apr_pool_userdata_setn() variant that doesn't
strdup the key. Allows both the _setn() and _set() variant to
- accept NULL for the cleanup. [Brian Pane <bpane@pacbell.net]
+ accept NULL for the cleanup. [Brian Pane <bpane@pacbell.net>]
*) Re-vamp the apr_proc_wait and apr_proc_wait_all functions. We
now return the exit code from the program and a reason that the
diff --git a/include/arch/unix/networkio.h b/include/arch/unix/networkio.h
index 58a1cd0b1..c8803e08c 100644
--- a/include/arch/unix/networkio.h
+++ b/include/arch/unix/networkio.h
@@ -152,10 +152,9 @@ struct apr_pollfd_t {
fd_set *read_set;
fd_set *write_set;
fd_set *except_set;
-#endif
apr_int16_t *events;
apr_int16_t *revents;
-
+#endif
};
const char *apr_inet_ntop(int af, const void *src, char *dst, apr_size_t size);
diff --git a/network_io/unix/poll.c b/network_io/unix/poll.c
index 9e0c27bf9..5e832fdcd 100644
--- a/network_io/unix/poll.c
+++ b/network_io/unix/poll.c
@@ -180,8 +180,8 @@ apr_status_t apr_poll_socket_mask(apr_pollfd_t *aprset,
return APR_NOTFOUND;
}
newevents = get_event(events);
- if (aprset->events[i] & newevents) {
- aprset->events[i] ^= newevents;
+ if (aprset->pollset[i].events & newevents) {
+ aprset->pollset[i].events ^= newevents;
}
return APR_SUCCESS;