diff --git a/src/libstd/rt/uv/uvll.rs b/src/libstd/rt/uv/uvll.rs index 65c0cffe5a07..8ed1287fe010 100644 --- a/src/libstd/rt/uv/uvll.rs +++ b/src/libstd/rt/uv/uvll.rs @@ -172,6 +172,7 @@ fn request_sanity_check() { } } +// XXX Event loops ignore SIGPIPE by default. pub unsafe fn loop_new() -> *c_void { #[fixed_stack_segment]; #[inline(never)]; diff --git a/src/rt/rust_uv.cpp b/src/rt/rust_uv.cpp index 0462789af9ff..b5d6e02b46a4 100644 --- a/src/rt/rust_uv.cpp +++ b/src/rt/rust_uv.cpp @@ -13,12 +13,21 @@ #include #endif +#ifndef __WIN32__ +// for signal +#include +#endif + #include "uv.h" #include "rust_globals.h" extern "C" void* rust_uv_loop_new() { +// XXX libuv doesn't always ignore SIGPIPE even though we don't need it. +#ifndef __WIN32__ + signal(SIGPIPE, SIG_IGN); +#endif return (void*)uv_loop_new(); }