anchor.diff:                     ?TT(?SECS(15)),
                      Send = fun(Sock, Data) -> socket:send(Sock, Data) end,
                      %% Recv = fun(Sock)       -> socket:recv(Sock, 0, 5000) end,
  -                   Recv = fun(Sock)       -> socket:recv(Sock) end,
  +                   Recv = fun(Sock, Sz)   -> socket:recv(Sock, Sz) end,
                      InitState = #{domain => inet,
                                    send   => Send, % Send function
                                    recv   => Recv  % Receive function
  
positive.code:             Reason
      end.
  
  tpp_tcp_handler_msg_exchange(Sock, BufInit, Send, Recv) ->
      ok = BufInit(Sock),
      socket:setopt(Sock, otp, debug, true),
      tpp_tcp_handler_msg_exchange_loop(Sock, Send, Recv, 0, 0, 0, undefined).
  
  tpp_tcp_handler_msg_exchange_loop(Sock, Send, Recv, N, Sent, Received, Start) ->
      %% if (N =:= 1000) -> socket:setopt(Sock, otp, debug, true); true -> ok end,
      ?SEV_IPRINT("[~w] try receive", [N]),
      case Recv(Sock) of
          {ok, Msg} ->
              NewStart = if (Start =:= undefined) -> ?LIB:timestamp(); 
                            true -> Start end,
              ?SEV_IPRINT("[~w] received - now try send", [N]),
              case Send(Sock, Msg) of
                  ok ->
                      tpp_tcp_handler_msg_exchange_loop(Sock, Send, Recv,
                                                        N+1,
                                                        Sent+size(Msg),
                                                        Received+size(Msg),
                                                        NewStart);
                  {error, SReason} ->
                      ?SEV_EPRINT("send (~w): ~p", [N, SReason]),
  
negative.code: 
  traffic_ping_pong_large_send_and_receive_tcp(InitState) ->
      Msg = l2b(?LARGE),
      Num = 1000,
      Fun = fun(Sock) -> 
                    %% ?SEV_IPRINT("Socket buffers (before): "
                    %%             "~n   Rcv: ~p"
                    %%             "~n   Snd: ~p",
                    %%             [socket:getopt(Sock, socket, rcvbuf),
                    %%              socket:getopt(Sock, socket, sndbuf)]),
                    {ok, RcvSz} = socket:getopt(Sock, socket, rcvbuf),
                    if (RcvSz < size(Msg)) ->
                            ok = socket:setopt(Sock, socket, rcvbuf, 1024+size(Msg));
                       true ->
                            ok
                    end,
                    {ok, SndSz} = socket:getopt(Sock, socket, sndbuf),
                    if (SndSz < size(Msg)) ->
                            ok = socket:setopt(Sock, socket, sndbuf, 1024+size(Msg));
                       true ->
                            ok
                    end,
                    ok = socket:setopt(Sock, otp, rcvbuf, 8*1024),
                    %% ?SEV_IPRINT("Socket buffers (after): "
                    %%             "~n   Rcv: ~p"
                    %%             "~n   Snd: ~p",
                    %%             [socket:getopt(Sock, socket, rcvbuf),
                    %%              socket:getopt(Sock, socket, sndbuf)]),
                    ok 
            end, %% Fun to update the buffers: NEEDED here!!!
      traffic_ping_pong_send_and_receive_tcp(InitState#{msg      => Msg,
  