<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman,new york,times,serif;font-size:12pt"><div>we ran into the same problem before.&nbsp; the workaround was to ignore SIGPIPE using:<br>&nbsp;&nbsp; signal(SIGPIPE, SIG_IGN);<br><br>from the man page for "write":<b><br>EPIPE</b><i><br>fd</i> is connected to a pipe or socket whose reading end is closed. When this happens the writing process will also receive a <b>SIGPIPE</b> signal.
(Thus, the write return value is seen only if the program catches, blocks or ignores this signal.)<br><br>-alex<br><br></div><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><br><div style="font-family: arial,helvetica,sans-serif; font-size: 13px;"><font face="Tahoma" size="2"><hr size="1"><b><span style="font-weight: bold;">From:</span></b> David Wragg &lt;david@rabbitmq.com&gt;<br><b><span style="font-weight: bold;">To:</span></b> underattack7 &lt;underattack7@googlemail.com&gt;<br><b><span style="font-weight: bold;">Cc:</span></b> rabbitmq-discuss &lt;rabbitmq-discuss@lists.rabbitmq.com&gt;<br><b><span style="font-weight: bold;">Sent:</span></b> Thu, February 10, 2011 9:11:38 AM<br><b><span style="font-weight: bold;">Subject:</span></b> Re: [rabbitmq-discuss] rabbitmq-c: how to catch a broken pipe with the rabbitmq server<br></font><br>
Hi,<br><br>underattack7 &lt;<a ymailto="mailto:underattack7@googlemail.com" href="mailto:underattack7@googlemail.com">underattack7@googlemail.com</a>&gt; writes:<br>&gt; I am using the rabbitmq-c C libraries to publish messages to a Rabbitmq<br>&gt; exchange.<br>&gt;<br>&gt; Problem I have is that when rabbitmq server stops for some reason<br>&gt; (rabbtmqctl stop_app / start_app for instance), the socket between my<br>&gt; publisher program and rabbitmq is destroyed but I don't manage to catch any<br>&gt; error code properly so that the program can try to establish a new<br>&gt; connection.<br>&gt;<br>&gt; When I stop rabbitmq, my publisher program exits with the message: "Broken<br>&gt; Pipe" when it tries to send a message.<br><br>Sounds like a bug.&nbsp; What platform are you on?<br><br>&gt; Is there a way to check the socket before sending a message so that I can<br>&gt; try to re-establish a connection ?<br>&gt;<br>&gt; The way I publish is
 :<br>&gt;<br>&gt; rc = amqp_basic_publish(amqp_connection, 1,&nbsp; amqp_cstring_bytes("Exchange"),<br>&gt; amqp_cstring_bytes(routingkey), 0, 0, NULL, body);<br>&gt;<br>&gt; if (rc &lt; 0)&nbsp; {<br>&gt;&nbsp; &nbsp;  printf("error during publish : %s\n", strerror(-rc)) ;<br>&gt;&nbsp; }<br><br>You should be using "amqp_error_string(-rc)" there, not strerror.<br><br>David<br><br>-- <br>David Wragg<br>Staff Engineer, RabbitMQ<br>SpringSource, a division of VMware<br>_______________________________________________<br>rabbitmq-discuss mailing list<br><a ymailto="mailto:rabbitmq-discuss@lists.rabbitmq.com" href="mailto:rabbitmq-discuss@lists.rabbitmq.com">rabbitmq-discuss@lists.rabbitmq.com</a><br><a href="https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss" target="_blank">https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss</a><br></div></div>
</div><br>

      </body></html>