diff --git a/uwsgi.c b/uwsgi.c index cab84d69..b060ed5a 100644 --- a/uwsgi.c +++ b/uwsgi.c @@ -344,6 +344,7 @@ static struct uwsgi_option uwsgi_base_options[] = { #endif {"reuse-port", no_argument, 0, "enable REUSE_PORT flag on socket (BSD only)", uwsgi_opt_true, &uwsgi.reuse_port, 0}, {"zerg", required_argument, 0, "attach to a zerg server", uwsgi_opt_set_str, &uwsgi.zerg_node, 0}, + {"zerg-fallback", no_argument, 0, "fallback to normal sockets if the zerg server is not available", uwsgi_opt_true, &uwsgi.zerg_fallback, 0}, {"zerg-server", required_argument, 0, "enable the zerg server on the specified UNIX socket", uwsgi_opt_set_str, &uwsgi.zerg_server, UWSGI_OPT_MASTER}, // FUTURE additions //{"zerg-pool", required_argument, 0, "create a zerg pool", uwsgi_opt_zerg_pool, NULL, 0}, @@ -1957,6 +1958,9 @@ int uwsgi_start(void *v_argv) { if (uwsgi.zerg_node) { if (uwsgi_zerg_attach(uwsgi.zerg_node)) { + if (!uwsgi.zerg_fallback) { + exit(1); + } } } diff --git a/uwsgi.h b/uwsgi.h index 38071ac8..63636402 100644 --- a/uwsgi.h +++ b/uwsgi.h @@ -1069,6 +1069,7 @@ struct uwsgi_server { int *zerg; char *zerg_server; char *zerg_node; + int zerg_fallback; int zerg_server_fd; // security