Author: tridge Date: 2007-05-17 02:19:28 +0000 (Thu, 17 May 2007) New Revision: 22960
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=22960 Log: added a SOCKET_FLAG_NOCLOSE to allow us to tell the socket layer that we will handle the close of the socket Modified: branches/SAMBA_4_0/source/lib/socket/socket.c branches/SAMBA_4_0/source/lib/socket/socket.h Changeset: Modified: branches/SAMBA_4_0/source/lib/socket/socket.c =================================================================== --- branches/SAMBA_4_0/source/lib/socket/socket.c 2007-05-17 02:18:29 UTC (rev 22959) +++ branches/SAMBA_4_0/source/lib/socket/socket.c 2007-05-17 02:19:28 UTC (rev 22960) @@ -30,7 +30,8 @@ */ static int socket_destructor(struct socket_context *sock) { - if (sock->ops->fn_close) { + if (sock->ops->fn_close && + !(sock->flags & SOCKET_FLAG_NOCLOSE)) { sock->ops->fn_close(sock); } return 0; @@ -547,3 +548,10 @@ talloc_free(options_list); } +/* + set some flags on a socket + */ +void socket_set_flags(struct socket_context *sock, unsigned flags) +{ + sock->flags |= flags; +} Modified: branches/SAMBA_4_0/source/lib/socket/socket.h =================================================================== --- branches/SAMBA_4_0/source/lib/socket/socket.h 2007-05-17 02:18:29 UTC (rev 22959) +++ branches/SAMBA_4_0/source/lib/socket/socket.h 2007-05-17 02:19:28 UTC (rev 22960) @@ -109,7 +109,9 @@ * is encrypting data. * This modifies the * TESTNONBLOCK case */ +#define SOCKET_FLAG_NOCLOSE 0x00000010 /* don't auto-close on free */ + struct socket_context { enum socket_type type; enum socket_state state; @@ -196,5 +198,6 @@ struct socket_context **result, uint16_t *port); void set_socket_options(int fd, const char *options); +void socket_set_flags(struct socket_context *socket, unsigned flags); #endif /* _SAMBA_SOCKET_H */