anchor.diff:        SrcPort :: port_number(),
         Reason  :: term().
   
  -recvfrom(Socket) ->
  -    recvfrom(Socket, ?SOCKET_RECV_FLAGS_DEFAULT).
  -
   recvfrom({socket, _, SockRef}, Flags) when is_list(Flags) ->
       EFlags = enc_recv_flags(Flags),
       nif_recvfrom(SockRef, EFlags).
   
  +
  +%% ---------------------------------------------------------------------------
  +%%
   
   %% -spec recvmsg(Socket, [out] MsgHdr, Flags) -> {ok, Data} | {error, Reason} when
   %%       Socket :: socket(),
  
positive.code:        is_list(Flags) andalso
         (is_integer(Timeout) orelse (Timeout =:= infinity)) ->
      EFlags = enc_recv_flags(Flags),
      do_recv(Socket, Length, EFlags, <<>>, EFlags).
  
  do_recv({socket, _, SockRef} = Socket, Length, EFlags, Acc, Timeout)
    when (Timeout =:= infinity) orelse
         (is_integer(Timeout) andalso (Timeout > 0)) ->
      TS      = timestamp(Timeout),
  
negative.code: 	    NewTimeout = next_timeout(TS, Timeout),
              receive
                  {select, SockRef, RecvRef, ready_input} ->
                      do_recv(Socket, RecvRef,
                              Length-size(Bin), EFlags,
                              Bin,
                              next_timeout(TS, Timeout))
              after NewTimeout ->
  