* socket_getsockopt() now supports all boolean SO_* options as well.
* socket_listen() now sets the SO_ACCEPTCONN flag if it succeeds. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18476 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -290,6 +290,22 @@ socket_getsockopt(net_socket *socket, int level, int option, void *value,
|
|||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case SO_ACCEPTCONN:
|
||||||
|
case SO_BROADCAST:
|
||||||
|
case SO_DEBUG:
|
||||||
|
case SO_DONTROUTE:
|
||||||
|
case SO_KEEPALIVE:
|
||||||
|
case SO_OOBINLINE:
|
||||||
|
case SO_REUSEADDR:
|
||||||
|
case SO_REUSEPORT:
|
||||||
|
case SO_USELOOPBACK:
|
||||||
|
{
|
||||||
|
int32 *_set = (int32 *)value;
|
||||||
|
*_set = (socket->options & option) != 0;
|
||||||
|
*_length = sizeof(int32);
|
||||||
|
return B_OK;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -301,7 +317,11 @@ socket_getsockopt(net_socket *socket, int level, int option, void *value,
|
|||||||
int
|
int
|
||||||
socket_listen(net_socket *socket, int backlog)
|
socket_listen(net_socket *socket, int backlog)
|
||||||
{
|
{
|
||||||
return socket->first_info->listen(socket->first_protocol, backlog);
|
status_t status = socket->first_info->listen(socket->first_protocol, backlog);
|
||||||
|
if (status == B_OK)
|
||||||
|
socket->options |= SO_ACCEPTCONN;
|
||||||
|
|
||||||
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user