making http client close connections
Joel Reymont
joelr1@REDACTED
Tue Jun 9 19:19:21 CEST 2009
I've been banging my head against this all day today, to no avail.
I have a keep-alive connection that must be closed from the client
side but I cannot for the life of me figure out how to do it!!!
I start the client with a profile name
inets:start(),
Profile = list_to_atom(pid_to_list(self())),
{ok, Pid} = inets:start(httpc, [{profile, Profile}]),
I supply the profile name to http:request/5
{ok, Ref} = http:request(get, {URI2, []}, [], [{sync, false}],
Profile),
When the time comes to shut down the connection, I use the profile
name and cancel the request, just in case. I tried shutting down using
the pid returned by inets:start/2 but it didn't do the trick.
http:cancel_request(State#state.ref),
ok = inets:stop(httpc, State#state.profile),
Assuming that my profile name is 'httpc_manager_<0.83.0>', I see the
profile being shut down (my debugging output)
Stopping <0.96.0>, ref: #Ref<0.0.0.203>
Still, I see the following at the shell prompt, telling me that
there's still a connection to the server. Note that the profile name
is correct!
How in the world do I make http client close all sessions belonging to
the profile!?
Thanks, Joel
---
=ERROR REPORT==== 9-Jun-2009::18:02:58 ===
** Generic server <0.98.0> terminating
** Last message in was {tcp,#Port<0.3069>,
<<"HTTP/1.1 200 OK\r\nContent-Length: 62\r
\n\r\nXXXXX.instance.script_tag_connection().data_received(\"ping
\");">>}
** When Server state == {state,undefined,
{tcp_session,
{{"localhost",8081},<0.98.0>},
false,http,#Port<0.3069>,1,keep_alive},
undefined,undefined,undefined,undefined,
{[],[]},
{[],[]},
keep_alive,[],nolimit,nolimit,
{options,
{undefined,[]},
0,2,5,120000,2,disabled,enabled,false},
{timers,[],#Ref<0.0.0.227>},
'httpc_manager_<0.83.0>',undefined}
** Reason for termination ==
** {function_clause,
[{httpc_handler,handle_info,
[{tcp,#Port<0.3069>,
<<"HTTP/1.1 200 OK\r\nContent-Length: 62\r\n\r
\nXXXX.instance.script_tag_connection().data_received(\"ping\");">>},
{state,undefined,
{tcp_session,
{{"localhost",8081},<0.98.0>},
false,http,#Port<0.3069>,1,keep_alive},
undefined,undefined,undefined,undefined,
{[],[]},
{[],[]},
keep_alive,[],nolimit,nolimit,
{options,
{undefined,[]},
0,2,5,120000,2,disabled,enabled,false},
{timers,[],#Ref<0.0.0.227>},
'httpc_manager_<0.83.0>',undefined}]},
{gen_server,handle_msg,5},
{proc_lib,init_p_do_apply,3}]}
---
Mac hacker with a performance bent
http://www.linkedin.com/in/joelreymont
More information about the erlang-questions
mailing list