aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorErlang/OTP <[email protected]>2019-06-17 16:50:21 +0200
committerErlang/OTP <[email protected]>2019-06-17 16:50:21 +0200
commit47edf3e160db13bfda6546fe1af07bf11072f857 (patch)
treeac0b2ac526fb5f2375d55998a9e30cf0b5f8662e
parentaf5759cecc1982a5835dd85d4dbaf3d91f8a7e6e (diff)
parentdfebec217a33b0171cb6586df32436e581740719 (diff)
downloadotp-47edf3e160db13bfda6546fe1af07bf11072f857.tar.gz
otp-47edf3e160db13bfda6546fe1af07bf11072f857.tar.bz2
otp-47edf3e160db13bfda6546fe1af07bf11072f857.zip
Merge branch 'rickard/dist-exit2/21/OTP-15867' into maint-21
* rickard/dist-exit2/21/OTP-15867: Don't disconnect on remote exit/2 with old incarnation as recipient
-rw-r--r--erts/emulator/beam/dist.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/erts/emulator/beam/dist.c b/erts/emulator/beam/dist.c
index 0633bff3c2..bbe2fc31f3 100644
--- a/erts/emulator/beam/dist.c
+++ b/erts/emulator/beam/dist.c
@@ -1713,9 +1713,17 @@ int erts_net_message(Port *prt,
token = tuple[4];
reason = tuple[5];
}
- if (is_not_pid(from) || is_not_internal_pid(to)) {
+ if (is_not_pid(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;
+ }
erts_proc_sig_send_exit(NULL, from, to, reason, token, 0);
break;