Commit Graph

9 Commits

Author SHA1 Message Date
Willy Tarreau
e6ca1fcd84 [MINOR] listeners: add support for queueing resource limited listeners
When a listeners encounters a resource shortage, it currently stops until
one re-enables it. This is far from being perfect as it does not yet handle
the case where the single connection from the listener is rejected (eg: the
stats page).

Now we'll have a special status for resource limited listeners and we'll
queue them into one or multiple lists. That way, each time we have to stop
a listener because of a resource shortage, we can enqueue it and change its
state, so that it is dequeued once more resources are available.

This patch currently does not change any existing behaviour, it only adds
the basic building blocks for doing that.
2011-07-24 22:03:52 +02:00
Willy Tarreau
627937158f [MINOR] listeners: add listen_full() to mark a listener full
This is just a cleanup which removes calls to EV_FD_CLR() and state
setting everywhere in the code.
2011-07-24 19:25:28 +02:00
Willy Tarreau
be58c38264 [MEDIUM] proxy: add a PAUSED state to listeners and move socket tricks out of proxy.c
Managing listeners state is difficult because they have their own state
and can at the same time have theirs dictated by their proxy. The pause
is not done properly, as the proxy code is fiddling with sockets. By
introducing new functions such as pause_listener()/resume_listener(), we
make it a bit more obvious how/when they're supposed to be used. The
listen_proxies() function was also renamed to resume_proxies() since
it's only used for pause/resume.

This patch is the first in a series aiming at getting rid of the maintain_proxies
mess. In the end, proxies should not call enable_listener()/disable_listener()
anymore.
2011-07-24 19:09:37 +02:00
Emeric Brun
cf20bf1c1c [MEDIUM] Enhance message errors management on binds 2010-11-05 10:34:07 +01:00
Willy Tarreau
3acf8c3da8 [MINOR] add a generic unbind_all_listeners() primitive
Most protocols will be able to share a single unbind_all_listeners()
primitive. Provide it in protocols.c.
2007-11-04 22:42:49 +01:00
Willy Tarreau
1a64d16720 [MINOR] add a generic delete_listener() primitive
Most protocols will be able to share a single delete_listener()
primitive. Provide it in protocols.c, and remove the specific
version from proto_uxst.
2007-11-04 22:42:49 +01:00
Willy Tarreau
b648d6383b [MINOR] add a generic unbind_listener() primitive
Most protocols will be able to share a single unbind_listener()
primitive. Provided it in protocols.c.
2007-11-04 22:42:49 +01:00
Willy Tarreau
dabf2e2647 [MAJOR] added a new state to listeners
There was a missing state for listeners, when they are not listening
but still attached to the protocol. The LI_ASSIGNED state was added
for this purpose. This permitted to clean up the assignment/release
workflow quite a bit. Generic enable/enable_all/disable/disable_all
primitives were added, and a disable_all entry was added to the
struct protocol.
2007-11-04 22:42:48 +01:00
Willy Tarreau
dd81598553 [MAJOR] added generic protocol support
A new generic protocol mechanism has been added. It provides
an easy method to implement new protocols with different
listeners (eg: unix sockets).

The listeners are automatically started at the right moment
and enabled after the possible fork().
2007-10-18 14:11:12 +02:00