From the NannyMUD documentation

LAST CHANGE

2001-10-02

FUNCTION


NAME

        socket_accept - Accept a connection on a socket.

SYNTAX

        #include 
        #include 

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

DESCRIPTION

        The argument s is a socket that has been created with
        socket_create, bound to an address with socket_bind, and is
        listening for connections after a socket_listen.
        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 read_callback is the name of a function for the
        driver to call when there is something to read on the
        socket. The read call-back should follow this format:

	void read_callback(int fd, string message)

        Where fd is the socket which has the message.
  
        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 VALUE
        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 in efun/socket/socket_bind

SEE ALSO

        socket_connect in efun/socket/socket_connect

SEE ALSO

        socket_create in efun/socket/socket_create
        socket_create in efun/socket/socket_create

SEE ALSO

        socket_listen in efun/socket/socket_listen