anchor.diff:          %% Basic one packet code path
           <<Size:32, Data:Size/binary, Rest/binary>> ->
               %% We have a complete packet in the first binary
  -            erlang:dist_ctrl_put_data(DHandle, Data),
  +            0 < Size andalso erlang:dist_ctrl_put_data(DHandle, Data),
               read_application_dist_data(DHandle, Front0, BufferSize - (4+Size), Rear0, Rest);
           <<Size:32, FirstData/binary>> when 4+Size =< BufferSize ->
               %% We have a complete packet in the buffer
               %% - fetch the missing content from the buffer front
               {Data,Front,Rear} = iovec_from_front(Size - byte_size(FirstData), Front0, Rear0, [FirstData]),
  -            erlang:dist_ctrl_put_data(DHandle, Data),
  +            0 < Size andalso erlang:dist_ctrl_put_data(DHandle, Data),
               read_application_dist_data(DHandle, Front, BufferSize - (4+Size), Rear);
           <<Bin/binary>> ->
               %% In OTP-21 the match context reuse optimization fails if we use Bin0 in recursion, so here we
  
positive.code:                     %% contains enough data to maybe form a packet
                      %% - fetch a tiny binary from the buffer front to complete the length field
                      {LengthField,Front,Rear} =
                          iovec_from_front(4 - byte_size(IncompleteLengthField), Front0, Rear0, [IncompleteLengthField]),
                      LengthBin = iolist_to_binary(LengthField),
                      read_application_dist_data(DHandle, Front, BufferSize, Rear, LengthBin);
                  <<IncompleteLengthField/binary>> ->
                      %% We do not have enough data in the buffer to even form a length field - await more data
                      {[IncompleteLengthField|Front0],BufferSize,Rear0}
              end
      end.
  
  
negative.code:         <<SizeA:32, DataA:SizeA/binary,
            SizeB:32, DataB:SizeB/binary,
            SizeC:32, DataC:SizeC/binary,
            SizeD:32, DataD:SizeD/binary, Rest/binary>>
            when 0 < SizeA, 0 < SizeB, 0 < SizeC, 0 < SizeD ->
              %% We have 4 complete packets in the first binary
              erlang:dist_ctrl_put_data(DHandle, DataA),
              erlang:dist_ctrl_put_data(DHandle, DataB),
  