*/
int pause_listener(struct listener *l)
{
+ struct proxy *px = l->bind_conf->frontend;
int ret = 1;
HA_SPIN_LOCK(LISTENER_LOCK, &l->lock);
fd_stop_recv(l->rx.fd);
listener_set_state(l, LI_PAUSED);
+
+ if (px && !px->li_ready) {
+ ha_warning("Paused %s %s.\n", proxy_cap_str(px->cap), px->id);
+ send_log(px, LOG_WARNING, "Paused %s %s.\n", proxy_cap_str(px->cap), px->id);
+ }
end:
HA_SPIN_UNLOCK(LISTENER_LOCK, &l->lock);
return ret;
*/
int resume_listener(struct listener *l)
{
+ struct proxy *px = l->bind_conf->frontend;
+ int was_paused = px && px->li_paused;
int ret = 1;
HA_SPIN_LOCK(LISTENER_LOCK, &l->lock);
if (l->maxconn && l->nbconn >= l->maxconn) {
listener_set_state(l, LI_FULL);
- goto end;
+ goto done;
}
fd_want_recv(l->rx.fd);
listener_set_state(l, LI_READY);
+
+ done:
+ if (was_paused && !px->li_paused) {
+ ha_warning("Resumed %s %s.\n", proxy_cap_str(px->cap), px->id);
+ send_log(px, LOG_WARNING, "Resumed %s %s.\n", proxy_cap_str(px->cap), px->id);
+ }
end:
HA_SPIN_UNLOCK(LISTENER_LOCK, &l->lock);
return ret;
if (!(p->cap & PR_CAP_FE) || p->disabled || !p->li_ready)
return 1;
- ha_warning("Pausing %s %s.\n", proxy_cap_str(p->cap), p->id);
- send_log(p, LOG_WARNING, "Pausing %s %s.\n", proxy_cap_str(p->cap), p->id);
-
list_for_each_entry(l, &p->conf.listeners, by_fe)
pause_listener(l);
if (p->disabled || !p->li_paused)
return 1;
- ha_warning("Enabling %s %s.\n", proxy_cap_str(p->cap), p->id);
- send_log(p, LOG_WARNING, "Enabling %s %s.\n", proxy_cap_str(p->cap), p->id);
-
fail = 0;
list_for_each_entry(l, &p->conf.listeners, by_fe) {
if (!resume_listener(l)) {