Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
0.1.0
-
None
-
None
Description
In the Amqp Types test the binary data is defined in Json. One of the defs is huge but the first four are defined as:
'binary': [bytes(), bytes(12345), b'Hello, world', b'\\x01\\x02\\x03\\x04\\x05abcde\\x80\\x81\\xfe\\xff',
Adding a little code to instrument the cli argument containing the Json and running a wireshark snoop reveals how these four strings are handled by ProtonCpp.
Note that jira makes it hard to render a backslash character. In these tables the <backslash> token represents on ascii character.
Json command line arg
The json generated by python arrives at ProtonCpp arg four as a string
position | character | hex |
---|---|---|
0 | '[' | 0x5b |
1 | '"' | 0x22 |
2 | '"' | 0x22 |
3 | ',' | 0x2c |
4 | ' ' | 0x20 |
5 | '"' | 0x22 |
6 | '1' | 0x31 |
7 | '2' | 0x32 |
8 | '3' | 0x33 |
9 | '4' | 0x34 |
10 | '5' | 0x35 |
11 | '"' | 0x22 |
12 | ',' | 0x2c |
13 | ' ' | 0x20 |
14 | '"' | 0x22 |
15 | 'H' | 0x48 |
16 | 'e' | 0x65 |
17 | 'l' | 0x6c |
18 | 'l' | 0x6c |
19 | 'o' | 0x6f |
20 | ',' | 0x2c |
21 | ' ' | 0x20 |
22 | 'w' | 0x77 |
23 | 'o' | 0x6f |
24 | 'r' | 0x72 |
25 | 'l' | 0x6c |
26 | 'd' | 0x64 |
27 | '"' | 0x22 |
28 | ',' | 0x2c |
29 | ' ' | 0x20 |
30 | '"' | 0x22 |
31 | 'backslash' | 0x5c |
32 | 'backslash' | 0x5c |
33 | 'x' | 0x78 |
34 | '0' | 0x30 |
35 | '1' | 0x31 |
36 | 'backslash' | 0x5c |
37 | 'backslash' | 0x5c |
38 | 'x' | 0x78 |
39 | '0' | 0x30 |
40 | '2' | 0x32 |
41 | 'backslash' | 0x5c |
42 | 'backslash' | 0x5c |
43 | 'x' | 0x78 |
44 | '0' | 0x30 |
45 | '3' | 0x33 |
46 | 'backslash' | 0x5c |
47 | 'backslash' | 0x5c |
48 | 'x' | 0x78 |
49 | '0' | 0x30 |
50 | '4' | 0x34 |
51 | 'backslash' | 0x5c |
52 | 'backslash' | 0x5c |
53 | 'x' | 0x78 |
54 | '0' | 0x30 |
55 | '5' | 0x35 |
56 | 'a' | 0x61 |
57 | 'b' | 0x62 |
58 | 'c' | 0x63 |
59 | 'd' | 0x64 |
60 | 'e' | 0x65 |
61 | 'backslash' | 0x5c |
62 | 'backslash' | 0x5c |
63 | 'x' | 0x78 |
64 | '8' | 0x38 |
65 | '0' | 0x30 |
66 | 'backslash' | 0x5c |
67 | 'backslash' | 0x5c |
68 | 'x' | 0x78 |
69 | '8' | 0x38 |
70 | '1' | 0x31 |
71 | 'backslash' | 0x5c |
72 | 'backslash' | 0x5c |
73 | 'x' | 0x78 |
74 | 'f' | 0x66 |
75 | 'e' | 0x65 |
76 | 'backslash' | 0x5c |
77 | 'backslash' | 0x5c |
78 | 'x' | 0x78 |
79 | 'f' | 0x66 |
80 | 'f' | 0x66 |
81 | '"' | 0x22 |
82 | ',' | 0x2c |
Over the wire
The ProtonCpp does its work and sends messages over the wire.
- The messages are encoded with type A0 (binary:vbin8) and an appropriate length.
Message | Content |
---|---|
0 | "" <empty message> |
1 | "12345" <five bytes with ascii encodings of the numbers> |
2 | "Hello, world" |
3 | "<backslash>x01<backslash>x02<backslash>x03<backslash>x05<backslash>x05 abcd <backslash>x80<backslash>x81<backslash>xfe<backslash>xff |
The intent of the test appears to have binary, non-printable bytes (0x01, 0x02, 0xff) in the messages but that's not what happens.
Maybe this is something simple like having the double backslashes in the test python code.