1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-25 23:21:54 +03:00

r22960: added a SOCKET_FLAG_NOCLOSE to allow us to tell the socket layer that

we will handle the close of the socket
This commit is contained in:
Andrew Tridgell 2007-05-17 02:19:28 +00:00 committed by Gerald (Jerry) Carter
parent 6d06132ea9
commit d57aaf5ba6
2 changed files with 12 additions and 1 deletions

View File

@ -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 @@ _PUBLIC_ void set_socket_options(int fd, const char *options)
talloc_free(options_list);
}
/*
set some flags on a socket
*/
void socket_set_flags(struct socket_context *sock, unsigned flags)
{
sock->flags |= flags;
}

View File

@ -109,6 +109,8 @@ enum socket_state {
* 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;
@ -196,5 +198,6 @@ NTSTATUS socket_connect_multi(TALLOC_CTX *mem_ctx, const char *server_address,
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 */