diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/library.js | 17 | ||||
-rw-r--r-- | src/settings.js | 3 |
2 files changed, 18 insertions, 2 deletions
diff --git a/src/library.js b/src/library.js index d69068fc..938a3c92 100644 --- a/src/library.js +++ b/src/library.js @@ -6368,6 +6368,7 @@ LibraryManager.library = { connect__deps: ['$Sockets', '_inet_ntop_raw', 'ntohs'], connect: function(fd, addr, addrlen) { var info = Sockets.fds[fd]; + if (!info) return -1; info.connected = true; info.addr = getValue(addr + Sockets.sockaddr_in_layout.sin_addr, 'i32'); info.port = _ntohs(getValue(addr + Sockets.sockaddr_in_layout.sin_port, 'i16')); @@ -6396,6 +6397,7 @@ LibraryManager.library = { recv__deps: ['$Sockets'], recv: function(fd, buf, len, flags) { var info = Sockets.fds[fd]; + if (!info) return -1; if (info.bufferWrite == info.bufferRead) { ___setErrNo(ERRNO_CODES.EAGAIN); // no data, and all sockets are nonblocking, so this is the right behavior return 0; // should this be -1 like the spec says? @@ -6412,10 +6414,23 @@ LibraryManager.library = { }, shutdown: function(fd, how) { - Sockets.fds[fd].socket.close(); + var info = Sockets.fds[fd]; + if (!info) return -1; + info.socket.close(); Sockets.fds[fd] = null; }, + ioctl: function(fd, request, varargs) { + var info = Sockets.fds[fd]; + if (!info) return -1; + var start = info.bufferRead; + var end = info.bufferWrite; + if (end < start) end += Sockets.BUFFER_SIZE; + var dest = {{{ makeGetValue('varargs', '0', 'i32') }}}; + {{{ makeSetValue('dest', '0', 'end - start', 'i32') }}}; + return 0; + }, + // ========================================================================== // emscripten.h // ========================================================================== diff --git a/src/settings.js b/src/settings.js index 0b9cf14b..9d0ccc05 100644 --- a/src/settings.js +++ b/src/settings.js @@ -1126,6 +1126,7 @@ var C_DEFINES = {'SI_MESGQ': '5', '_CS_POSIX_V7_LP64_OFF64_LDFLAGS': '10', '_SC_TTY_NAME_MAX': '41', 'AF_INET': '1', - 'AF_INET6': '6' + 'AF_INET6': '6', + 'FIONREAD': '1' }; |