anchor.diff:  default_port(ssl) -> 443;
   default_port(_) -> 80.
   
  -%% Another hurtful block of code. :)
  -%%
   %% Same code as cow_http:parse_fullhost/1, but inline because we
   %% really want this to go fast.
   parse_host(<< $[, Rest/bits >>, false, <<>>) ->
  
positive.code: match_colon(_, _) ->
  	nomatch.
  
  %% I know, this isn't exactly pretty. But this is the most critical
  %% code path and as such needs to be optimized to death.
  %%
  %% ... Sorry for your eyes.
  %%
  %% But let's be honest, that's still pretty readable.
  parse_hd_name(<< C, Rest/bits >>, S, M, P, Q, V, H, SoFar) ->
  	case C of
  		$: -> parse_hd_before_value(Rest, S, M, P, Q, V, H, SoFar);
  		$\s -> parse_hd_name_ws(Rest, S, M, P, Q, V, H, SoFar);
  		$\t -> parse_hd_name_ws(Rest, S, M, P, Q, V, H, SoFar);
  		$A -> parse_hd_name(Rest, S, M, P, Q, V, H, << SoFar/binary, $a >>);
  		$B -> parse_hd_name(Rest, S, M, P, Q, V, H, << SoFar/binary, $b >>);
  		$C -> parse_hd_name(Rest, S, M, P, Q, V, H, << SoFar/binary, $c >>);
  		$D -> parse_hd_name(Rest, S, M, P, Q, V, H, << SoFar/binary, $d >>);
  		$E -> parse_hd_name(Rest, S, M, P, Q, V, H, << SoFar/binary, $e >>);
  		$F -> parse_hd_name(Rest, S, M, P, Q, V, H, << SoFar/binary, $f >>);
  		$G -> parse_hd_name(Rest, S, M, P, Q, V, H, << SoFar/binary, $g >>);
  		$H -> parse_hd_name(Rest, S, M, P, Q, V, H, << SoFar/binary, $h >>);
  		$I -> parse_hd_name(Rest, S, M, P, Q, V, H, << SoFar/binary, $i >>);
  		$J -> parse_hd_name(Rest, S, M, P, Q, V, H, << SoFar/binary, $j >>);
  		$K -> parse_hd_name(Rest, S, M, P, Q, V, H, << SoFar/binary, $k >>);
  		$L -> parse_hd_name(Rest, S, M, P, Q, V, H, << SoFar/binary, $l >>);
  		$M -> parse_hd_name(Rest, S, M, P, Q, V, H, << SoFar/binary, $m >>);
  		$N -> parse_hd_name(Rest, S, M, P, Q, V, H, << SoFar/binary, $n >>);
  		$O -> parse_hd_name(Rest, S, M, P, Q, V, H, << SoFar/binary, $o >>);
  		$P -> parse_hd_name(Rest, S, M, P, Q, V, H, << SoFar/binary, $p >>);
  		$Q -> parse_hd_name(Rest, S, M, P, Q, V, H, << SoFar/binary, $q >>);
  		$R -> parse_hd_name(Rest, S, M, P, Q, V, H, << SoFar/binary, $r >>);
  		$S -> parse_hd_name(Rest, S, M, P, Q, V, H, << SoFar/binary, $s >>);
  		$T -> parse_hd_name(Rest, S, M, P, Q, V, H, << SoFar/binary, $t >>);
  		$U -> parse_hd_name(Rest, S, M, P, Q, V, H, << SoFar/binary, $u >>);
  		$V -> parse_hd_name(Rest, S, M, P, Q, V, H, << SoFar/binary, $v >>);
  		$W -> parse_hd_name(Rest, S, M, P, Q, V, H, << SoFar/binary, $w >>);
  		$X -> parse_hd_name(Rest, S, M, P, Q, V, H, << SoFar/binary, $x >>);
  		$Y -> parse_hd_name(Rest, S, M, P, Q, V, H, << SoFar/binary, $y >>);
  		$Z -> parse_hd_name(Rest, S, M, P, Q, V, H, << SoFar/binary, $z >>);
  		C -> parse_hd_name(Rest, S, M, P, Q, V, H, << SoFar/binary, C >>)
  	end.
  
  parse_hd_name_ws(<< C, Rest/bits >>, S, M, P, Q, V, H, Name) ->
  
negative.code: 	until :: non_neg_integer() | infinity
  }).
  
  -include_lib("cowlib/include/cow_inline.hrl").
  
  %% API.
  
  %% @doc Start an HTTP protocol process.
  