falcon 0.17.1 → 0.17.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.
- checksums.yaml +4 -4
- data/falcon.gemspec +2 -2
- data/lib/falcon/adapters/input.rb +23 -37
- data/lib/falcon/adapters/rack.rb +10 -5
- data/lib/falcon/version.rb +1 -1
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bffdd8ea496ec7bdcac74b8c2c540f4d6da008d35d3d8f598764a2d17974b842
|
4
|
+
data.tar.gz: 4f993d6d77cebb76ca53141f2e92febba54d3db3eeddaeda130d5bce04d9f48c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c44c95675ce2e672a97048ca99070b83d773b7a840699f474b72744fe80f17fd8ba8a8d2061a0ab2659dc7622188b5238395b34871db2f17b424580ce0aa7e1
|
7
|
+
data.tar.gz: 752f925c54ff738d48cbc2cd81104bd2291d931a5cfe5f1b3893c18e98a599d4bf32f5b0f8e9a5b6db5f9a456357cd1ad88053d5169acc470fff7a1313381607
|
data/falcon.gemspec
CHANGED
@@ -24,8 +24,8 @@ Gem::Specification.new do |spec|
|
|
24
24
|
|
25
25
|
spec.add_dependency('samovar', "~> 1.3")
|
26
26
|
|
27
|
-
spec.add_development_dependency "async-rspec", "~> 1.
|
28
|
-
spec.add_development_dependency "async-websocket"
|
27
|
+
spec.add_development_dependency "async-rspec", "~> 1.7"
|
28
|
+
spec.add_development_dependency "async-websocket", "~> 0.6.0"
|
29
29
|
|
30
30
|
spec.add_development_dependency "bundler", "~> 1.3"
|
31
31
|
spec.add_development_dependency "rspec", "~> 3.6"
|
@@ -28,8 +28,8 @@ module Falcon
|
|
28
28
|
def initialize(body)
|
29
29
|
@body = body
|
30
30
|
|
31
|
-
#
|
32
|
-
@buffer =
|
31
|
+
# Will hold remaining data in `#read`.
|
32
|
+
@buffer = nil
|
33
33
|
@finished = @body.nil?
|
34
34
|
end
|
35
35
|
|
@@ -49,7 +49,7 @@ module Falcon
|
|
49
49
|
if @body
|
50
50
|
# If the body is not rewindable, this will fail.
|
51
51
|
@body.rewind
|
52
|
-
@buffer
|
52
|
+
@buffer = nil
|
53
53
|
@finished = false
|
54
54
|
end
|
55
55
|
end
|
@@ -67,49 +67,41 @@ module Falcon
|
|
67
67
|
# @param buffer [String] the buffer which will receive the data
|
68
68
|
# @return a buffer containing the data
|
69
69
|
def read(length = nil, buffer = nil)
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
70
|
+
buffer ||= Async::IO::BinaryString.new
|
71
|
+
buffer.clear
|
72
|
+
|
73
|
+
until buffer.bytesize == length
|
74
|
+
@buffer = read_next if @buffer.nil?
|
75
|
+
break if @buffer.nil?
|
74
76
|
|
75
|
-
if
|
76
|
-
# TODO https://bugs.ruby-lang.org/issues/14745
|
77
|
-
buffer.replace(chunk)
|
78
|
-
else
|
79
|
-
buffer = chunk
|
80
|
-
end
|
77
|
+
remaining_length = length - buffer.bytesize if length
|
81
78
|
|
82
|
-
if
|
83
|
-
|
79
|
+
if remaining_length && remaining_length < @buffer.bytesize
|
80
|
+
buffer << @buffer.byteslice(0, remaining_length)
|
81
|
+
@buffer = @buffer.byteslice(remaining_length..-1)
|
84
82
|
else
|
85
|
-
|
86
|
-
|
87
|
-
else
|
88
|
-
buffer ||= Async::IO::BinaryString.new
|
89
|
-
|
90
|
-
buffer.replace(@buffer)
|
91
|
-
@buffer.clear
|
92
|
-
|
93
|
-
while chunk = read_next
|
94
|
-
buffer << chunk
|
83
|
+
buffer << @buffer
|
84
|
+
@buffer = nil
|
95
85
|
end
|
96
|
-
|
97
|
-
return buffer
|
98
86
|
end
|
87
|
+
|
88
|
+
return nil if buffer.empty? && length && length > 0
|
89
|
+
|
90
|
+
return buffer
|
99
91
|
end
|
100
92
|
|
101
93
|
def eof?
|
102
|
-
@finished and @buffer.
|
94
|
+
@finished and @buffer.nil?
|
103
95
|
end
|
104
96
|
|
105
97
|
# gets must be called without arguments and return a string, or nil on EOF.
|
106
98
|
# @return [String, nil] The next chunk from the body.
|
107
99
|
def gets
|
108
|
-
if @buffer.
|
100
|
+
if @buffer.nil?
|
109
101
|
return read_next
|
110
102
|
else
|
111
|
-
buffer = @buffer
|
112
|
-
@buffer
|
103
|
+
buffer = @buffer
|
104
|
+
@buffer = nil
|
113
105
|
return buffer
|
114
106
|
end
|
115
107
|
end
|
@@ -131,12 +123,6 @@ module Falcon
|
|
131
123
|
return nil
|
132
124
|
end
|
133
125
|
end
|
134
|
-
|
135
|
-
def fill_buffer(length)
|
136
|
-
while @buffer.bytesize < length and chunk = read_next
|
137
|
-
@buffer << chunk
|
138
|
-
end
|
139
|
-
end
|
140
126
|
end
|
141
127
|
end
|
142
128
|
end
|
data/lib/falcon/adapters/rack.rb
CHANGED
@@ -87,8 +87,13 @@ module Falcon
|
|
87
87
|
env['rack.hijack?'] = true
|
88
88
|
|
89
89
|
env['rack.hijack'] = lambda do
|
90
|
-
|
91
|
-
|
90
|
+
wrapper = request.hijack
|
91
|
+
|
92
|
+
# We dup this as it might be taken out of the normal control flow, and the io will be closed shortly after returning from this method.
|
93
|
+
io = wrapper.io.dup
|
94
|
+
wrapper.close
|
95
|
+
|
96
|
+
env['rack.hijack_io'] = io
|
92
97
|
end
|
93
98
|
else
|
94
99
|
env['rack.hijack?'] = false
|
@@ -105,9 +110,9 @@ module Falcon
|
|
105
110
|
# return nil
|
106
111
|
# end
|
107
112
|
|
108
|
-
if env['rack.hijack_io']
|
109
|
-
|
110
|
-
end
|
113
|
+
# if env['rack.hijack_io']
|
114
|
+
# return nil
|
115
|
+
# end
|
111
116
|
|
112
117
|
@logger.debug(request) {"Rack response: #{status} #{headers.inspect} #{body.class}"}
|
113
118
|
return Response.new(status, headers, body)
|
data/lib/falcon/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: falcon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.17.
|
4
|
+
version: 0.17.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-07-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: async-io
|
@@ -86,28 +86,28 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '1.
|
89
|
+
version: '1.7'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '1.
|
96
|
+
version: '1.7'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: async-websocket
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - "
|
101
|
+
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
103
|
+
version: 0.6.0
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - "
|
108
|
+
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
110
|
+
version: 0.6.0
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: bundler
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|