First of all thanks for the robust library, which serves just well and allows
my project to be cross-platform with very small footprint.
I had been looking for interruptable pollset and created small layer on top of
apr_pollset_t in my project based on stable apr-1.2 and apr-1.3 releases.
Meantime I've noticed the following
Changes for APR 1.4.0
*) Introduce apr_pollset_wakeup() for interrupting the blocking
apr_pollset_poll call.
[Mladen Turk]
Exactly what I need and it just works as intened on Linux, but small note
concerning Windows implementation.
Pollset is created with an internal pipe object used to interrupt poll if flags
contain APR_POLLSET_WAKEABLE. On Windows, where it's not possible to poll on
files, apr_file_socket_pipe_create() function is used to create a dummy pipe
and I'm OK with this either. However the descriptor type should be
APR_POLL_SOCKET instead of APR_POLL_FILE in this case, otherwise
apr_pollset_create() always failes on Windows.
===================================================================
--- apr/poll/unix/select.c (revision 739958)
+++ apr/poll/unix/select.c (working copy)
@@ -207,7 +207,7 @@
pollset->pool)) != APR_SUCCESS)
return rv;
fd.reqevents = APR_POLLIN;
- fd.desc_type = APR_POLL_FILE;
+ fd.desc_type = APR_POLL_SOCKET;
fd.desc.f = pollset->wakeup_pipe[0];
Regards,
Arsen.
www.unimrcp.org