diff --git a/src/lib/libpipefs.js b/src/lib/libpipefs.js index f8b55038c8f09..5495f7b4a8d3f 100644 --- a/src/lib/libpipefs.js +++ b/src/lib/libpipefs.js @@ -97,7 +97,15 @@ addToLibrary({ blocks: 0, }; }, - poll(stream, timeout, notifyCallback) { + pollAsync(stream, notifyCallback) { + var res = this.poll(stream, 0); + if (res != 0) return res; +#if PTHREADS + stream.node.pipe.registerReadableHandler(notifyCallback); +#endif + return 0; + }, + poll(stream, timeout) { var pipe = stream.node.pipe; if ((stream.flags & {{{ cDefs.O_ACCMODE }}}) === {{{ cDefs.O_WRONLY }}}) { @@ -109,9 +117,6 @@ addToLibrary({ } } -#if PTHREADS - if (notifyCallback) pipe.registerReadableHandler(notifyCallback); -#endif return 0; }, dup(stream) { diff --git a/src/lib/libsyscall.js b/src/lib/libsyscall.js index 3a1108e04d532..b72e98894b4c5 100644 --- a/src/lib/libsyscall.js +++ b/src/lib/libsyscall.js @@ -625,8 +625,8 @@ var SyscallsLibrary = { if (stream) { if (stream.stream_ops.poll) { #if PTHREADS || ASYNCIFY - if (isAsyncContext && timeout) { - flags = stream.stream_ops.poll(stream, timeout, makeNotifyCallback(stream, pollfd)); + if (stream.stream_ops.pollAsync && isAsyncContext && timeout) { + flags = stream.stream_ops.pollAsync(stream, makeNotifyCallback(stream, pollfd)); } else #endif flags = stream.stream_ops.poll(stream, -1);