mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-22 06:11:32 +02:00
[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:
parent
8eebe5ea40
commit
b648d6383b
@ -51,6 +51,13 @@ int enable_all_listeners(struct protocol *proto);
|
|||||||
*/
|
*/
|
||||||
int disable_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> */
|
/* Registers the protocol <proto> */
|
||||||
void protocol_register(struct protocol *proto);
|
void protocol_register(struct protocol *proto);
|
||||||
|
|
||||||
|
@ -20,6 +20,8 @@
|
|||||||
|
|
||||||
#include <types/protocols.h>
|
#include <types/protocols.h>
|
||||||
|
|
||||||
|
#include <proto/fd.h>
|
||||||
|
|
||||||
/* List head of all registered protocols */
|
/* List head of all registered protocols */
|
||||||
static struct list protocols = LIST_HEAD_INIT(protocols);
|
static struct list protocols = LIST_HEAD_INIT(protocols);
|
||||||
|
|
||||||
@ -81,6 +83,23 @@ int disable_all_listeners(struct protocol *proto)
|
|||||||
return ERR_NONE;
|
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> */
|
/* Registers the protocol <proto> */
|
||||||
void protocol_register(struct protocol *proto)
|
void protocol_register(struct protocol *proto)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user