1# zx_socket_accept
2
3socket_accept - receive another socket object via a socket
4
5## SYNOPSIS
6
7```
8#include <zircon/syscalls.h>
9
10zx_status_t zx_socket_accept(zx_handle_t socket, zx_handle_t* out_socket);
11```
12
13### DESCRIPTION
14
15**socket_accept**() attempts to receive a new socket via an existing socket
16connection.  The signal **ZX_SOCKET_ACCEPT** is asserted when there is a new
17socket available.
18
19## RIGHTS
20
21TODO(ZX-2399)
22
23## RETURN VALUE
24
25**socket_accept**() returns **ZX_OK** on success and the received handle
26is returned via *out_socket*.  In the event of failure, one of the following
27values is returned.
28
29## ERRORS
30
31**ZX_ERR_BAD_HANDLE**  The handle *socket* is invalid.
32
33**ZX_ERR_WRONG_TYPE**  The handle *socket* is not a socket handle.
34
35**ZX_ERR_ACCESS_DENIED**  The handle *socket* lacks **ZX_RIGHT_READ**.
36
37**ZX_ERR_INVALID_ARGS**  *out_socket* is an invalid pointer.
38
39**ZX_ERR_SHOULD_WAIT**  There is no new socket ready to be accepted.
40
41**ZX_ERR_NOT_SUPPORTED**  This socket does not support the transfer of sockets.
42It was not created with the **ZX_SOCKET_HAS_ACCEPT** option.
43
44## LIMITATIONS
45
46The socket accept queue is only one element deep.
47
48## SEE ALSO
49
50[socket_create](socket_create.md),
51[socket_read](socket_read.md),
52[socket_share](socket_share.md),
53[socket_write](socket_write.md).
54