%% Configuration file for specifying settings for HTTP servers which this
%% client will connect to.
%% The format of each entry is (one per line)
%% {dest, Hostname, Portnumber, MaxSessions, MaxPipelineSize, Options}.
%%
%% where Hostname = string()
%%       Portnumber = integer()
%%       MaxSessions = integer()
%%       MaxPipelineSize = integer()
%%       Options = [{Tag, Val} | ...]
%%       Tag = term()
%%       Value = term()
%% e.g.
%% {dest, "covig02", 8000, 10, 10, [{is_ssl, true}, {ssl_options, [option()]}]}.
%% If SSL is to be used, both the options, is_ssl and ssl_options MUST be specified
%% where option() is all options supported in the ssl module

