summaryrefslogtreecommitdiff
path: root/poll
diff options
context:
space:
mode:
Diffstat (limited to 'poll')
-rw-r--r--poll/unix/z_asio.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/poll/unix/z_asio.c b/poll/unix/z_asio.c
index b584e37cf..15b05060d 100644
--- a/poll/unix/z_asio.c
+++ b/poll/unix/z_asio.c
@@ -475,6 +475,7 @@ static apr_status_t asio_pollset_remove(apr_pollset_t *pollset,
asio_elem_t *elem;
apr_status_t rv = APR_SUCCESS;
apr_pollset_private_t *priv = pollset->p;
+ struct aiocb cancel_a; /* AIO_CANCEL is synchronous, so autodata works fine */
int fd;
@@ -503,7 +504,8 @@ static apr_status_t asio_pollset_remove(apr_pollset_t *pollset,
if (elem->state == ASIO_INIT) {
/* asyncio call to cancel */
- elem->a.aio_cmd = AIO_CANCEL;
+ cancel_a.aio_cmd = AIO_CANCEL;
+ cancel_a.aio_buf = &elem->a;
/* we want the original aiocb to show up on the pollset message queue
* to eliminate race conditions