anchor.diff:  
   
   
  -
  -add_options(Options, {ok, CaChain}, DhParam, Hostname, IPv6) ->
  +%% @doc dynamically generate the list of options for the webserver.
  +-spec add_options(Options :: [tuple()], CaChainSetting :: tuple() | ok,
  +                  DhParamSetting :: tuple() | ok, IsOnion :: boolean() | ok,
  +                  IPv6Setting :: tuple() | ok) -> [tuple()].
  +add_options(Options, {ok, CaChain}, DhParam, IsOnion, IPv6) ->
       NewOptions = [ {cacerts, CaChain} | Options ],
  -    add_options(NewOptions, ok, DhParam, Hostname, IPv6);
  -add_options(Options, undefined, DhParam, Hostname, IPv6) ->
  -    add_options(Options, ok, DhParam, Hostname, IPv6);
  -add_options(Options, CaChain,  undefined, Hostname, IPv6) ->
  -    add_options(Options, CaChain, ok, Hostname, IPv6);
  -add_options(Options, CaChain, {ok, DhParam}, Hostname, IPv6) ->
  +    add_options(NewOptions, ok, DhParam, IsOnion, IPv6);
  +add_options(Options, undefined, DhParam, IsOnion, IPv6) ->
  +    add_options(Options, ok, DhParam, IsOnion, IPv6);
  +add_options(Options, CaChain,  undefined, IsOnion, IPv6) ->
  +    add_options(Options, CaChain, ok, IsOnion, IPv6);
  +add_options(Options, CaChain, {ok, DhParam}, IsOnion, IPv6) ->
       NewOptions = [ {dh, DhParam} | Options ],
  -    add_options(NewOptions, CaChain, ok, Hostname, IPv6);
  +    add_options(NewOptions, CaChain, ok, IsOnion, IPv6);
   add_options(Options, CaChain, DhParam, true, {ok, true}) ->
       lager:info("Init: listening only at ::1 (onion)"),
       NewOptions = [ {ip, {0, 0, 0, 0, 0, 0, 0, 1}} | Options ],
  
positive.code: read_certificate(_) ->
      false.
  
  read_key({ok, Path}) ->
      case read_pem_entries(Path) of
          [{Type, PrivateKey, not_encrypted}]
  
negative.code:     ?UNSETCONFIG(cachain),
      true.
  
  %% @doc read the dh params for SSL
  -spec read_dhparam(any()) -> Success :: boolean().
  read_dhparam({ok, none}) ->
      lager:warning("Init: no dh-file configured [dh_file]!"),
      ?UNSETCONFIG(dhparam),
  