| Index: native_client_sdk/src/libraries/nacl_io/mount_node_socket.cc
|
| diff --git a/native_client_sdk/src/libraries/nacl_io/mount_node_socket.cc b/native_client_sdk/src/libraries/nacl_io/mount_node_socket.cc
|
| index abaf55ba1e9e48ae0a89fa16d08b65d87ce62962..87d6f484d3a33b5852fff6bfd09cbea7e1176386 100644
|
| --- a/native_client_sdk/src/libraries/nacl_io/mount_node_socket.cc
|
| +++ b/native_client_sdk/src/libraries/nacl_io/mount_node_socket.cc
|
| @@ -204,14 +204,27 @@ Error MountNodeSocket::GetSockOpt(int lvl,
|
| int optname,
|
| void* optval,
|
| socklen_t* len) {
|
| - return EINVAL;
|
| + if (lvl != SOL_SOCKET)
|
| + return ENOPROTOOPT;
|
| +
|
| + switch (optname) {
|
| + case SO_ERROR: {
|
| + int copy_bytes = std::min(sizeof(int), *len);
|
| + memcpy(optval, &last_errno_, copy_bytes);
|
| + *len = sizeof(int);
|
| + last_errno_ = 0;
|
| + return 0;
|
| + }
|
| + }
|
| +
|
| + return ENOPROTOOPT;
|
| }
|
|
|
| Error MountNodeSocket::SetSockOpt(int lvl,
|
| int optname,
|
| const void* optval,
|
| socklen_t len) {
|
| - return EINVAL;
|
| + return ENOPROTOOPT;
|
| }
|
|
|
| Error MountNodeSocket::Bind(const struct sockaddr* addr, socklen_t len) {
|
| @@ -372,4 +385,4 @@ Error MountNodeSocket::GetSockName(struct sockaddr* addr, socklen_t* len) {
|
|
|
| } // namespace nacl_io
|
|
|
| -#endif // PROVIDES_SOCKET_API
|
| +#endif // PROVIDES_SOCKET_API
|
|
|