From: Gurucharan Shetty Date: Wed, 26 Feb 2014 18:44:46 +0000 (-0800) Subject: fatal-signal: SIGPIPE for Windows. X-Git-Tag: sliver-openvswitch-2.2.90-1~9^2~26 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;ds=sidebyside;h=8a777cf663fc9c6fb3789a3fecebbe615eef8b33;p=sliver-openvswitch.git fatal-signal: SIGPIPE for Windows. Windows does not have a SIGPIPE. We ignore SIGPIPE for Linux. To compile on Windows, carve out a new function to ignore SIGPIPE on Linux. Signed-off-by: Gurucharan Shetty Acked-by: Ben Pfaff --- diff --git a/lib/fatal-signal.c b/lib/fatal-signal.c index 6b3dd20e7..df67a0917 100644 --- a/lib/fatal-signal.c +++ b/lib/fatal-signal.c @@ -218,6 +218,14 @@ fatal_signal_wait(void) poll_fd_wait_event(signal_fds[0], wevent, POLLIN); } +void +fatal_ignore_sigpipe(void) +{ +#ifndef _WIN32 + signal(SIGPIPE, SIG_IGN); +#endif +} + static void atexit_handler(void) { diff --git a/lib/fatal-signal.h b/lib/fatal-signal.h index b458d3d61..caf24ec47 100644 --- a/lib/fatal-signal.h +++ b/lib/fatal-signal.h @@ -27,6 +27,7 @@ void fatal_signal_add_hook(void (*hook_cb)(void *aux), void fatal_signal_fork(void); void fatal_signal_run(void); void fatal_signal_wait(void); +void fatal_ignore_sigpipe(void); /* Convenience functions for unlinking files upon termination. * diff --git a/ovsdb/ovsdb-client.c b/ovsdb/ovsdb-client.c index f149eec7d..d60d7ca84 100644 --- a/ovsdb/ovsdb-client.c +++ b/ovsdb/ovsdb-client.c @@ -31,6 +31,7 @@ #include "daemon.h" #include "dirs.h" #include "dynamic-string.h" +#include "fatal-signal.h" #include "json.h" #include "jsonrpc.h" #include "lib/table.h" @@ -88,7 +89,7 @@ main(int argc, char *argv[]) proctitle_init(argc, argv); set_program_name(argv[0]); parse_options(argc, argv); - signal(SIGPIPE, SIG_IGN); + fatal_ignore_sigpipe(); if (optind >= argc) { ovs_fatal(0, "missing command name; use --help for help"); diff --git a/ovsdb/ovsdb-server.c b/ovsdb/ovsdb-server.c index bdcdad922..6de77e44a 100644 --- a/ovsdb/ovsdb-server.c +++ b/ovsdb/ovsdb-server.c @@ -27,6 +27,7 @@ #include "dirs.h" #include "dummy.h" #include "dynamic-string.h" +#include "fatal-signal.h" #include "file.h" #include "hash.h" #include "json.h" @@ -137,7 +138,7 @@ main(int argc, char *argv[]) proctitle_init(argc, argv); set_program_name(argv[0]); service_start(&argc, &argv); - signal(SIGPIPE, SIG_IGN); + fatal_ignore_sigpipe(); process_init(); parse_options(&argc, &argv, &remotes, &unixctl_path, &run_command); diff --git a/ovsdb/ovsdb-tool.c b/ovsdb/ovsdb-tool.c index 5e2b71b84..2ae782eba 100644 --- a/ovsdb/ovsdb-tool.c +++ b/ovsdb/ovsdb-tool.c @@ -27,6 +27,7 @@ #include "compiler.h" #include "dirs.h" #include "dynamic-string.h" +#include "fatal-signal.h" #include "file.h" #include "lockfile.h" #include "log.h" @@ -56,7 +57,7 @@ main(int argc, char *argv[]) { set_program_name(argv[0]); parse_options(argc, argv); - signal(SIGPIPE, SIG_IGN); + fatal_ignore_sigpipe(); run_command(argc - optind, argv + optind, get_all_commands()); return 0; } diff --git a/tests/test-controller.c b/tests/test-controller.c index f487d8ce0..a615ab49c 100644 --- a/tests/test-controller.c +++ b/tests/test-controller.c @@ -27,6 +27,7 @@ #include "command-line.h" #include "compiler.h" #include "daemon.h" +#include "fatal-signal.h" #include "learning-switch.h" #include "ofp-parse.h" #include "ofp-version-opt.h" @@ -105,7 +106,7 @@ main(int argc, char *argv[]) proctitle_init(argc, argv); set_program_name(argv[0]); parse_options(argc, argv); - signal(SIGPIPE, SIG_IGN); + fatal_ignore_sigpipe(); if (argc - optind < 1) { ovs_fatal(0, "at least one vconn argument required; " diff --git a/tests/test-vconn.c b/tests/test-vconn.c index f54a0dfbc..76757f4ff 100644 --- a/tests/test-vconn.c +++ b/tests/test-vconn.c @@ -22,6 +22,7 @@ #include #include #include "command-line.h" +#include "fatal-signal.h" #include "ofp-msgs.h" #include "ofp-util.h" #include "ofpbuf.h" @@ -436,7 +437,7 @@ main(int argc, char *argv[]) set_program_name(argv[0]); vlog_set_levels(NULL, VLF_ANY_FACILITY, VLL_EMER); vlog_set_levels(NULL, VLF_CONSOLE, VLL_DBG); - signal(SIGPIPE, SIG_IGN); + fatal_ignore_sigpipe(); time_alarm(10); diff --git a/utilities/ovs-dpctl.c b/utilities/ovs-dpctl.c index 3b1dff1e5..66f87fe55 100644 --- a/utilities/ovs-dpctl.c +++ b/utilities/ovs-dpctl.c @@ -35,6 +35,7 @@ #include "dirs.h" #include "dpif.h" #include "dynamic-string.h" +#include "fatal-signal.h" #include "flow.h" #include "match.h" #include "netdev.h" @@ -73,7 +74,7 @@ main(int argc, char *argv[]) { set_program_name(argv[0]); parse_options(argc, argv); - signal(SIGPIPE, SIG_IGN); + fatal_ignore_sigpipe(); run_command(argc - optind, argv + optind, get_all_commands()); return 0; } diff --git a/utilities/ovs-ofctl.c b/utilities/ovs-ofctl.c index 69dd34fa4..4ab9ca454 100644 --- a/utilities/ovs-ofctl.c +++ b/utilities/ovs-ofctl.c @@ -36,6 +36,7 @@ #include "compiler.h" #include "dirs.h" #include "dynamic-string.h" +#include "fatal-signal.h" #include "nx-match.h" #include "odp-util.h" #include "ofp-actions.h" @@ -113,7 +114,7 @@ main(int argc, char *argv[]) { set_program_name(argv[0]); parse_options(argc, argv); - signal(SIGPIPE, SIG_IGN); + fatal_ignore_sigpipe(); run_command(argc - optind, argv + optind, get_all_commands()); return 0; } diff --git a/utilities/ovs-vsctl.c b/utilities/ovs-vsctl.c index c563eee65..62a66c59e 100644 --- a/utilities/ovs-vsctl.c +++ b/utilities/ovs-vsctl.c @@ -31,6 +31,7 @@ #include "compiler.h" #include "dirs.h" #include "dynamic-string.h" +#include "fatal-signal.h" #include "hash.h" #include "json.h" #include "ovsdb-data.h" @@ -176,7 +177,7 @@ main(int argc, char *argv[]) char *args; set_program_name(argv[0]); - signal(SIGPIPE, SIG_IGN); + fatal_ignore_sigpipe(); vlog_set_levels(NULL, VLF_CONSOLE, VLL_WARN); vlog_set_levels(&VLM_reconnect, VLF_ANY_FACILITY, VLL_WARN); ovsrec_init(); diff --git a/vswitchd/ovs-vswitchd.c b/vswitchd/ovs-vswitchd.c index da18a0a39..ca76aef10 100644 --- a/vswitchd/ovs-vswitchd.c +++ b/vswitchd/ovs-vswitchd.c @@ -32,6 +32,7 @@ #include "dirs.h" #include "dpif.h" #include "dummy.h" +#include "fatal-signal.h" #include "memory.h" #include "netdev.h" #include "openflow/openflow.h" @@ -72,7 +73,7 @@ main(int argc, char *argv[]) set_program_name(argv[0]); service_start(&argc, &argv); remote = parse_options(argc, argv, &unixctl_path); - signal(SIGPIPE, SIG_IGN); + fatal_ignore_sigpipe(); ovsrec_init(); daemonize_start(); diff --git a/vtep/vtep-ctl.c b/vtep/vtep-ctl.c index 233367b70..fc7998b05 100644 --- a/vtep/vtep-ctl.c +++ b/vtep/vtep-ctl.c @@ -31,6 +31,7 @@ #include "compiler.h" #include "dirs.h" #include "dynamic-string.h" +#include "fatal-signal.h" #include "hash.h" #include "json.h" #include "ovsdb-data.h" @@ -167,7 +168,7 @@ main(int argc, char *argv[]) char *args; set_program_name(argv[0]); - signal(SIGPIPE, SIG_IGN); + fatal_ignore_sigpipe(); vlog_set_levels(NULL, VLF_CONSOLE, VLL_WARN); vlog_set_levels(&VLM_reconnect, VLF_ANY_FACILITY, VLL_WARN); vteprec_init();