diff options
author | Tony Garnock-Jones <tonyg@kcbbs.gen.nz> | 2009-04-30 00:04:58 +0100 |
---|---|---|
committer | Tony Garnock-Jones <tonyg@kcbbs.gen.nz> | 2009-04-30 00:04:58 +0100 |
commit | 1426205b75f4e3d29cc7bdfcad2974ac2c45a97f (patch) | |
tree | f42244fbbe14962759d4b7af5195321e1a73e49a | |
parent | 617e6b54a2a0772671b6e4402adc193d74755dd1 (diff) | |
download | rabbitmq-c-github-ask-1426205b75f4e3d29cc7bdfcad2974ac2c45a97f.tar.gz |
Fix bug where frame_type was left uninitialised in certain circumstances.
-rw-r--r-- | librabbitmq/amqp_connection.c | 7 | ||||
-rw-r--r-- | 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; } |