anchor.diff:  %%--------------------------------------------------------------------
   %% Macros
   %%--------------------------------------------------------------------
  --define(SOCKETOPTS, [{reuseaddr, true}]).
  +-define(SOCKETOPTS, [{reuseaddr, true}, binary]).
   %% v6 sockets have a default receive buffer size of 1k in Erlang R9C-0
   -define(SOCKETOPTSv6, [{reuseaddr, true}, inet6, {buffer, 8 * 1024}]).
   
  
positive.code: 	{ok, Socket} ->
  	    Local = get_localaddr(Socket, "0.0.0.0"),
  	    SipSocket = #sipsocket{module=sipsocket_udp, proto=udp, pid=self(), data={Local, none}},
  	    NewSocketList = socketlist:add({listener, udp, Port}, self(), udp, Local, none, SipSocket, 
  					   0, State#state.socketlist),
  	    start_listening(T, Port, State#state{socket=Socket, socketlist=NewSocketList});
  	{error, Reason} ->
  
negative.code: %%--------------------------------------------------------------------
  is_reliable_transport(_) ->
      false.
  
  
  %%====================================================================
  %% Internal functions
  %%====================================================================
  
  %%--------------------------------------------------------------------
  %% Function: terminate(Reason, State)
  %% Descrip.: Check if a received packet is a keepalive or possibly a
  %%           SIP message. For the latter case, we spawn
  %%           sipserver:process(...) on the packet, after creating the
  %%           necessary sipsocket and origin records.
  %% Returns : ok
  %%--------------------------------------------------------------------
  received_packet(<<"\r\n">>, IP, Port, Proto) ->
      logger:log(debug, "Keepalive packet (CRLF) received from ~p:~s:~p", [Proto, IP, Port]),
      ok;
  received_packet(Packet, IP, Port, Proto) when is_binary(Packet), size(Packet) =< 20 ->
      %% Too short to be anywhere near a real SIP message
      case is_only_nulls(Packet) of
  	true ->
  	    logger:log(debug, "Keepalive packet (~p NULLs) received from ~p:~s:~p",
  		       [size(Packet), Proto, IP, Port]);
  	false ->
  	    logger:log(debug, "Packet received from ~p:~s:~p too short to be a SIP message :~n~p~n"
  		       "(as list: ~p)", [Proto, IP, Port, Packet, binary_to_list(Packet)])
      end,
      ok;
  received_packet(Packet, IP, Port, Proto) when is_binary(Packet), is_list(IP), is_integer(Port), is_atom(Proto) ->
      SipSocket = #sipsocket{module=sipsocket_udp, proto=Proto, pid=self(), data=none},
      Origin = #siporigin{proto=Proto, addr=IP, port=Port,
  			receiver=self(), sipsocket=SipSocket},
      sipserver:safe_spawn(sipserver, process, [Packet, Origin, transaction_layer]),
      ok.
  
  %%--------------------------------------------------------------------
  %% Function: is_only_nulls(Packet)
  %%           Packet = binary(), a packet received from the network
  %% Descrip.: Check if a binary packet is only NULL bytes or not.
  %% Returns : true | false
  %%--------------------------------------------------------------------
  is_only_nulls(Packet) when is_binary(Packet) ->
      ZeroList = lists:duplicate(size(Packet), 0),
      (Packet == list_to_binary(ZeroList)).
  