Author: fdmanana
Date: Wed Nov 3 17:04:38 2010
New Revision: 1030537
URL: http://svn.apache.org/viewvc?rev=1030537&view=rev
Log:
Merged revision 1030534 from trunk:
Fix ibrowse 2.0.x inactivity timeouts not getting cleared.
Patch submitted upstream: http://github.com/cmullaparthi/ibrowse/issues/#issue/17
Modified:
couchdb/branches/1.0.x/src/ibrowse/ibrowse_http_client.erl
Modified: couchdb/branches/1.0.x/src/ibrowse/ibrowse_http_client.erl
URL: http://svn.apache.org/viewvc/couchdb/branches/1.0.x/src/ibrowse/ibrowse_http_client.erl?rev=1030537&r1=1030536&r2=1030537&view=diff
==============================================================================
--- couchdb/branches/1.0.x/src/ibrowse/ibrowse_http_client.erl (original)
+++ couchdb/branches/1.0.x/src/ibrowse/ibrowse_http_client.erl Wed Nov 3 17:04:38 2010
@@ -1713,7 +1713,15 @@ set_inac_timer(State) ->
set_inac_timer(State, get_inac_timeout(State)).
set_inac_timer(_State, Timeout) when is_integer(Timeout) ->
- erlang:send_after(Timeout, self(), timeout);
+ TimerRef = erlang:send_after(Timeout, self(), timeout),
+ case erlang:put(inac_timer, TimerRef) of
+ OldTimer when is_reference(OldTimer) ->
+ erlang:cancel_timer(OldTimer),
+ receive timeout -> ok after 0 -> ok end;
+ _ ->
+ ok
+ end,
+ TimerRef;
set_inac_timer(_, _) ->
undefined.
|