summaryrefslogtreecommitdiff
path: root/poll
diff options
context:
space:
mode:
authorPaul Querna <pquerna@apache.org>2009-06-28 08:17:42 +0000
committerPaul Querna <pquerna@apache.org>2009-06-28 08:17:42 +0000
commit867ff2e049c3e42fecc67f91944ba708670efd5e (patch)
tree3356c95989802d99112b6c41679c3c7eb8a82a14 /poll
parent32d4d8aa9258fa8525c1ec48a2c45814125f6054 (diff)
downloadapr-867ff2e049c3e42fecc67f91944ba708670efd5e.tar.gz
If APR_POLLSET_NODEFAULT is specified, never ever fallback to the default.
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@789066 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'poll')
-rw-r--r--poll/unix/pollcb.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/poll/unix/pollcb.c b/poll/unix/pollcb.c
index 9fbfbd61a..cd5266a7e 100644
--- a/poll/unix/pollcb.c
+++ b/poll/unix/pollcb.c
@@ -103,19 +103,22 @@ APR_DECLARE(apr_status_t) apr_pollcb_create_ex(apr_pollcb_t **pollcb,
rv = (*provider->create)(*pollcb, size, p, flags);
if (rv == APR_ENOTIMPL) {
+ *pollcb = NULL;
if (method == pollset_default_method) {
- *pollcb = NULL;
return rv;
}
+
+ if ((flags & APR_POLLSET_NODEFAULT) == APR_POLLSET_NODEFAULT) {
+ return rv;
+ }
+
/* Try with default provider */
provider = pollcb_provider(pollset_default_method);
if (!provider) {
- *pollcb = NULL;
return APR_ENOTIMPL;
}
rv = (*provider->create)(*pollcb, size, p, flags);
if (rv != APR_SUCCESS) {
- *pollcb = NULL;
return rv;
}
(*pollcb)->provider = provider;