aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Riss <Michael.Riss@gmx.de>2013-03-02 22:38:29 +0100
committerMichael Riss <Michael.Riss@gmx.de>2013-03-22 17:00:00 +0100
commit3e174a02f853aaffea20ab829f4a08793e60eb2e (patch)
treeeb57fe06f2e83aa4a09960b813c228042b9d0446
parent890f3b582e4c1a7f62a748765ec082cd67dddeba (diff)
select function: return error condition when network connection fails
-rw-r--r--src/library.js17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/library.js b/src/library.js
index 3ee6f505..efd07208 100644
--- a/src/library.js
+++ b/src/library.js
@@ -7318,7 +7318,12 @@ LibraryManager.library = {
if (int & mask) {
// index is in the set, check if it is ready for read
var info = Sockets.fds[fd];
- if (info && can(info)) {
+ if (!info) continue;
+ if ((info.socket.readyState == WebSocket.CLOSING || info.socket.readyState == WebSocket.CLOSED) && info.inQueue.length == 0) {
+ ___setErrNo(ERRNO_CODES.EBADF);
+ return -1;
+ }
+ if (can(info)) {
// set bit
fd < 32 ? (dstLow = dstLow | mask) : (dstHigh = dstHigh | mask);
bitsSet++;
@@ -7331,8 +7336,14 @@ LibraryManager.library = {
return bitsSet;
}
- return checkfds(nfds, readfds, canRead)
- + checkfds(nfds, writefds, canWrite);
+ var readHandles = checkfds(nfds, readfds, canRead);
+ var writeHandles = checkfds(nfds, writefds, canWrite);
+ console.log( "readHandles: " + readHandles + ", writeHandles: " + writeHandles );
+ if ((readHandles == -1) || (writeHandles == -1)){
+ return -1;
+ } else {
+ return readHandles + writeHandles;
+ }
},
// pty.h