Skip to content

Commit dab19d4

Browse files
Merge pull request #2857 from rabbitmq/mk-direct-reply-to-erlang-22.x-compat
Restore Erlang 22.3 compatibility for direct reply-to (cherry picked from commit 4465071)
1 parent 08f0cb9 commit dab19d4

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

deps/rabbit/src/pid_recomposition.erl

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
-define(TTB_PREFIX, 131).
2020

2121
-define(NEW_PID_EXT, 88).
22+
-define(PID_EXT, 103).
2223
-define(ATOM_UTF8_EXT, 118).
2324
-define(SMALL_ATOM_UTF8_EXT, 119).
2425

@@ -32,14 +33,26 @@ decompose(Pid) ->
3233

3334
-spec from_binary(binary()) -> #{atom() => any()}.
3435
from_binary(Bin) ->
35-
<<?TTB_PREFIX, ?NEW_PID_EXT, PidData/binary>> = Bin,
36+
PidData = case Bin of
37+
%% Erlang 23+
38+
<<?TTB_PREFIX, ?NEW_PID_EXT, Val0/binary>> -> Val0;
39+
%% Erlang 22
40+
<<?TTB_PREFIX, ?PID_EXT, Val1/binary>> -> Val1
41+
end,
3642
{Node, Rest2} = case PidData of
3743
<<?ATOM_UTF8_EXT, AtomLen:16/integer, Node0:AtomLen/binary, Rest1/binary>> ->
3844
{Node0, Rest1};
3945
<<?SMALL_ATOM_UTF8_EXT, AtomLen/integer, Node0:AtomLen/binary, Rest1/binary>> ->
4046
{Node0, Rest1}
4147
end,
42-
<<ID:32/integer, Serial:32/integer, Creation:32/integer>> = Rest2,
48+
{ID, Serial, Creation} = case Rest2 of
49+
%% NEW_PID_EXT on Erlang 23+
50+
<<ID0:32/integer, Serial0:32/integer, Creation0:32/integer>> ->
51+
{ID0, Serial0, Creation0};
52+
%% PID_EXT on Erlang 22
53+
<<ID1:32/integer, Serial1:32/integer, Creation1:8/integer>> ->
54+
{ID1, Serial1, Creation1}
55+
end,
4356
#{
4457
node => binary_to_atom(Node, utf8),
4558
id => ID,

0 commit comments

Comments
 (0)