<div dir="ltr">On Mon, Jul 8, 2013 at 2:43 AM, Michael Klishin <span dir="ltr">&lt;<a href="mailto:michael.s.klishin@gmail.com" target="_blank">michael.s.klishin@gmail.com</a>&gt;</span> wrote:<br><div class="gmail_extra">
<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><br clear="all"><div>

There is one tricky scenario: if you basic.cancel the last consumer on an auto-delete</div><div>queue, it will be deleted.</div></div></div></blockquote><div><br></div><div style>If the queue happens to be deleted before you try and queue.bind it, the broker will return a channel exception. In terms of the rabbitmq-c API the amqp_queue_bind() function should return null, then amqp_get_rpc_reply() will return the reason for the channel exception.  It shouldn&#39;t block for long on a recv() when doing one of these.</div>
<div style><br></div><div style>If you&#39;re reading messages using amqp_simple_wait_frame() it is possible to ignore a frame that shouldn&#39;t be ignored (like an channel.close or a connection.close). Could you describe in more detail what you&#39;re doing before it hangs?</div>
</div></div></div>