From 1426205b75f4e3d29cc7bdfcad2974ac2c45a97f Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Thu, 30 Apr 2009 00:04:58 +0100 Subject: Fix bug where frame_type was left uninitialised in certain circumstances. --- librabbitmq/amqp_connection.c | 7 +++++-- librabbitmq/amqp_socket.c | 8 ++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/librabbitmq/amqp_connection.c b/librabbitmq/amqp_connection.c index e0c2f11..e56fd1f 100644 --- a/librabbitmq/amqp_connection.c +++ b/librabbitmq/amqp_connection.c @@ -114,6 +114,10 @@ int amqp_handle_input(amqp_connection_state_t state, int total_bytes_consumed = 0; int bytes_consumed; + /* Returning frame_type of zero indicates either insufficient input, + or a complete, ignored frame was read. */ + decoded_frame->frame_type = 0; + read_more: if (received_data.len == 0) { return total_bytes_consumed; @@ -209,8 +213,7 @@ int amqp_handle_input(amqp_connection_state_t state, } default: - /* Ignore the frame */ - decoded_frame->frame_type = 0; + /* Ignore the frame by not changing frame_type away from 0. */ break; } diff --git a/librabbitmq/amqp_socket.c b/librabbitmq/amqp_socket.c index 02e5728..2162eb4 100644 --- a/librabbitmq/amqp_socket.c +++ b/librabbitmq/amqp_socket.c @@ -158,9 +158,13 @@ int amqp_simple_wait_method(amqp_connection_state_t state, AMQP_CHECK_EOF_RESULT(amqp_simple_wait_frame(state, &frame)); amqp_assert(frame.frame_type == AMQP_FRAME_METHOD, - "Expected 0x%08X method frame", expected_or_zero); + "Expected 0x%08X method frame, got frame type %d", + expected_or_zero, + frame.frame_type); amqp_assert((expected_or_zero == 0) || (frame.payload.method.id == expected_or_zero), - "Expected method ID 0x%08X", expected_or_zero); + "Expected method ID 0x%08X, got ID 0x%08X", + expected_or_zero, + frame.payload.method.id); *output = frame.payload.method; return 1; } -- cgit v1.2.1