net-http-persistent 1.3.1 → 1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data.tar.gz.sig +0 -0
- data/History.txt +6 -0
- data/lib/net/http/persistent.rb +33 -8
- data/test/test_net_http_persistent.rb +52 -0
- metadata +4 -5
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/History.txt
CHANGED
data/lib/net/http/persistent.rb
CHANGED
@@ -37,7 +37,7 @@ class Net::HTTP::Persistent
|
|
37
37
|
##
|
38
38
|
# The version of Net::HTTP::Persistent use are using
|
39
39
|
|
40
|
-
VERSION = '1.
|
40
|
+
VERSION = '1.4'
|
41
41
|
|
42
42
|
##
|
43
43
|
# Error class for errors raised by Net::HTTP::Persistent. Various
|
@@ -388,13 +388,20 @@ class Net::HTTP::Persistent
|
|
388
388
|
end
|
389
389
|
|
390
390
|
##
|
391
|
-
# Shuts down all connections
|
391
|
+
# Shuts down all connections for +thread+.
|
392
|
+
#
|
393
|
+
# Uses the current thread by default.
|
392
394
|
#
|
393
|
-
# If you've used Net::HTTP::Persistent across multiple threads you
|
394
|
-
# this in each thread.
|
395
|
+
# If you've used Net::HTTP::Persistent across multiple threads you should
|
396
|
+
# call this in each thread when you're done making HTTP requests.
|
397
|
+
#
|
398
|
+
# *NOTE*: Calling shutdown for another thread can be dangerous!
|
399
|
+
#
|
400
|
+
# If the thread is still using the connection it may cause an error! It is
|
401
|
+
# best to call #shutdown in the thread at the appropriate time instead!
|
395
402
|
|
396
|
-
def shutdown
|
397
|
-
connections =
|
403
|
+
def shutdown thread = Thread.current
|
404
|
+
connections = thread[@connection_key]
|
398
405
|
|
399
406
|
connections.each do |_, connection|
|
400
407
|
begin
|
@@ -403,8 +410,26 @@ class Net::HTTP::Persistent
|
|
403
410
|
end
|
404
411
|
end if connections
|
405
412
|
|
406
|
-
|
407
|
-
|
413
|
+
thread[@connection_key] = nil
|
414
|
+
thread[@request_key] = nil
|
415
|
+
end
|
416
|
+
|
417
|
+
##
|
418
|
+
# Shuts down all connections in all threads
|
419
|
+
#
|
420
|
+
# *NOTE*: THIS METHOD IS VERY DANGEROUS!
|
421
|
+
#
|
422
|
+
# Do not call this method if other threads are still using their
|
423
|
+
# connections! Call #shutdown at the appropriate time instead!
|
424
|
+
#
|
425
|
+
# Use this method only as a last resort!
|
426
|
+
|
427
|
+
def shutdown_in_all_threads
|
428
|
+
Thread.list.each do |thread|
|
429
|
+
shutdown thread
|
430
|
+
end
|
431
|
+
|
432
|
+
nil
|
408
433
|
end
|
409
434
|
|
410
435
|
##
|
@@ -575,6 +575,58 @@ class TestNetHttpPersistent < MiniTest::Unit::TestCase
|
|
575
575
|
assert_nil Thread.current[@http.request_key]
|
576
576
|
end
|
577
577
|
|
578
|
+
def test_shutdown_thread
|
579
|
+
t = Thread.new do
|
580
|
+
c = connection
|
581
|
+
conns
|
582
|
+
reqs
|
583
|
+
|
584
|
+
Thread.stop
|
585
|
+
|
586
|
+
c
|
587
|
+
end
|
588
|
+
|
589
|
+
Thread.pass until t.status == 'sleep'
|
590
|
+
|
591
|
+
c = connection
|
592
|
+
|
593
|
+
@http.shutdown t
|
594
|
+
|
595
|
+
refute c.finished?
|
596
|
+
|
597
|
+
t.run
|
598
|
+
assert t.value.finished?
|
599
|
+
assert_nil t[@http.connection_key]
|
600
|
+
assert_nil t[@http.request_key]
|
601
|
+
end
|
602
|
+
|
603
|
+
def test_shutdown_in_all_threads
|
604
|
+
t = Thread.new do
|
605
|
+
c = connection
|
606
|
+
conns
|
607
|
+
reqs
|
608
|
+
|
609
|
+
Thread.stop
|
610
|
+
|
611
|
+
c
|
612
|
+
end
|
613
|
+
|
614
|
+
Thread.pass until t.status == 'sleep'
|
615
|
+
|
616
|
+
c = connection
|
617
|
+
|
618
|
+
assert_nil @http.shutdown_in_all_threads
|
619
|
+
|
620
|
+
assert c.finished?
|
621
|
+
assert_nil Thread.current[@http.connection_key]
|
622
|
+
assert_nil Thread.current[@http.request_key]
|
623
|
+
|
624
|
+
t.run
|
625
|
+
assert t.value.finished?
|
626
|
+
assert_nil t[@http.connection_key]
|
627
|
+
assert_nil t[@http.request_key]
|
628
|
+
end
|
629
|
+
|
578
630
|
def test_ssl
|
579
631
|
@http.verify_callback = :callback
|
580
632
|
c = Net::HTTP.new 'localhost', 80
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: net-http-persistent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 7
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
|
10
|
-
version: 1.3.1
|
8
|
+
- 4
|
9
|
+
version: "1.4"
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Eric Hodel
|
@@ -36,7 +35,7 @@ cert_chain:
|
|
36
35
|
x52qPcexcYZR7w==
|
37
36
|
-----END CERTIFICATE-----
|
38
37
|
|
39
|
-
date: 2010-09-
|
38
|
+
date: 2010-09-30 00:00:00 -07:00
|
40
39
|
default_executable:
|
41
40
|
dependencies:
|
42
41
|
- !ruby/object:Gem::Dependency
|
metadata.gz.sig
CHANGED
Binary file
|