summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTony Garnock-Jones <tonyg@kcbbs.gen.nz>2009-04-30 00:04:58 +0100
committerTony Garnock-Jones <tonyg@kcbbs.gen.nz>2009-04-30 00:04:58 +0100
commit1426205b75f4e3d29cc7bdfcad2974ac2c45a97f (patch)
treef42244fbbe14962759d4b7af5195321e1a73e49a
parent617e6b54a2a0772671b6e4402adc193d74755dd1 (diff)
downloadrabbitmq-c-github-ask-1426205b75f4e3d29cc7bdfcad2974ac2c45a97f.tar.gz
Fix bug where frame_type was left uninitialised in certain circumstances.
-rw-r--r--librabbitmq/amqp_connection.c7
-rw-r--r--librabbitmq/amqp_socket.c8
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;
}