[MINOR] add a generic unbind_listener() primitive

Most protocols will be able to share a single unbind_listener()
primitive. Provided it in protocols.c.
This commit is contained in:
Willy Tarreau 2007-10-28 22:13:50 +01:00
parent 8eebe5ea40
commit b648d6383b
2 changed files with 26 additions and 0 deletions

View File

@ -51,6 +51,13 @@ int enable_all_listeners(struct protocol *proto);
*/
int disable_all_listeners(struct protocol *proto);
/* This function closes the listening socket for the specified listener,
* provided that it's already in a listening state. The listener enters the
* LI_ASSIGNED state. It always returns ERR_NONE. This function is intended
* to be used as a generic function for standard protocols.
*/
int unbind_listener(struct listener *listener);
/* Registers the protocol <proto> */
void protocol_register(struct protocol *proto);

View File

@ -20,6 +20,8 @@
#include <types/protocols.h>
#include <proto/fd.h>
/* List head of all registered protocols */
static struct list protocols = LIST_HEAD_INIT(protocols);
@ -81,6 +83,23 @@ int disable_all_listeners(struct protocol *proto)
return ERR_NONE;
}
/* This function closes the listening socket for the specified listener,
* provided that it's already in a listening state. The listener enters the
* LI_ASSIGNED state. It always returns ERR_NONE. This function is intended
* to be used as a generic function for standard protocols.
*/
int unbind_listener(struct listener *listener)
{
if (listener->state == LI_READY)
EV_FD_CLR(listener->fd, DIR_RD);
if (listener->state >= LI_LISTEN) {
fd_delete(listener->fd);
listener->state = LI_ASSIGNED;
}
return ERR_NONE;
}
/* Registers the protocol <proto> */
void protocol_register(struct protocol *proto)
{