143
143
%%--------------------------------------------------------------------
144
144
init([Request, Options]) ->
145
145
process_flag(trap_exit, true),
146
handle_verbose(Options#options.verbose),
146
147
Address = handle_proxy(Request#request.address, Options#options.proxy),
147
148
case {Address /= Request#request.address, Request#request.scheme} of
186
186
case State#state.request of
187
187
#request{} -> %% Old request no yet finished
188
188
%% Make sure to use the new value of timers in state
189
Timers = NewState#state.timers,
189
NewTimers = NewState#state.timers,
190
190
NewPipeline = queue:in(Request, State#state.pipeline),
192
192
Session#tcp_session{pipeline_length =
255
255
stream = Stream} = Request,
256
256
session = Session, status_line = StatusLine})
257
257
when Proto == tcp; Proto == ssl; Proto == httpc_handler ->
258
http_util:verbose_output((State#state.options)#options.verbose,
260
259
case Module:Function([Data | Args]) of
262
261
handle_http_msg(Result, State);
424
421
NewState = activate_request_timeout(TmpState),
426
423
{error, Reason} ->
427
case State#state.status of
428
new -> % Called from init/1
429
self() ! {init_error, error_sending,
430
httpc_response:error(Request, Reason)},
431
{ok, State#state{request = Request,
433
#tcp_session{socket = Socket}}};
434
ssl_tunnel -> % Not called from init/1
436
answer_request(Request,
437
httpc_response:error(Request,
440
{stop, normal, NewState}
444
case State#state.status of
445
new -> % Called from init/1
446
self() ! {init_error, error_connecting,
424
%% Commented out in wait of ssl support to avoid
426
%%case State#state.status of
427
%% new -> % Called from init/1
428
self() ! {init_error, error_sending,
447
429
httpc_response:error(Request, Reason)},
448
{ok, State#state{request = Request}};
449
ssl_tunnel -> % Not called from init/1
451
answer_request(Request,
452
httpc_response:error(Request,
455
{stop, normal, NewState}
430
{ok, State#state{request = Request,
432
#tcp_session{socket = Socket}}}
433
%%ssl_tunnel -> % Not called from init/1
435
%% answer_request(Request,
436
%%httpc_response:error(Request,
439
%% {stop, normal, NewState}
443
%% Commented out in wait of ssl support to avoid
445
%% case State#state.status of
446
%% new -> % Called from init/1
447
self() ! {init_error, error_connecting,
448
httpc_response:error(Request, Reason)},
449
{ok, State#state{request = Request}}
450
%% ssl_tunnel -> % Not called from init/1
452
%% answer_request(Request,
453
%% httpc_response:error(Request,
456
%% {stop, normal, NewState}
459
460
handle_http_msg({Version, StatusCode, ReasonPharse, Headers, Body},
574
575
%% Send request body
575
576
{_, RequestBody} = Request#request.content,
576
http_util:verbose_output(Options#options.verbose,
577
RequestBody,"Sending request body: "),
578
577
http_transport:send(socket_type(Session#tcp_session.scheme),
579
578
Session#tcp_session.socket,
883
882
end_stream(_, _) ->
885
handle_verbose(verbose) ->
887
handle_verbose(debug) ->
888
dbg:p(self(), [call]),
889
dbg:tp(?MODULE, [{'_', [], [{return_trace}]}]);
890
handle_verbose(trace) ->
891
dbg:p(self(), [call]),
892
dbg:tpl(?MODULE, [{'_', [], [{return_trace}]}]);
886
896
%%% Normaly I do not comment out code, I throw it away. But this might
887
897
%%% actually be used on day if ssl is improved.
888
898
%% send_ssl_tunnel_request(Address, Request = #request{address = {Host, Port}},