int socket_release( int socket, object ob, string release_callback );
整数 socket_release( 整数 socket, 物件 ob, 字符串 release_callback );
socket 所有权的转移包括了一个目前拥有所有权物件和这个物件想转移 socket 的物件间的握手程序(handshake)。这个握手程序是由调用 socket_release() 开始的。socket_release() 经过安全性、完整性(integrity)检查后,再调用物件 ob 的 release_callback 函数。这个函数是用来通知 ob socket 所有权将要转移给它。然后 ob 有责任在释放回呼(callback)函数中调用 socket_acquire()。如果调用了 socket_acquire(),握手程序就完成了,而 socket 所有权就已经成功地转移给 ob。ob 也可以不调用 socket_acquire() 而婉谢接受这个 socket 的责任,此时,所有权不会改变,而且原来的 socket 所有者必须决定如何回应这个情况。
如果 socket 所有者成功地转移,则 socket_release() 会返回 EESUCCESS。如果 ob 不接受这个 socket 的所有权的话,则会返回 EESOCKNOTRLSD。其他基于违反安全、错误的 socket 描述值(descriptor) 等的错误码也可能返回。