diff options
author | Matthias Radestock <matthias@rabbitmq.com> | 2014-03-17 12:28:21 +0000 |
---|---|---|
committer | Matthias Radestock <matthias@rabbitmq.com> | 2014-03-17 12:28:21 +0000 |
commit | 9cd6a5bad43c2a3b064127483ab37addf37a1881 (patch) | |
tree | 9ae2422a53cabe140f680f30fc65bdf9a6e34b3a | |
parent | b3a666b4adab5b2cd5ecd4e1aa01a7f82d65a5bf (diff) | |
download | rabbitmq-server-bug25374.tar.gz |
change AMQP codec field type 'b' interpretationbug25374
from unsigned to signed, in compliance with the spec and most
clients.
-rw-r--r-- | src/rabbit_binary_generator.erl | 2 | ||||
-rw-r--r-- | src/rabbit_binary_parser.erl | 2 | ||||
-rw-r--r-- | src/rabbit_tests.erl | 4 |
3 files changed, 4 insertions, 4 deletions
diff --git a/src/rabbit_binary_generator.erl b/src/rabbit_binary_generator.erl index 83f68ed3..1e5ab0a7 100644 --- a/src/rabbit_binary_generator.erl +++ b/src/rabbit_binary_generator.erl @@ -126,7 +126,7 @@ field_value_to_binary(decimal, V) -> {Before, After} = V, field_value_to_binary(timestamp, V) -> [$T, <<V:64>>]; field_value_to_binary(table, V) -> [$F | table_to_binary(V)]; field_value_to_binary(array, V) -> [$A | array_to_binary(V)]; -field_value_to_binary(byte, V) -> [$b, <<V:8/unsigned>>]; +field_value_to_binary(byte, V) -> [$b, <<V:8/signed>>]; field_value_to_binary(double, V) -> [$d, <<V:64/float>>]; field_value_to_binary(float, V) -> [$f, <<V:32/float>>]; field_value_to_binary(long, V) -> [$l, <<V:64/signed>>]; diff --git a/src/rabbit_binary_parser.erl b/src/rabbit_binary_parser.erl index f65d8ea7..9ffeb41a 100644 --- a/src/rabbit_binary_parser.erl +++ b/src/rabbit_binary_parser.erl @@ -71,7 +71,7 @@ parse_field_value(<<$F, VLen:32/unsigned, Table:VLen/binary, R/binary>>) -> parse_field_value(<<$A, VLen:32/unsigned, Array:VLen/binary, R/binary>>) -> {array, parse_array(Array), R}; -parse_field_value(<<$b, V:8/unsigned, R/binary>>) -> {byte, V, R}; +parse_field_value(<<$b, V:8/signed, R/binary>>) -> {byte, V, R}; parse_field_value(<<$d, V:64/float, R/binary>>) -> {double, V, R}; parse_field_value(<<$f, V:32/float, R/binary>>) -> {float, V, R}; parse_field_value(<<$l, V:64/signed, R/binary>>) -> {long, V, R}; diff --git a/src/rabbit_tests.erl b/src/rabbit_tests.erl index 1552d1ec..b56aa805 100644 --- a/src/rabbit_tests.erl +++ b/src/rabbit_tests.erl @@ -429,7 +429,7 @@ test_table_codec() -> {<<"table">>, table, [{<<"one">>, signedint, 54321}, {<<"two">>, longstr, <<"A long string">>}]}, - {<<"byte">>, byte, 255}, + {<<"byte">>, byte, -128}, {<<"long">>, long, 1234567890}, {<<"short">>, short, 655}, {<<"bool">>, bool, true}, @@ -446,7 +446,7 @@ test_table_codec() -> 5,"table", "F", 31:32, % length of table 3,"one", "I", 54321:32, 3,"two", "S", 13:32, "A long string", - 4,"byte", "b", 255:8, + 4,"byte", "b", -128:8/signed, 4,"long", "l", 1234567890:64, 5,"short", "s", 655:16, 4,"bool", "t", 1, |