mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-21 22:01:31 +02:00
MINOR: fd: move .exported into fdtab[].state
No need to keep this flag apart any more, let's merge it into the global state.
This commit is contained in:
parent
5362bc9044
commit
9063a660cc
@ -67,6 +67,7 @@ enum {
|
|||||||
#define FD_CLONED_BIT 17 /* cloned socket, requires EPOLL_CTL_DEL on close */
|
#define FD_CLONED_BIT 17 /* cloned socket, requires EPOLL_CTL_DEL on close */
|
||||||
#define FD_INITIALIZED_BIT 18 /* init phase was done (e.g. output pipe set non-blocking) */
|
#define FD_INITIALIZED_BIT 18 /* init phase was done (e.g. output pipe set non-blocking) */
|
||||||
#define FD_ET_POSSIBLE_BIT 19 /* edge-triggered is possible on this FD */
|
#define FD_ET_POSSIBLE_BIT 19 /* edge-triggered is possible on this FD */
|
||||||
|
#define FD_EXPORTED_BIT 20 /* FD is exported and must not be closed */
|
||||||
|
|
||||||
|
|
||||||
/* and flag values */
|
/* and flag values */
|
||||||
@ -105,6 +106,7 @@ enum {
|
|||||||
#define FD_CLONED (1U << FD_CLONED_BIT)
|
#define FD_CLONED (1U << FD_CLONED_BIT)
|
||||||
#define FD_INITIALIZED (1U << FD_INITIALIZED_BIT)
|
#define FD_INITIALIZED (1U << FD_INITIALIZED_BIT)
|
||||||
#define FD_ET_POSSIBLE (1U << FD_ET_POSSIBLE_BIT)
|
#define FD_ET_POSSIBLE (1U << FD_ET_POSSIBLE_BIT)
|
||||||
|
#define FD_EXPORTED (1U << FD_EXPORTED_BIT)
|
||||||
|
|
||||||
/* This is the value used to mark a file descriptor as dead. This value is
|
/* This is the value used to mark a file descriptor as dead. This value is
|
||||||
* negative, this is important so that tests on fd < 0 properly match. It
|
* negative, this is important so that tests on fd < 0 properly match. It
|
||||||
@ -153,7 +155,6 @@ struct fdtab {
|
|||||||
void (*iocb)(int fd); /* I/O handler */
|
void (*iocb)(int fd); /* I/O handler */
|
||||||
void *owner; /* the connection or listener associated with this fd, NULL if closed */
|
void *owner; /* the connection or listener associated with this fd, NULL if closed */
|
||||||
unsigned int state; /* FD state for read and write directions (FD_EV_*) + FD_POLL_* */
|
unsigned int state; /* FD state for read and write directions (FD_EV_*) + FD_POLL_* */
|
||||||
unsigned char exported:1; /* 1 if the FD is exported and must not be closed */
|
|
||||||
#ifdef DEBUG_FD
|
#ifdef DEBUG_FD
|
||||||
unsigned int event_count; /* number of events reported */
|
unsigned int event_count; /* number of events reported */
|
||||||
#endif
|
#endif
|
||||||
|
@ -433,7 +433,6 @@ static inline void fd_insert(int fd, void *owner, void (*iocb)(int fd), unsigned
|
|||||||
fdtab[fd].owner = owner;
|
fdtab[fd].owner = owner;
|
||||||
fdtab[fd].iocb = iocb;
|
fdtab[fd].iocb = iocb;
|
||||||
fdtab[fd].state = 0;
|
fdtab[fd].state = 0;
|
||||||
fdtab[fd].exported = 0;
|
|
||||||
#ifdef DEBUG_FD
|
#ifdef DEBUG_FD
|
||||||
fdtab[fd].event_count = 0;
|
fdtab[fd].event_count = 0;
|
||||||
#endif
|
#endif
|
||||||
|
@ -1889,7 +1889,7 @@ static int _getsocks(char **args, char *payload, struct appctx *appctx, void *pr
|
|||||||
* the caller know how much it should expect.
|
* the caller know how much it should expect.
|
||||||
*/
|
*/
|
||||||
for (cur_fd = 0;cur_fd < global.maxsock; cur_fd++)
|
for (cur_fd = 0;cur_fd < global.maxsock; cur_fd++)
|
||||||
tot_fd_nb += fdtab[cur_fd].exported;
|
tot_fd_nb += !!(fdtab[cur_fd].state & FD_EXPORTED);
|
||||||
|
|
||||||
if (tot_fd_nb == 0)
|
if (tot_fd_nb == 0)
|
||||||
goto out;
|
goto out;
|
||||||
@ -1933,7 +1933,7 @@ static int _getsocks(char **args, char *payload, struct appctx *appctx, void *pr
|
|||||||
nb_queued = 0;
|
nb_queued = 0;
|
||||||
iov.iov_base = tmpbuf;
|
iov.iov_base = tmpbuf;
|
||||||
for (cur_fd = 0; cur_fd < global.maxsock; cur_fd++) {
|
for (cur_fd = 0; cur_fd < global.maxsock; cur_fd++) {
|
||||||
if (!(fdtab[cur_fd].exported))
|
if (!(fdtab[cur_fd].state & FD_EXPORTED))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
ns_name = if_name = "";
|
ns_name = if_name = "";
|
||||||
|
1
src/fd.c
1
src/fd.c
@ -320,7 +320,6 @@ void _fd_delete_orphan(int fd)
|
|||||||
#endif
|
#endif
|
||||||
fdinfo[fd].port_range = NULL;
|
fdinfo[fd].port_range = NULL;
|
||||||
fdtab[fd].owner = NULL;
|
fdtab[fd].owner = NULL;
|
||||||
fdtab[fd].exported = 0;
|
|
||||||
/* perform the close() call last as it's what unlocks the instant reuse
|
/* perform the close() call last as it's what unlocks the instant reuse
|
||||||
* of this FD by any other thread.
|
* of this FD by any other thread.
|
||||||
*/
|
*/
|
||||||
|
@ -395,7 +395,7 @@ int sock_inet_bind_receiver(struct receiver *rx, char **errmsg)
|
|||||||
|
|
||||||
/* for now, all regularly bound TCP listeners are exportable */
|
/* for now, all regularly bound TCP listeners are exportable */
|
||||||
if (!(rx->flags & RX_F_INHERITED))
|
if (!(rx->flags & RX_F_INHERITED))
|
||||||
fdtab[fd].exported = 1;
|
HA_ATOMIC_OR(&fdtab[fd].state, FD_EXPORTED);
|
||||||
|
|
||||||
bind_return:
|
bind_return:
|
||||||
if (errmsg && *errmsg) {
|
if (errmsg && *errmsg) {
|
||||||
|
@ -289,7 +289,7 @@ int sock_unix_bind_receiver(struct receiver *rx, char **errmsg)
|
|||||||
|
|
||||||
/* for now, all regularly bound TCP listeners are exportable */
|
/* for now, all regularly bound TCP listeners are exportable */
|
||||||
if (!(rx->flags & RX_F_INHERITED))
|
if (!(rx->flags & RX_F_INHERITED))
|
||||||
fdtab[fd].exported = 1;
|
HA_ATOMIC_OR(&fdtab[fd].state, FD_EXPORTED);
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user