summaryrefslogtreecommitdiff
path: root/librabbitmq/amqp_socket.c
diff options
context:
space:
mode:
authorAlan Antonuk <alan.antonuk@gmail.com>2013-06-12 11:01:09 -0700
committerAlan Antonuk <alan.antonuk@gmail.com>2013-06-13 15:44:11 -0700
commitf2094209844d44d7d6c6e7ce8328747acbb1ef1e (patch)
treed83b4f6e201a94a78a127301fdf4c40b334f476c /librabbitmq/amqp_socket.c
parent9496e10d76ffa5e6d021804722806e28af991769 (diff)
downloadrabbitmq-c-github-ask-f2094209844d44d7d6c6e7ce8328747acbb1ef1e.tar.gz
Don't abort() in amqp_simple_wait_frame()
amqp_simple_wait_method() should not call abort(), instead close the underlying socket, then return AMQP_STATUS_WRONG_METHOD. This is still rather heavy-handed for a public API, however, its a lot better than killing the entire application
Diffstat (limited to 'librabbitmq/amqp_socket.c')
-rw-r--r--librabbitmq/amqp_socket.c22
1 files changed, 5 insertions, 17 deletions
diff --git a/librabbitmq/amqp_socket.c b/librabbitmq/amqp_socket.c
index cd9e75c..9ab9fec 100644
--- a/librabbitmq/amqp_socket.c
+++ b/librabbitmq/amqp_socket.c
@@ -318,23 +318,11 @@ int amqp_simple_wait_method(amqp_connection_state_t state,
return res;
}
- if (frame.channel != expected_channel) {
- amqp_abort("Expected 0x%08X method frame on channel %d, got frame on channel %d",
- expected_method,
- expected_channel,
- frame.channel);
- }
- if (frame.frame_type != AMQP_FRAME_METHOD) {
- amqp_abort("Expected 0x%08X method frame on channel %d, got frame type %d",
- expected_method,
- expected_channel,
- frame.frame_type);
- }
- if (frame.payload.method.id != expected_method) {
- amqp_abort("Expected method ID 0x%08X on channel %d, got ID 0x%08X",
- expected_method,
- expected_channel,
- frame.payload.method.id);
+ if (frame.channel != expected_channel
+ || frame.frame_type != AMQP_FRAME_METHOD
+ || frame.payload.method.id != expected_method) {
+ amqp_socket_close(state->socket);
+ return AMQP_STATUS_WRONG_METHOD;
}
*output = frame.payload.method;
return AMQP_STATUS_OK;