zx_socket_share

NAME

Send another socket object via a socket.

SYNOPSIS

#include <zircon/syscalls.h>

zx_status_t zx_socket_share(zx_handle_t handle, zx_handle_t socket_to_share);

DESCRIPTION

zx_socket_share() attempts to send a new socket via an existing socket connection. The signal ZX_SOCKET_SHARE is asserted when it is possible to send a socket.

On success, the socket_to_share is placed into the handle‘s share queue, and is no longer accessible to the caller’s process. On any failure, socket_to_share is discarded rather than transferred.

RIGHTS

handle must be of type ZX_OBJ_TYPE_SOCKET and have ZX_RIGHT_WRITE.

socket_to_share must be of type ZX_OBJ_TYPE_SOCKET and have ZX_RIGHT_TRANSFER.

RETURN VALUE

zx_socket_share() returns ZX_OK on success. In the event of failure, one of the following values is returned.

ERRORS

ZX_ERR_BAD_HANDLE The handle handle or socket_to_share is invalid.

ZX_ERR_WRONG_TYPE The handle handle or socket_to_share is not a socket handle.

ZX_ERR_ACCESS_DENIED The handle handle lacks ZX_RIGHT_WRITE or the handle socket_to_share lacks ZX_RIGHT_TRANSFER.

ZX_ERR_BAD_STATE The socket_to_share was a handle to the same socket as handle or to the other endpoint of handle or the socket_to_share itself is capable of sharing.

ZX_ERR_SHOULD_WAIT There is already a socket in the share queue.

ZX_ERR_NOT_SUPPORTED This socket does not support the transfer of sockets. It was not created with the ZX_SOCKET_HAS_ACCEPT option.

ZX_ERR_PEER_CLOSED The socket endpoint's peer is closed.

LIMITATIONS

The socket share queue is only one element deep.

SEE ALSO