summaryrefslogtreecommitdiff
path: root/librabbitmq/amqp_socket.c
diff options
context:
space:
mode:
Diffstat (limited to 'librabbitmq/amqp_socket.c')
-rw-r--r--librabbitmq/amqp_socket.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/librabbitmq/amqp_socket.c b/librabbitmq/amqp_socket.c
index 6b9486c..2034f17 100644
--- a/librabbitmq/amqp_socket.c
+++ b/librabbitmq/amqp_socket.c
@@ -66,6 +66,14 @@ int amqp_open_socket(char const *hostname,
if (sockfd == -1)
return -amqp_socket_error();
+#ifdef DISABLE_SIGPIPE_WITH_SETSOCKOPT
+ if (0 != amqp_socket_setsockopt(sockfd, SOL_SOCKET, SO_NOSIGPIPE, &one,
+ sizeof(one)))
+ {
+ return -amqp_socket_error();
+ }
+#endif
+
if (amqp_socket_setsockopt(sockfd, IPPROTO_TCP, TCP_NODELAY, &one,
sizeof(one)) < 0
|| connect(sockfd, (struct sockaddr *) &addr, sizeof(addr)) < 0)
@@ -83,7 +91,7 @@ int amqp_send_header(amqp_connection_state_t state) {
AMQP_PROTOCOL_VERSION_MAJOR,
AMQP_PROTOCOL_VERSION_MINOR,
AMQP_PROTOCOL_VERSION_REVISION };
- return send(state->sockfd, (void *)header, 8, 0);
+ return send(state->sockfd, (void *)header, 8, MSG_NOSIGNAL);
}
static amqp_bytes_t sasl_method_name(amqp_sasl_method_enum method) {