diff --git a/buildconf/upcode.ini b/buildconf/upcode.ini new file mode 100644 index 00000000..71d685d7 --- /dev/null +++ b/buildconf/upcode.ini @@ -0,0 +1,49 @@ +[uwsgi] +xml = false +ini = true +yaml = false +json = false +sqlite3 = false +zeromq = false +snmp = false +sctp = false +spooler = true +embedded = true +udp = true +multicast = false +threading = true +sendfile = true +minterpreters = true +async = true +evdis = false +ldap = false +pcre = true +routing = true +debug = false +unbit = false +xml_implementation = libxml2 +yaml_implementation = auto +malloc_implementation = libc +extras = +plugins = +bin_name = uwsgi +append_version = +plugin_dir = . +embedded_plugins = +as_shared_library = false + +locking = auto +event = auto +timer = auto +filemonitor = auto + +blacklist = +whitelist = + +embed_files = + +embed_config = + +[python] +paste = true +web3 = true diff --git a/plugins/fastrouter/fastrouter.c b/plugins/fastrouter/fastrouter.c index a2c7a6aa..844f94ce 100644 --- a/plugins/fastrouter/fastrouter.c +++ b/plugins/fastrouter/fastrouter.c @@ -37,6 +37,7 @@ struct uwsgi_fastrouter { int has_subscription_sockets; int processes; + int quiet; struct rb_root *timeouts; @@ -203,6 +204,7 @@ struct uwsgi_option fastrouter_options[] = { {"fastrouter-to", required_argument, 0, "forward requests to the specified uwsgi server (you can specify it multiple times for load balancing)", uwsgi_opt_add_string_list, &ufr.static_nodes, 0}, {"fastrouter-gracetime", required_argument, 0, "retry connections to dead static nodes after the specified amount of seconds", uwsgi_opt_set_int, &ufr.static_node_gracetime, 0}, {"fastrouter-events", required_argument, 0, "set the maximum number of concurrent events", uwsgi_opt_set_int, &ufr.nevents, 0}, + {"fastrouter-quiet", required_argument, 0, "do not report failed connections to instances", uwsgi_opt_true, &ufr.quiet, 0}, {"fastrouter-cheap", no_argument, 0, "run the fastrouter in cheap mode", uwsgi_opt_true, &ufr.cheap, 0}, {"fastrouter-subscription-server", required_argument, 0, "run the fastrouter subscription server on the spcified address", uwsgi_opt_fastrouter_ss, NULL, 0}, {"fastrouter-subscription-slot", required_argument, 0, "*** deprecated ***", uwsgi_opt_deprecated, (void *) "useless thanks to the new implementation", 0}, @@ -293,8 +295,6 @@ static struct uwsgi_rb_timer *reset_timeout(struct fastrouter_session *); static void close_session(struct fastrouter_session *fr_session) { - if (fr_session->tmp_socket_name) - free(fr_session->buf_file_name); if (fr_session->instance_fd != -1) { close(fr_session->instance_fd); @@ -304,15 +304,17 @@ static void close_session(struct fastrouter_session *fr_session) { if (fr_session->instance_failed) { if (fr_session->soopt) { - uwsgi_log("unable to connect() to uwsgi instance \"%.*s\": %s\n", fr_session->instance_address_len, fr_session->instance_address, strerror(fr_session->soopt)); + if (!ufr.quiet) + uwsgi_log("unable to connect() to uwsgi instance \"%.*s\": %s\n", (int) fr_session->instance_address_len, fr_session->instance_address, strerror(fr_session->soopt)); } else if (fr_session->timed_out) { if (fr_session->instance_address_len > 0) { if (fr_session->status == FASTROUTER_STATUS_CONNECTING) { - uwsgi_log("unable to connect() to uwsgi instance \"%.*s\": timeout\n", fr_session->instance_address_len, fr_session->instance_address); + if (!ufr.quiet) + uwsgi_log("unable to connect() to uwsgi instance \"%.*s\": timeout\n", (int) fr_session->instance_address_len, fr_session->instance_address); } else if (fr_session->status == FASTROUTER_STATUS_RESPONSE) { - uwsgi_log("timeout waiting for instance \"%.*s\"\n", fr_session->instance_address_len, fr_session->instance_address); + uwsgi_log("timeout waiting for instance \"%.*s\"\n", (int) fr_session->instance_address_len, fr_session->instance_address); } } } @@ -347,6 +349,11 @@ static void close_session(struct fastrouter_session *fr_session) { } + if (fr_session->tmp_socket_name) { + free(fr_session->tmp_socket_name); + fr_session->tmp_socket_name = NULL; + } + if (ufr.fallback) { // ok let's try with the fallback nodes if (!fr_session->fallback) { @@ -393,6 +400,10 @@ static void close_session(struct fastrouter_session *fr_session) { end: + if (fr_session->tmp_socket_name) { + free(fr_session->tmp_socket_name); + } + if (fr_session->buf_file) fclose(fr_session->buf_file); diff --git a/socket.c b/socket.c index afb0621c..23f6f55d 100644 --- a/socket.c +++ b/socket.c @@ -339,7 +339,8 @@ int connect_to_unix(char *socket_name, int timeout, int async) { uwsgi_poll.events = POLLIN; if (timed_connect(&uwsgi_poll, (const struct sockaddr *) &uws_addr, un_size, timeout, async)) { - uwsgi_error("connect()"); + // avoid error storm + //uwsgi_error("connect()"); close(uwsgi_poll.fd); return -1; }