diff options
author | Rickard Green <[email protected]> | 2019-06-17 13:34:29 +0200 |
---|---|---|
committer | Rickard Green <[email protected]> | 2019-06-17 13:34:29 +0200 |
commit | c2344b1da074443770ae5ad2ef5523e4410ad216 (patch) | |
tree | 4bcadebf85c0ca1e675daf7bc5a62b211e9c23a4 /erts/emulator/beam | |
parent | 1b67bdcd3cc3e27b3f35f6b7d27f390aff30257d (diff) | |
parent | 79e9b25ac74e29d678ef6473813fce4f71ded196 (diff) | |
download | otp-c2344b1da074443770ae5ad2ef5523e4410ad216.tar.gz otp-c2344b1da074443770ae5ad2ef5523e4410ad216.tar.bz2 otp-c2344b1da074443770ae5ad2ef5523e4410ad216.zip |
Merge branch 'rickard/dist-exit2/22/OTP-15867' into maint
* rickard/dist-exit2/22/OTP-15867:
Don't disconnect on remote exit/2 with old incarnation as recipient
Diffstat (limited to 'erts/emulator/beam')
-rw-r--r-- | erts/emulator/beam/dist.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/erts/emulator/beam/dist.c b/erts/emulator/beam/dist.c index ff19ef018e..5e48a553af 100644 --- a/erts/emulator/beam/dist.c +++ b/erts/emulator/beam/dist.c @@ -2055,10 +2055,17 @@ int erts_net_message(Port *prt, token = tuple[4]; } if (is_not_pid(from) - || dep != external_pid_dist_entry(from) - || is_not_internal_pid(to)) { + || dep != external_pid_dist_entry(from)) { goto invalid_message; } + if (is_not_internal_pid(to)) { + if (is_external_pid(to)) { + DistEntry *dep = external_pid_dist_entry(to); + if (dep == erts_this_dist_entry) + break; /* Old incarnation of this node... */ + } + goto invalid_message; + } if (!erts_proc_lookup(to)) { if (ede_hfrag != NULL) { |