anchor.diff:  		       [length(L), length(DataIn)]),
   	    %% remove_separator() removes any leading CR or LF
   	    SoFar = remove_separator(lists:append(DataIn, L)),
  -	    %% Look for header-body separator
  -	    case string:str(SoFar, "\r\n\r\n") of
  -		0 ->
  +	    case has_header_body_separator(SoFar) of
  +		false ->
   		    %% No Header Body separator yet, read more data
   		    do_recv(SoFar, State);
  -		_ ->
  +		true ->
   		    Rest = header_received(SoFar, State),
  +		    logger:log(debug, "TCP receiver: My buffer now contains ~p bytes of data", [length(Rest)]),
   		    Rest
   	    end;
   	{error, closed} ->
  
positive.code: 	    %% We received more data than the Content-Length indicated, might be pipelined requests?
  	    %% Remove any CRLF sequences before (or between) requests, RFC3261 #7.5
  	    NewData = remove_separator(lists:flatten(Rest)),
  	    NewData;
  	_ ->
  	    logger:log(error, "TCP receiver: Unknown result from sippacket:parse() or tcp_read_sip_message() :~n~p~n" ++
  		       "Closing socket.", [Rest]),
  
negative.code: 	[CLenStr] ->
  	    case util:isnumeric(CLenStr) of
  		true ->
  		    %% Be extra careful and check for numeric value.
  		    %% We don't have to worry about partially received Content-Length
  		    %% header here since this function doesn't get invoked until
  		    %% the header-body separator has been seen.
  		    list_to_integer(CLenStr);
  		false ->
  		    invalid
  