socket_release(3) LPC Library Functions socket_release(3)
NNAAMMEE
socket_release() - release ownership of a socket to
another object
SSYYNNOOPPSSIISS
#include <socket_err.h>
int socket_release( int socket, object ob,
string release_callback );
DDEESSCCRRIIPPTTIIOONN
socket_release() is used to change ownership (and control)
of a socket to another object. It is useful in daemon
objects (like inetd) which handle connection set-up and
then transfer a connected socket to another object for
further processing.
Socket ownership transfer involves a handshake between the
current owner object and the socket to which the current
owner wishes to transfer the socket. The handshake is
initiated when socket_release() is called.
socket_release() does appropriate security/integrity
checking and then calls the release_callback function in
object ob. This function is used to notify ob that socket
ownership is being transferred to it. It is then ob's
responsibility to call socket_acquire() within the release
callback function. If socket_acquire() is called then the
handshake is complete and socket ownership has been suc-
cessfully transferred to ob. ob may decline to accept
responsibility for the socket by not calling
socket_acquire(), in which case ownership does not change
and the current socket owner must decide how to respond to
this.
If the socket owner is successfully transfered then
socket_release() returns EESUCCESS. If ob does not accept
ownership for the socket then EESOCKNOTRLSD is returned.
Other errors can be returned based on security violation,
bad socket descriptor vbalues, etc.
SSEEEE AALLSSOO
socket_acquire(3)
MudOS 5 Sep 1994 1