diff --git a/examples/WiAuth/v2/wi_auth_declaration2.h b/examples/WiAuth/v2/wi_auth_declaration2.h index 83f7a5c1..680f0877 100644 --- a/examples/WiAuth/v2/wi_auth_declaration2.h +++ b/examples/WiAuth/v2/wi_auth_declaration2.h @@ -260,7 +260,7 @@ static void usp_init_wi_auth2() if (rc->connect() == false) { - U_ERROR("usp_fork_wi_auth2(): %V", rc->UClient_Base::getResponse().rep); + U_ERROR("usp_init_wi_auth2(): %V", rc->UClient_Base::getResponse().rep); } // ANAGRAFICA @@ -276,7 +276,10 @@ static void usp_fork_wi_auth2() U_INTERNAL_ASSERT_POINTER(rc) - rc->UClient_Base::reOpen(); + if (rc->UClient_Base::reConnect() == false) + { + U_ERROR("usp_fork_wi_auth2(): %V", rc->UClient_Base::getResponse().rep); + } } static void usp_end_wi_auth2() diff --git a/examples/userver/userver.cfg.default b/examples/userver/userver.cfg.default index eca8104b..0651732c 100644 --- a/examples/userver/userver.cfg.default +++ b/examples/userver/userver.cfg.default @@ -17,11 +17,9 @@ # # MIN_SIZE_FOR_SENDFILE for major size it is better to use sendfile() to serve static content # -# LISTEN_BACKLOG max number of ready to be delivered connections to accept() -# SET_REALTIME_PRIORITY flag indicating that the preforked processes will be scheduled under the real-time policies SCHED_FIFO -# -# CLIENT_THRESHOLD min number of clients to active polling -# CLIENT_FOR_PARALLELIZATION min number of clients to active parallelization (dedicated process) +# LISTEN_BACKLOG max number of ready to be delivered connections to accept() +# CLIENT_THRESHOLD min number of clients to active polling +# SET_REALTIME_PRIORITY flag indicating that the preforked processes will be scheduled under the real-time policies SCHED_FIFO # # LOAD_BALANCE_CLUSTER list of comma separated IP address (IPADDR[/MASK]) to define the load balance cluster # LOAD_BALANCE_DEVICE_NETWORK network interface name of cluster of physical server @@ -104,10 +102,8 @@ userver { # MIN_SIZE_FOR_SENDFILE 500k # LISTEN_BACKLOG 1024 +# CLIENT_THRESHOLD 100 # SET_REALTIME_PRIORITY yes - -# CLIENT_THRESHOLD 100 -# CLIENT_FOR_PARALLELIZATION 10 # LOAD_BALANCE_CLUSTER 10.30.0.0/16 # LOAD_BALANCE_DEVICE_NETWORK eth1 diff --git a/include/ulib/net/client/client.h b/include/ulib/net/client/client.h index c00b6cb8..d6c05eab 100644 --- a/include/ulib/net/client/client.h +++ b/include/ulib/net/client/client.h @@ -40,9 +40,27 @@ class UProxyPlugIn; class UNoCatPlugIn; class UServer_Base; class UHttpClient_Base; +class UClientImage_Base; class UREDISClient_Base; class UElasticSearchClient; +// manage client write to log + +#ifdef U_LOG_DISABLE +# define U_CLIENT_LOG_RESPONSE() {} +# define U_CLIENT_LOG_REQUEST(n) {} + +# define U_CLIENT_LOG( fmt,args...) {} +# define U_CLIENT_LOG_WITH_ADDR(fmt,args...) {} +#else +# define U_CLIENT_LOG( fmt,args...) { if (UClient_Base::log) UClient_Base::log->log(U_CONSTANT_TO_PARAM(fmt), ##args); } +# define U_CLIENT_LOG_WITH_ADDR(fmt,args...) { if (UClient_Base::log) UClient_Base::log->log(U_CONSTANT_TO_PARAM(fmt " %V%R"), ##args, UClient_Base::host_port.rep, 0); } + +# define U_CLIENT_LOG_REQUEST(n) { if (UClient_Base::log) UClient_Base::log->log(UClient_Base::iov, "request", n, "", 0, U_CONSTANT_TO_PARAM(" to %V"), UClient_Base::host_port.rep); } +# define U_CLIENT_LOG_RESPONSE() { if (UClient_Base::log && UClient_Base::response) \ + UClient_Base::log->logResponse(UClient_Base::response, U_CONSTANT_TO_PARAM(" from %V"), UClient_Base::host_port.rep); } +#endif + class U_EXPORT UClient_Base { public: @@ -102,13 +120,15 @@ public: if (isOpen()) socket->_close_socket(); } - void reOpen() + bool reConnect() { - U_TRACE_NO_PARAM(0, "UClient_Base::reOpen()") + U_TRACE_NO_PARAM(0, "UClient_Base::reConnect()") U_INTERNAL_ASSERT_POINTER(socket) socket->reOpen(); + + return connect(); } bool shutdown(int how = SHUT_WR) @@ -185,10 +205,23 @@ public: unsigned int getPort() const { return port; } bool connect(); - bool remoteIPAddress(UIPAddress& addr); bool readResponse(uint32_t count = U_SINGLE_READ); bool setHostPort(const UString& host, unsigned int port); + bool remoteIPAddress(UIPAddress& addr) + { + U_TRACE(0, "UClient_Base::::remoteIPAddress(%p)", &addr) + + if (socket->iRemotePort) + { + addr = socket->cRemoteAddress; + + U_RETURN(true); + } + + U_RETURN(false); + } + static void closeLog(); // NB: return if it has modified host or port... @@ -297,6 +330,7 @@ private: friend class UNoCatPlugIn; friend class UServer_Base; friend class UHttpClient_Base; + friend class UClientImage_Base; friend class UREDISClient_Base; friend class UElasticSearchClient; }; diff --git a/include/ulib/net/server/server.h b/include/ulib/net/server/server.h index c4cb0e51..d37fa6d4 100644 --- a/include/ulib/net/server/server.h +++ b/include/ulib/net/server/server.h @@ -545,9 +545,9 @@ public: # endif } - // PARALLELIZATION (dedicated process for long-running task) + static uint32_t num_client_threshold; - static uint32_t num_client_for_parallelization, num_client_threshold; + // PARALLELIZATION (dedicated process for long-running task) static void endNewChild() __noreturn; static pid_t startNewChild(); diff --git a/src/ulib/base/base.c b/src/ulib/base/base.c index f698b542..6d4ddece 100644 --- a/src/ulib/base/base.c +++ b/src/ulib/base/base.c @@ -2277,12 +2277,16 @@ case_R: /* extension: print msg - u_getSysError() */ *bp++ = ' '; } - if (errno == 0) errno = u_errno; + if (errno == 0) + { + errno = u_errno; + u_errno = 0; + } # ifdef _MSWINDOWS_ if (errno < 0) { - errno = - errno; + errno = -errno; cp = getSysError_w32((uint32_t*)&len); @@ -2797,7 +2801,8 @@ void u__printf(int fd, const char* format, uint32_t fmt_size, ...) { /* check if warning due to syscall */ - if (u_flag_exit != 2 || errno == 0) + if (u_flag_exit != 2 || + errno == 0) { struct iovec iov[1] = { { (caddr_t)buffer, bytes_written } }; diff --git a/src/ulib/date.cpp b/src/ulib/date.cpp index 438b7d5c..52071579 100644 --- a/src/ulib/date.cpp +++ b/src/ulib/date.cpp @@ -290,65 +290,70 @@ time_t UTimeDate::getSecondFromDate(const char* str, bool gmt, struct tm* tm, co tm->tm_sec = u__strtoul(str, 2); } - else if ((tm->tm_mon = u_getMonth(str))) - { - /** - * Jan 25 11:54:00 2005 GMT - * | | | | | | - * 0 4 7 10 13 16 - */ - - str += 4; - - tm->tm_mday = u_strtoulp(&str); - - tm->tm_hour = u__strtoul(str, 2); - - str += 3; - - tm->tm_min = u__strtoul(str, 2); - - str += 3; - - tm->tm_sec = u__strtoul(str, 2); - - str += 3; - - tm->tm_year = u__strtoul(str, 4); - } else { - /** - * 100212124550Z (zulu time) - * | | | | | | - * 0 2 4 6 8 10 - */ + if (u__isspace(*str)) while (u__isspace((*++str))) {} - tm->tm_mday = u__strtoul(str, 2); + if ((tm->tm_mon = u_getMonth(str))) + { + /** + * Jan 25 11:54:00 2005 GMT + * | | | | | | + * 0 4 7 10 13 16 + */ - str += 2; + str += 4; - tm->tm_mon = u__strtoul(str, 2); + tm->tm_mday = u_strtoulp(&str); - str += 2; + tm->tm_hour = u__strtoul(str, 2); - tm->tm_year = u__strtoul(str, 2) + 2000; // ts.tm_year is number of years since 1900 + str += 3; - // if (tm->tm_year > 2050) tm->tm_year -= 100; + tm->tm_min = u__strtoul(str, 2); - str += 2; + str += 3; - tm->tm_hour = u__strtoul(str, 2); + tm->tm_sec = u__strtoul(str, 2); - str += 2; + str += 3; - tm->tm_min = u__strtoul(str, 2); + tm->tm_year = u__strtoul(str, 4); + } + else + { + /** + * 100212124550Z (zulu time) + * | | | | | | + * 0 2 4 6 8 10 + */ - str += 2; + tm->tm_mday = u__strtoul(str, 2); - tm->tm_sec = u__strtoul(str, 2); + str += 2; - // U_INTERNAL_ASSERT_EQUALS(str[2], 'Z') + tm->tm_mon = u__strtoul(str, 2); + + str += 2; + + tm->tm_year = u__strtoul(str, 2) + 2000; // ts.tm_year is number of years since 1900 + + // if (tm->tm_year > 2050) tm->tm_year -= 100; + + str += 2; + + tm->tm_hour = u__strtoul(str, 2); + + str += 2; + + tm->tm_min = u__strtoul(str, 2); + + str += 2; + + tm->tm_sec = u__strtoul(str, 2); + + // U_INTERNAL_ASSERT_EQUALS(str[2], 'Z') + } } U_INTERNAL_DUMP("tm_year = %u tm_mon = %u tm_mday = %u tm_hour = %d tm_min = %d tm_sec = %d", tm->tm_year, tm->tm_mon, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec) diff --git a/src/ulib/debug/trace.cpp b/src/ulib/debug/trace.cpp index d0b1a223..9e81a328 100644 --- a/src/ulib/debug/trace.cpp +++ b/src/ulib/debug/trace.cpp @@ -170,7 +170,7 @@ void UTrace::trace_syscall(const char* format, uint32_t fmt_size, ...) #ifdef _MSWINDOWS_ SetLastError(0); #endif - errno = u_errno = 0; + errno = 0; } void UTrace::trace_sysreturn(bool error, const char* format, uint32_t fmt_size, ...) diff --git a/src/ulib/net/client/client.cpp b/src/ulib/net/client/client.cpp index f83f0612..0cae7578 100644 --- a/src/ulib/net/client/client.cpp +++ b/src/ulib/net/client/client.cpp @@ -287,9 +287,7 @@ bool UClient_Base::connect() response.snprintf(U_CONSTANT_TO_PARAM("Sorry, couldn't connect to server %v%R"), host_port.rep, 0); // NB: the last argument (0) is necessary... -#ifndef U_LOG_DISABLE - if (log) log->log(U_CONSTANT_TO_PARAM("%v"), response.rep); -#endif + U_CLIENT_LOG("%v", response.rep) U_RETURN(false); } @@ -326,20 +324,6 @@ bool UClient_Base::connectServer(const UString& _url) U_RETURN(false); } -bool UClient_Base::remoteIPAddress(UIPAddress& addr) -{ - U_TRACE(0, "UClient_Base::::remoteIPAddress(%p)", &addr) - - if (socket->iRemotePort) - { - addr = socket->cRemoteAddress; - - U_RETURN(true); - } - - U_RETURN(false); -} - bool UClient_Base::setUrl(const char* str, uint32_t len) { U_TRACE(0, "UClient_Base::setUrl(%.*S,%u)", len, str, len) @@ -435,9 +419,7 @@ bool UClient_Base::sendRequest(bool bread_response) resend: if (connect()) { -# ifndef U_LOG_DISABLE - if (log) log->log(iov, "request", ncount, "", 0, U_CONSTANT_TO_PARAM(" to %v"), host_port.rep); -# endif + U_CLIENT_LOG_REQUEST(ncount) ok = (USocketExt::writev(socket, iov, iovcnt, ncount, timeoutMS, 1) == ncount); @@ -447,16 +429,12 @@ resend: if (++counter <= 2) { -# ifndef U_LOG_DISABLE - if (log) log->log(U_CONSTANT_TO_PARAM("failed attempts (%u) to sending data (%u bytes) to %V%R"), counter, ncount, host_port.rep, 0); // NB: the last argument (0) is necessary... -# endif + U_CLIENT_LOG_WITH_ADDR("failed attempts (%u) to sending data (%u bytes) to", counter, ncount) goto resend; } -# ifndef U_LOG_DISABLE - if (log) log->log(U_CONSTANT_TO_PARAM("error on sending data to %V%R"), host_port.rep, 0); // NB: the last argument (0) is necessary... -# endif + U_CLIENT_LOG_WITH_ADDR("error on sending data (%u bytes) to", ncount) goto end; } @@ -476,20 +454,12 @@ resend: goto resend; } -# ifndef U_LOG_DISABLE - if (log) log->log(U_CONSTANT_TO_PARAM("error on reading data from %V%R"), host_port.rep, 0); // NB: the last argument (0) is necessary... -# endif + U_CLIENT_LOG_WITH_ADDR("error on reading data from") goto end; } -# ifndef U_LOG_DISABLE - if (log && - response) - { - log->logResponse(response, U_CONSTANT_TO_PARAM(" from %V"), host_port.rep); - } -# endif + U_CLIENT_LOG_RESPONSE() reset(); } @@ -549,13 +519,7 @@ bool UClient_Base::readResponse(uint32_t count) if (USocketExt::read(socket, response, count, timeoutMS)) { -# ifndef U_LOG_DISABLE - if (log && - response) - { - log->logResponse(response, U_CONSTANT_TO_PARAM(" from %V"), host_port.rep); - } -# endif + U_CLIENT_LOG_RESPONSE() U_RETURN(true); } @@ -577,13 +541,7 @@ bool UClient_Base::readHTTPResponse() { if (UHTTP::readBodyResponse(socket, &buffer, response) == false) U_RETURN(false); -# ifndef U_LOG_DISABLE - if (log && - response) - { - log->logResponse(response, U_CONSTANT_TO_PARAM(" from %V"), host_port.rep); - } -# endif + U_CLIENT_LOG_RESPONSE() } U_RETURN(true); diff --git a/src/ulib/net/server/client_image.cpp b/src/ulib/net/server/client_image.cpp index 27e0a203..f247468f 100644 --- a/src/ulib/net/server/client_image.cpp +++ b/src/ulib/net/server/client_image.cpp @@ -14,17 +14,18 @@ #include #include -#ifdef HAVE_SCHED_GETCPU -# include -#endif #ifndef U_HTTP2_DISABLE # include #endif - #ifdef U_SERVER_CHECK_TIME_BETWEEN_REQUEST +# include # define U_NUM_CLIENT_THRESHOLD 128 #endif +#ifdef HAVE_SCHED_GETCPU +# include +#endif + int UClientImage_Base::idx; int UClientImage_Base::iovcnt; bool UClientImage_Base::bIPv6; @@ -1161,7 +1162,8 @@ bool UClientImage_Base::genericRead() #ifdef U_SERVER_CHECK_TIME_BETWEEN_REQUEST if (U_ClientImage_advise_for_parallelization) { - if (checkRequestToCache() == 2 && + if (checkRequestToCache() == 2 && + UClient_Base::csocket == U_NULLPTR && UServer_Base::startParallelization(U_NUM_CLIENT_THRESHOLD)) { // parent diff --git a/src/ulib/net/server/plugin/mod_nocat.cpp b/src/ulib/net/server/plugin/mod_nocat.cpp index 9fb66f35..581edfc8 100644 --- a/src/ulib/net/server/plugin/mod_nocat.cpp +++ b/src/ulib/net/server/plugin/mod_nocat.cpp @@ -957,7 +957,7 @@ void UNoCatPlugIn::checkSystem() end: U_RESET_MODULE_NAME; - u_errno = errno = EINTR; + errno = EINTR; flag_check_system = false; diff --git a/src/ulib/net/server/server.cpp b/src/ulib/net/server/server.cpp index 70762f7d..c5e6ce9d 100644 --- a/src/ulib/net/server/server.cpp +++ b/src/ulib/net/server/server.cpp @@ -118,7 +118,6 @@ uint32_t UServer_Base::client_address_len; uint32_t UServer_Base::document_root_size; uint32_t UServer_Base::num_client_threshold; uint32_t UServer_Base::min_size_for_sendfile; -uint32_t UServer_Base::num_client_for_parallelization; sigset_t UServer_Base::mask; UString* UServer_Base::host; UString* UServer_Base::server; @@ -2200,14 +2199,13 @@ void UServer_Base::loadConfigParam() set_tcp_keep_alive = cfg->readBoolean(U_CONSTANT_TO_PARAM("TCP_KEEP_ALIVE")); set_realtime_priority = cfg->readBoolean(U_CONSTANT_TO_PARAM("SET_REALTIME_PRIORITY"), true); - crash_count = cfg->readLong(U_CONSTANT_TO_PARAM("CRASH_COUNT"), 5); - tcp_linger_set = cfg->readLong(U_CONSTANT_TO_PARAM("TCP_LINGER_SET"), -2); - USocket::iBackLog = cfg->readLong(U_CONSTANT_TO_PARAM("LISTEN_BACKLOG"), SOMAXCONN); - min_size_for_sendfile = cfg->readLong(U_CONSTANT_TO_PARAM("MIN_SIZE_FOR_SENDFILE"), 500 * 1024); // 500k: for major size we assume is better to use sendfile() - num_client_threshold = cfg->readLong(U_CONSTANT_TO_PARAM("CLIENT_THRESHOLD")); - UNotifier::max_connection = cfg->readLong(U_CONSTANT_TO_PARAM("MAX_KEEP_ALIVE")); - u_printf_string_max_length = cfg->readLong(U_CONSTANT_TO_PARAM("LOG_MSG_SIZE")); - num_client_for_parallelization = cfg->readLong(U_CONSTANT_TO_PARAM("CLIENT_FOR_PARALLELIZATION")); + crash_count = cfg->readLong(U_CONSTANT_TO_PARAM("CRASH_COUNT"), 5); + tcp_linger_set = cfg->readLong(U_CONSTANT_TO_PARAM("TCP_LINGER_SET"), -2); + USocket::iBackLog = cfg->readLong(U_CONSTANT_TO_PARAM("LISTEN_BACKLOG"), SOMAXCONN); + min_size_for_sendfile = cfg->readLong(U_CONSTANT_TO_PARAM("MIN_SIZE_FOR_SENDFILE"), 500 * 1024); // 500k: for major size we assume is better to use sendfile() + num_client_threshold = cfg->readLong(U_CONSTANT_TO_PARAM("CLIENT_THRESHOLD")); + UNotifier::max_connection = cfg->readLong(U_CONSTANT_TO_PARAM("MAX_KEEP_ALIVE")); + u_printf_string_max_length = cfg->readLong(U_CONSTANT_TO_PARAM("LOG_MSG_SIZE")); #ifdef USERVER_UDP if (budp && @@ -3459,12 +3457,10 @@ next: UNotifier::max_connection = (UNotifier::max_connection ? UNotifier::max_connection : USocket::iBackLog) + (UNotifier::num_connection = UNotifier::min_connection); if (num_client_threshold == 0) num_client_threshold = U_NOT_FOUND; - - if (num_client_for_parallelization == 0) num_client_for_parallelization = UNotifier::max_connection / 2; } - U_INTERNAL_DUMP("UNotifier::max_connection = %u UNotifier::min_connection = %u num_client_for_parallelization = %u num_client_threshold = %u", - UNotifier::max_connection, UNotifier::min_connection, num_client_for_parallelization, num_client_threshold) + U_INTERNAL_DUMP("UNotifier::max_connection = %u UNotifier::min_connection = %u num_client_threshold = %u", + UNotifier::max_connection, UNotifier::min_connection, num_client_threshold) pthis->preallocate(); @@ -4946,6 +4942,13 @@ bool UServer_Base::startParallelization(uint32_t nclient) { if (isParallelizationGoingToStart(nclient)) { +# ifdef DEBUG + if (UClient_Base::csocket) + { + U_WARNING("after forking you can have problem with the shared db connection..."); + } +# endif + pid_t pid = startNewChild(); if (pid > 0) diff --git a/src/ulib/net/socket.cpp b/src/ulib/net/socket.cpp index 03d0c794..d36a3bc6 100644 --- a/src/ulib/net/socket.cpp +++ b/src/ulib/net/socket.cpp @@ -1009,7 +1009,7 @@ void USocket::setMsgError() if (isSysError()) { - u_errno = errno = -iState; + errno = -iState; (void) u__snprintf(u_buffer, U_BUFFER_SIZE, U_CONSTANT_TO_PARAM("%#R"), 0); // NB: the last argument (0) is necessary... } @@ -1083,7 +1083,7 @@ ok: setLocal(); if (error == 0) goto ok; - iState = -(u_errno = errno = error); + iState = -(errno = error); } else if (result == 0) { @@ -1091,9 +1091,8 @@ ok: setLocal(); _close_socket(); - iState = TIMEOUT; - errno = - u_errno = ETIMEDOUT; + errno = ETIMEDOUT; + iState = TIMEOUT; } U_RETURN(false); diff --git a/src/ulib/notifier.cpp b/src/ulib/notifier.cpp index eaf29775..d10b488d 100644 --- a/src/ulib/notifier.cpp +++ b/src/ulib/notifier.cpp @@ -1275,8 +1275,7 @@ loop: if (ret > 0) U_RETURN(ret); if (ret == 0) { - errno = - u_errno = EAGAIN; + errno = EAGAIN; U_RETURN(0); } diff --git a/src/ulib/utility/socket_ext.cpp b/src/ulib/utility/socket_ext.cpp index 46e931b5..0af6969f 100644 --- a/src/ulib/utility/socket_ext.cpp +++ b/src/ulib/utility/socket_ext.cpp @@ -303,12 +303,14 @@ int USocketExt::write(USocket* sk, const char* ptr, uint32_t count, int timeoutM int byte_written = 0; write: + /* if (sk->isBlocking() && timeoutMS != 0 && (errno = 0, UNotifier::waitForWrite(sk->iSockDesc, timeoutMS) != 1)) { goto error; } + */ value = sk->send(ptr + byte_written, count); @@ -316,7 +318,8 @@ write: { if (value == -1) { -error: U_INTERNAL_DUMP("errno = %d", errno) +//error: + U_INTERNAL_DUMP("errno = %d", errno) if (errno != EAGAIN) sk->abortive_close(); else if (timeoutMS != 0) @@ -373,12 +376,14 @@ int USocketExt::sendfile(USocket* sk, int in_fd, off_t* poffset, off_t count, in int byte_written = 0; loop: + /* if (sk->isBlocking() && timeoutMS != 0 && (errno = 0, UNotifier::waitForWrite(sk->iSockDesc, timeoutMS) != 1)) { goto error; } + */ #if defined(HAVE_MACOSX_SENDFILE) /** @@ -408,7 +413,8 @@ loop: { if (value == -1) { -error: U_INTERNAL_DUMP("errno = %d", errno) +//error: + U_INTERNAL_DUMP("errno = %d", errno) if (errno != EAGAIN) { @@ -499,12 +505,14 @@ int USocketExt::_writev(USocket* sk, struct iovec* iov, int iovcnt, uint32_t cou #endif loop: + /* if (sk->isBlocking() && timeoutMS != 0 && (errno = 0, UNotifier::waitForWrite(sk->iSockDesc, timeoutMS) != 1)) { goto error; } + */ #if defined(USE_LIBSSL) && !defined(_MSWINDOWS_) if (sk->isSSLActive()) @@ -527,7 +535,8 @@ check: { if (value == -1) { -error: U_INTERNAL_DUMP("errno = %d", errno) +//error: + U_INTERNAL_DUMP("errno = %d", errno) if (errno != EAGAIN) { diff --git a/src/ulib/utility/uhttp.cpp b/src/ulib/utility/uhttp.cpp index fca2d40e..4aa1e324 100644 --- a/src/ulib/utility/uhttp.cpp +++ b/src/ulib/utility/uhttp.cpp @@ -2440,7 +2440,11 @@ U_NO_EXPORT bool UHTTP::readBodyRequest() U_RETURN(false); } - if (UServer_Base::startParallelization()) U_RETURN(false); // parent + if (UClient_Base::csocket == U_NULLPTR && // NB: after forking we can have problem with the shared db connection... + UServer_Base::startParallelization()) + { + U_RETURN(false); // parent + } // NB: wait for other data to complete the read of the request... diff --git a/tests/examples/nodog.sh b/tests/examples/nodog.sh index 9d9b1f50..4871dfe3 100755 --- a/tests/examples/nodog.sh +++ b/tests/examples/nodog.sh @@ -13,7 +13,7 @@ rm -f /tmp/uclient.log \ trace.*userver_*.[0-9]* object.*userver_*.[0-9]* stack.*userver_*.[0-9]* mempool.*userver_*.[0-9]* \ $DOC_ROOT/trace.*userver_*.[0-9]* $DOC_ROOT/object.*userver_*.[0-9]* $DOC_ROOT/stack.*userver_*.[0-9]* $DOC_ROOT/mempool.*userver_*.[0-9]* - UTRACE="0 100M -1" +#UTRACE="0 100M -1" UTRACE_FOLDER=/tmp TMPDIR=/tmp #UOBJDUMP="0 10M 100" diff --git a/tests/examples/wi-auth/db/Evasive.jnl b/tests/examples/wi-auth/db/Evasive.jnl deleted file mode 100644 index 7289d09f..00000000 Binary files a/tests/examples/wi-auth/db/Evasive.jnl and /dev/null differ diff --git a/tests/examples/wi-auth2.sh b/tests/examples/wi-auth2.sh index a74a8f50..1ebd2487 100755 --- a/tests/examples/wi-auth2.sh +++ b/tests/examples/wi-auth2.sh @@ -12,7 +12,7 @@ rm -f out/userver_tcp.out err/wi-auth2.err err/uclient.err \ trace.*userver_*.[0-9]* object.*userver_*.[0-9]* stack.*userver_*.[0-9]* mempool.*userver_*.[0-9]* \ $DOC_ROOT/trace.*userver_*.[0-9]* $DOC_ROOT/object.*userver_*.[0-9]* $DOC_ROOT/stack.*userver_*.[0-9]* $DOC_ROOT/mempool.*userver_*.[0-9]* -#UTRACE="0 100M -1" + UTRACE="0 100M -1" UTRACE_FOLDER=/tmp TMPDIR=/tmp #UOBJDUMP="0 10M 100"