diff options
author | Sverker Eriksson <[email protected]> | 2017-11-23 15:05:34 +0100 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2017-11-23 15:05:34 +0100 |
commit | 8ed0d75c186d9da24bd6cfb85732487b17a3b054 (patch) | |
tree | f458c4ef6fc080fe9859834cabe3e49d40da9908 /erts/emulator/beam/dist.h | |
parent | a5aaba7c9a316327940d0b861dd300d59aa99209 (diff) | |
download | otp-8ed0d75c186d9da24bd6cfb85732487b17a3b054.tar.gz otp-8ed0d75c186d9da24bd6cfb85732487b17a3b054.tar.bz2 otp-8ed0d75c186d9da24bd6cfb85732487b17a3b054.zip |
erts: Fix erlang:monitor toward c-nodes
by suppressing DOP_MONITOR_P, DOP_MONITOR_P_EXIT and DOP_DEMONITOR_P
if not supported by the remote node.
In 17e198d6ee60f7dec9abfed272cf4226aea44535
I changed the behavior of erlang:monitor
to not raise badarg for c-nodes but instead create
a monitor to only supervise the connection.
But I forgot to prevent DOP_MONITOR_P and friends from being
sent to the node that does not expect them.
Note: We test both DFLAG_DIST_MONITOR and DFLAG_DIST_MONITOR_NAME
for the node to support process monitoring. This is because
erl_interface is buggy as it sets DFLAG_DIST_MONITOR without
really supporting it.
ToDo: Should erl_interface stop setting DFLAG_DIST_MONITOR
or should we change the meaning of these flags?
Diffstat (limited to 'erts/emulator/beam/dist.h')
-rw-r--r-- | erts/emulator/beam/dist.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/erts/emulator/beam/dist.h b/erts/emulator/beam/dist.h index a96e39be89..ea4697815f 100644 --- a/erts/emulator/beam/dist.h +++ b/erts/emulator/beam/dist.h @@ -56,7 +56,9 @@ /* Additional optimistic flags when encoding toward pending connection */ #define DFLAG_DIST_HOPEFULLY (DFLAG_NO_MAGIC \ | DFLAG_EXPORT_PTR_TAG \ - | DFLAG_BIT_BINARIES) + | DFLAG_BIT_BINARIES \ + | DFLAG_DIST_MONITOR \ + | DFLAG_DIST_MONITOR_NAME) /* All flags that should be enabled when term_to_binary/1 is used. */ #define TERM_TO_BINARY_DFLAGS (DFLAG_EXTENDED_REFERENCES \ |