lpc4/lib/
lpc4/lib/doc/efun/
lpc4/lib/doc/lfun/
lpc4/lib/doc/operators/
lpc4/lib/doc/simul_efuns/
lpc4/lib/doc/types/
lpc4/lib/etc/
lpc4/lib/include/
lpc4/lib/include/arpa/
lpc4/lib/obj/d/
lpc4/lib/save/
lpc4/lib/secure/
lpc4/lib/std/
lpc4/lib/std/living/
NAME
	socket_accept - accept a connection on a socket

SYNOPSIS
	#include <socket.h>
	#include <socket_errors.h>

	int socket_accept(int s,function read_callback,
		function write_callback)

DESCRIPTION
	The argument s is a socket that has been created with socket_create(3),
	bound to an address with socket_bind(3), and is listening for
	connections after a socket_listen(3). socket_accept() extracts the
	first connection on the queue of pending connections, creates a new
	socket with the same properties of s and allocates a new file
	descriptor for the socket. If no pending connections are present on
	the queue, socket_accept() returns an error as described below.
	The accepted socket is used to read and write data to and from the
	socket which connected to this one; it is not used to accept more
	connections. The original socket s remains open for accepting further
	connections.

	The argument close_callback is the name of a function for the driver
	to call if the socket closes unexpectedly, i.e. not as the result of
	a socket_close call. The close callback should follow this format:

	void close_callback(int fd)

	Where fd is the socket which has closed.

	The argument write_callback is the name of a function for the driver
	to call when the new socket (not the accepting socket) is ready to be
	written to. The write callback should follow this format:

	void write_callback(int fd)

	Where fd is the socket which is ready to be written to.

RETURN VALUES
	socket_accept() returns a non-negative descriptor for the accepted
	socket on success. On failure, it returns a negative value.
	socket_error can be used on the return value to get a text
	description of the error.

ERRORS
	EEFDRANGE	Descriptor out of range.
	EEBADF		Descriptor is invalid.
	EESECURITY	Security violation attempted.
	EEMODENOTSUPP	Socket mode not supported.
	EENOTLISTN	Socket not listening.
	EEWOULDBLOCK	Operation would block.
	EEINTR		Interrupted system call.
	EEACCEPT	Problem with accept.
	EENOSOCKS	No more available efun sockets.

SEE ALSO
	socket_bind, socket_connect, socket_create, socket_listen