NAME
     socket_release() - release ownership of a socket to  another
     object

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

DESCRIPTION
     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  ini-
     tiated  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  successfully  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.

SEE ALSO
     socket_acquire(3)

Help topics available:
socket_accept socket_acquire socket_bind socket_error socket_listen
socket_close socket_release socket_write socket_address socket_connect
socket_create

[START|BACK ]




[ NannyMuds main page | FAQ | Contact us ]

You are guest number 133 since November 2019.
This file was last modified: June 2000.