From 5cc7a2d51bf0e0c928d94114bbebf85d7d57a9e0 Mon Sep 17 00:00:00 2001
From: Sverker Eriksson <sverker@erlang.org>
Date: Mon, 25 Jun 2018 17:43:49 +0200
Subject: kernel: Send tick to hidden node even if pending writes

as c-nodes need ticks to send ticks.
---
 lib/kernel/src/dist_util.erl | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

(limited to 'lib')

diff --git a/lib/kernel/src/dist_util.erl b/lib/kernel/src/dist_util.erl
index b3507e5d13..86120a5483 100644
--- a/lib/kernel/src/dist_util.erl
+++ b/lib/kernel/src/dist_util.erl
@@ -731,7 +731,7 @@ send_status(#hs_data{socket = Socket, other_node = Node,
 
 %% The detection time interval is thus, by default, 45s < DT < 75s 
 
-%% A HIDDEN node is always (if not a pending write) ticked if 
+%% A HIDDEN node is always ticked if
 %% we haven't read anything as a hidden node only ticks when it receives 
 %% a TICK !! 
 	
@@ -745,8 +745,8 @@ send_tick(Socket, Tick, Type, MFTick, MFGetstat) ->
     case MFGetstat(Socket) of
 	{ok, Read, _, _} when  Ticked =:= T ->
 	    {error, not_responding};
-	{ok, Read, W, Pend} when Type =:= hidden ->
-	    send_tick(Socket, Pend, MFTick),
+	{ok, Read, W, _} when Type =:= hidden ->
+            MFTick(Socket),
 	    {ok, Tick#tick{write = W + 1,
 			   tick = T1}};
 	{ok, Read, Write, Pend} ->
-- 
cgit v1.2.3


From 366fe98c3f685595c5b4e9c6cb19d1034d7b24f6 Mon Sep 17 00:00:00 2001
From: Sverker Eriksson <sverker@erlang.org>
Date: Mon, 25 Jun 2018 17:13:12 +0200
Subject: kernel: Fix tick count bug when pending writes

---
 lib/kernel/src/dist_util.erl | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

(limited to 'lib')

diff --git a/lib/kernel/src/dist_util.erl b/lib/kernel/src/dist_util.erl
index 86120a5483..d80971f414 100644
--- a/lib/kernel/src/dist_util.erl
+++ b/lib/kernel/src/dist_util.erl
@@ -750,12 +750,12 @@ send_tick(Socket, Tick, Type, MFTick, MFGetstat) ->
 	    {ok, Tick#tick{write = W + 1,
 			   tick = T1}};
 	{ok, Read, Write, Pend} ->
-	    send_tick(Socket, Pend, MFTick),
-	    {ok, Tick#tick{write = Write + 1,
+	    Sent = send_tick(Socket, Pend, MFTick),
+	    {ok, Tick#tick{write = Write + Sent,
 			   tick = T1}};
 	{ok, R, Write, Pend} ->
-	    send_tick(Socket, Pend, MFTick),
-	    {ok, Tick#tick{write = Write + 1,
+	    Sent = send_tick(Socket, Pend, MFTick),
+	    {ok, Tick#tick{write = Write + Sent,
 			   read = R,
 			   tick = T1,
 			   ticked = T}};
@@ -772,10 +772,11 @@ send_tick(Socket, Tick, Type, MFTick, MFGetstat) ->
     end.
 
 send_tick(Socket, 0, MFTick) ->
-    MFTick(Socket);
+    MFTick(Socket),
+    1;
 send_tick(_, _Pend, _) ->
     %% Dont send tick if pending write.
-    ok.
+    0.
 
 %% ------------------------------------------------------------
 %% Connection setup timeout timer.
-- 
cgit v1.2.3