angelo 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 71b7b6db8f9dc6f54045817b05e45895e9a30158
4
- data.tar.gz: 0f7c1f1b602476811076b98df9829f15476819f1
3
+ metadata.gz: 6587b907b0623b8cc15e44cd6b8bcbe13f74457f
4
+ data.tar.gz: 7a1f799676dd2aaedc0bc5f2752849ca2edb3b91
5
5
  SHA512:
6
- metadata.gz: 96b4ed9df8cff7a12a62bbd9e5fcbd7b9ffc912587d094f85beb0dbdf1c59c1e7f0501d8dfdab4f66a960845570731c6582739ce23689a5075d595ceb2db88ea
7
- data.tar.gz: 3ebb1e69058a7733e05a5f7f990514a3ebdd001382f20129e7e3862404abc242617fc8cc1d6ee8f0111fc5ecb1f92a8c808c9c1d5af3d0b98e628e8f2927458f
6
+ metadata.gz: bfaa807fa0ec7facc7475b5d6af7e476138396dccf06607705a27996a19109ebffbdbdc1b308f0f429a2bad7b5bba015301ab9c8c76336a1a944565f9a89c634
7
+ data.tar.gz: 1913737e3cda415a6741215f6d65a0a54a0247f74bbc7cae1dd55974e95d40983dca9a8d933baa028a8f7f0c44297346104328ad2e790e0915567079afe70d29
data/.travis.yml CHANGED
@@ -3,4 +3,5 @@ rvm:
3
3
  - "1.9.3"
4
4
  - "2.0.0"
5
5
  - "2.1.2"
6
+ - "2.1.3"
6
7
  script: rake
data/CHANGELOG.md CHANGED
@@ -1,6 +1,12 @@
1
1
  changelog
2
2
  =========
3
3
 
4
+ ### 0.2.1 7 oct 2014
5
+
6
+ thanks: @chewi
7
+
8
+ * fix stash socket iteration error handling (#11)
9
+
4
10
  ### 0.2.0 23 sep 2014
5
11
 
6
12
  * chunked responses with `transfer_encoding :chunked` and `return_obj.each`
data/lib/angelo/stash.rb CHANGED
@@ -38,7 +38,6 @@ module Angelo
38
38
  #
39
39
  def << s
40
40
  peeraddrs[s] = s.peeraddr
41
- yield if block_given?
42
41
  stashes[@context] << s
43
42
  end
44
43
 
@@ -52,7 +51,7 @@ module Angelo
52
51
  # as needed
53
52
  #
54
53
  def each &block
55
- stash.each do |s|
54
+ stash.dup.each do |s|
56
55
  begin
57
56
  yield s
58
57
  rescue Reel::SocketError, IOError, SystemCallError => e
@@ -118,9 +117,8 @@ module Angelo
118
117
  include Stash
119
118
 
120
119
  def << ws
121
- super do
122
- @server.async.handle_websocket ws
123
- end
120
+ super
121
+ @server.async.handle_websocket ws
124
122
  end
125
123
 
126
124
  end
@@ -1,3 +1,3 @@
1
1
  module Angelo
2
- VERSION = '0.2.0'
2
+ VERSION = '0.2.1'
3
3
  end
@@ -0,0 +1,49 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe Angelo::Stash do
4
+
5
+ describe 'error handling' do
6
+
7
+ class ErrorSocket
8
+
9
+ def read *args
10
+ raise IOError
11
+ end
12
+
13
+ def closed?
14
+ true
15
+ end
16
+
17
+ end
18
+
19
+ class TestStash
20
+ extend Angelo::Stash::ClassMethods
21
+ include Angelo::Stash
22
+
23
+ def << s
24
+ peeraddrs[s] = [nil, 'hi from tests']
25
+ stashes[@context] << s
26
+ end
27
+
28
+ end
29
+
30
+ it 'does not skip live sockets when removing dead sockets' do
31
+ err_sock = ErrorSocket.new
32
+
33
+ good_sock = Minitest::Mock.new
34
+ good_sock.expect :read, "hi"
35
+ good_sock.expect :hash, 123
36
+ def good_sock.== o; o == self; end
37
+
38
+ stash = TestStash.new nil
39
+
40
+ stash << err_sock
41
+ stash << good_sock
42
+
43
+ stash.each {|s| s.read}
44
+ good_sock.verify
45
+ end
46
+
47
+ end
48
+
49
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: angelo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kenichi Nakamura
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-23 00:00:00.000000000 Z
11
+ date: 2014-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: reel
@@ -72,6 +72,7 @@ files:
72
72
  - test/angelo/filter_spec.rb
73
73
  - test/angelo/mustermann_spec.rb
74
74
  - test/angelo/params_spec.rb
75
+ - test/angelo/stash_spec.rb
75
76
  - test/angelo/static_spec.rb
76
77
  - test/angelo/websocket_spec.rb
77
78
  - test/angelo_spec.rb