
socket_release(3)     LPC Library Functions     socket_release(3)

NNAAMMEE
       socket_release()  -  release  ownership  of  a  socket  to
       another object

SSYYNNOOPPSSIISS
       #include <socket_err.h>

       int socket_release( int socket, object ob,
                           string release_callback );

DDEESSCCRRIIPPTTIIOONN
       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.

SSEEEE AALLSSOO
       socket_acquire(3)

MudOS                       5 Sep 1994                          1

