evcom upgrade - ignore sigpipe. remove error output.
authorRyan <ry@tinyclouds.org>
Sat, 22 Aug 2009 10:04:45 +0000 (12:04 +0200)
committerRyan <ry@tinyclouds.org>
Sat, 22 Aug 2009 10:04:45 +0000 (12:04 +0200)
deps/evcom/evcom.c
deps/evcom/evcom.h
deps/evcom/test/test.c
src/net.h
src/node.cc

index 629864d..48220a6 100644 (file)
@@ -32,6 +32,8 @@
 #include <errno.h>
 #include <string.h> /* memset */
 
+#include <signal.h>
+
 #include <netinet/tcp.h> /* TCP_NODELAY */
 #include <sys/types.h>
 #include <sys/socket.h> /* shutdown */
@@ -135,6 +137,14 @@ evcom_buf_new (const char *base, size_t len)
   return buf;
 }
 
+void evcom_ignore_sigpipe (void)
+{
+  struct sigaction sa;
+  bzero(&sa, sizeof(sa));
+  sa.sa_handler = SIG_IGN;
+  sigaction(SIGPIPE, &sa, NULL);
+}
+
 static int
 close_asap (evcom_descriptor *d)
 {
index fae9244..88056a9 100644 (file)
@@ -159,6 +159,9 @@ typedef struct evcom_server {
     (*on_connection)(struct evcom_server *, struct sockaddr *remote_addr);
 } evcom_server;
 
+/* Highly recommended to ignore SIGPIPE! */
+void evcom_ignore_sigpipe (void);
+
 void evcom_reader_init          (evcom_reader*);
 void evcom_reader_set           (evcom_reader*, int fd);
 void evcom_reader_attach        (EV_P_ evcom_reader*);
index 7aadebe..0ce3370 100644 (file)
@@ -776,6 +776,8 @@ main (void)
   fprintf(stderr, "sizeof(evcom_reader): %d\n", (int)sizeof(evcom_reader));
   fprintf(stderr, "sizeof(evcom_writer): %d\n", (int)sizeof(evcom_writer));
 
+  evcom_ignore_sigpipe();
+
 #if EVCOM_HAVE_GNUTLS
   gnutls_global_init();
 
index 593cacd..69442b2 100644 (file)
--- a/src/net.h
+++ b/src/net.h
@@ -95,10 +95,6 @@ private:
 
     connection->OnClose();
 
-    if (s->errorno) {
-      printf("socket died: %s\n", strerror(s->errorno));
-    }
-
     assert(connection->attached_);
 
     connection->Detach();
index 05f3f1f..7fbd690 100644 (file)
@@ -318,6 +318,7 @@ ParseArgs (int *argc, char **argv)
 int
 main (int argc, char *argv[]) 
 {
+  evcom_ignore_sigpipe();
   ev_default_loop(EVFLAG_AUTO); // initialize the default ev loop.
 
   // start eio thread pool