diff --git a/src/3proxy.c b/src/3proxy.c index d3f3af2..91415ef 100644 --- a/src/3proxy.c +++ b/src/3proxy.c @@ -511,6 +511,11 @@ int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int return 1; } +#ifndef _WIN32 + /* before readconfig() starts the services: a client gone while it is + written to is an error, not the end */ + signal(SIGPIPE, SIG_IGN); +#endif _3proxy_mutex_init(&config_mutex); _3proxy_mutex_init(&bandlim_mutex); _3proxy_mutex_init(&connlim_mutex); @@ -561,7 +566,6 @@ int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int signal(SIGCONT, mysigpause); signal(SIGTERM, mysigterm); signal(SIGUSR1, mysigusr1); - signal(SIGPIPE, SIG_IGN); cyclestep(); #endif diff --git a/src/proxymain.c b/src/proxymain.c index 03c65ed..d6922a5 100644 --- a/src/proxymain.c +++ b/src/proxymain.c @@ -418,6 +418,9 @@ int MODULEMAINFUNC (int argc, char** argv){ WSADATA wd; WSAStartup(MAKEWORD( 1, 1 ), &wd); +#else + /* a client gone while it is written to is an error, not the end */ + signal(SIGPIPE, SIG_IGN); #endif #endif