#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 */
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)
{
(*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*);
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();
connection->OnClose();
- if (s->errorno) {
- printf("socket died: %s\n", strerror(s->errorno));
- }
-
assert(connection->attached_);
connection->Detach();
int
main (int argc, char *argv[])
{
+ evcom_ignore_sigpipe();
ev_default_loop(EVFLAG_AUTO); // initialize the default ev loop.
// start eio thread pool