aboutsummaryrefslogtreecommitdiffstats
path: root/erts
diff options
context:
space:
mode:
authorRickard Green <[email protected]>2019-06-17 11:35:24 +0200
committerRickard Green <[email protected]>2019-06-17 11:35:24 +0200
commit79e9b25ac74e29d678ef6473813fce4f71ded196 (patch)
treec63844bb0ea2d568aaf1a6cdf43bde9c1b5ade88 /erts
parentb4fb2e5669acb02697d9a9ab168eb0fbff6f370c (diff)
parentdfebec217a33b0171cb6586df32436e581740719 (diff)
downloadotp-79e9b25ac74e29d678ef6473813fce4f71ded196.tar.gz
otp-79e9b25ac74e29d678ef6473813fce4f71ded196.tar.bz2
otp-79e9b25ac74e29d678ef6473813fce4f71ded196.zip
Merge branch 'rickard/dist-exit2/21/OTP-15867' into rickard/dist-exit2/22/OTP-15867
* rickard/dist-exit2/21/OTP-15867: Don't disconnect on remote exit/2 with old incarnation as recipient
Diffstat (limited to 'erts')
-rw-r--r--erts/emulator/beam/dist.c11
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) {