Author: rhs
Date: Mon Apr 30 13:55:21 2012
New Revision: 1332207

URL: http://svn.apache.org/viewvc?rev=1332207&view=rev
Log:
added stub for setting socket options; use MSG_NOSIGNAL

Modified:
    qpid/proton/trunk/proton-c/src/driver.c

Modified: qpid/proton/trunk/proton-c/src/driver.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/driver.c?rev=1332207&r1=1332206&r2=1332207&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/driver.c (original)
+++ qpid/proton/trunk/proton-c/src/driver.c Mon Apr 30 13:55:21 2012
@@ -176,6 +176,16 @@ void *pn_listener_context(pn_listener_t 
   return l ? l->context : NULL;
 }
 
+static void pn_configure_sock(int sock) {
+  // this would be nice, but doesn't appear to exist on linux
+  /*
+  int set = 1;
+  if (!setsockopt(sock, SOL_SOCKET, SO_NOSIGPIPE, (void *)&set, sizeof(int))) {
+    perror("setsockopt");
+  };
+  */
+}
+
 pn_connector_t *pn_listener_accept(pn_listener_t *l)
 {
   if (!(l->idx && l->driver && l->driver->fds[l->idx].revents & POLLIN)) {
@@ -198,6 +208,7 @@ pn_connector_t *pn_listener_accept(pn_li
         perror("close");
       return NULL;
     } else {
+      pn_configure_sock(sock);
       printf("accepted from %s:%s\n", host, serv);
       pn_connector_t *c = pn_connector_fd(l->driver, sock, NULL);
       c->listener = l;
@@ -256,6 +267,8 @@ pn_connector_t *pn_connector(pn_driver_t
   if (sock == -1)
     return NULL;
 
+  pn_configure_sock(sock);
+
   if (connect(sock, addr->ai_addr, addr->ai_addrlen) == -1) {
     freeaddrinfo(addr);
     return NULL;
@@ -524,7 +537,7 @@ static void pn_connector_process_output(
 static void pn_connector_write(pn_connector_t *ctor)
 {
   if (ctor->output_size > 0) {
-    ssize_t n = send(ctor->fd, ctor->output, ctor->output_size, 0);
+    ssize_t n = send(ctor->fd, ctor->output, ctor->output_size, MSG_NOSIGNAL);
     if (n < 0) {
       // XXX
       perror("send");



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org

Reply via email to