aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/dist.h
diff options
context:
space:
mode:
authorSverker Eriksson <[email protected]>2018-09-18 14:27:27 +0200
committerSverker Eriksson <[email protected]>2018-09-18 14:27:51 +0200
commita04f3246c1eda7b8d8d83ba2bcc46d502b80d22b (patch)
tree3e2d7553f7aab8007f55cc93c2151f7ec67f7e16 /erts/emulator/beam/dist.h
parentd384fb7c6edd33161fa5d2c56745427da32e9aa5 (diff)
downloadotp-a04f3246c1eda7b8d8d83ba2bcc46d502b80d22b.tar.gz
otp-a04f3246c1eda7b8d8d83ba2bcc46d502b80d22b.tar.bz2
otp-a04f3246c1eda7b8d8d83ba2bcc46d502b80d22b.zip
Consolidate distribution entry state transitions
* Make connection_id part of the distribution handle as {ConnId, DistEntry} in order for BIFs to verify correct connection. * Make distribution handle opaque to net_kernel. * Remove some unsafe lockless reads of DistEntry.flags * Change state ERTS_DE_STATE_EXITING to be more of an internal state that prevents erts from enqueue, encode or schedule new data to be sent. Otherwise it should behave like ERTS_DE_STATE_CONNECTED.
Diffstat (limited to 'erts/emulator/beam/dist.h')
-rw-r--r--erts/emulator/beam/dist.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/erts/emulator/beam/dist.h b/erts/emulator/beam/dist.h
index 30b4b35c20..75b59e5196 100644
--- a/erts/emulator/beam/dist.h
+++ b/erts/emulator/beam/dist.h
@@ -136,6 +136,7 @@ typedef struct {
Eterm cid;
Eterm connection_id;
int no_suspend;
+ Uint32 flags;
} ErtsDSigData;
#define ERTS_DE_BUSY_LIMIT (1024*1024)
@@ -235,6 +236,7 @@ retry:
dsdp->cid = dep->cid;
dsdp->connection_id = dep->connection_id;
dsdp->no_suspend = no_suspend;
+ dsdp->flags = dep->flags;
if (dspl == ERTS_DSP_NO_LOCK)
erts_de_runlock(dep);
return res;