<HEAD> <TITLE> socket_release - release ownership of a socket to another object </TITLE> </HEAD> <BODY BACKGROUND=http://www.imaginary.com/~beek/gifs/bg.jpg TEXT=#000000 ALINK=#FFFF00 VLINK=#550000 LINK=#000099> <center> <H1> socket_release - release ownership of a socket to another object </H1> </center> <p> <b> int socket_release( int socket, object ob, string release_callback ); </b> <p> This efun is only available if PACKAGE_SOCKETS is compiled in. <p> 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. <p> 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 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. <p> 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 (both in "socket_err.h"). Other errors can be returned based on security violation, bad socket descriptor vbalues, etc. <p> See also: <A HREF=socket_acquire.html> socket_acquire </A> <p> <HR> <ADDRESS> <A HREF=http://wagner.princeton.edu/~tim> Tim Hollebeek </A> <p> <A HREF="http://www.imaginary.com/~beek/"> Beek </A>@ZorkMUD, Lima Bean, IdeaExchange, TMI-2, and elsewhere </ADDRESS> <p>