permessage_deflate 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/LICENSE.md +21 -0
- data/README.md +1 -24
- data/lib/permessage_deflate/server_session.rb +4 -4
- data/lib/permessage_deflate/session.rb +9 -2
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0b7269ee5c2053e590df3ee23dee682643a94141
|
4
|
+
data.tar.gz: ce977b261ba5a4496a18a295ba786e522ff7c54d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5c5e3671daa908ef039e1d0ebc7adc7f216072b38f04f2f6668cd1b74acc5c81946233053002cbff5af045fc8454ab087a2bdc03d90e4dab9cf94bf5f57e1617
|
7
|
+
data.tar.gz: d4b4e6f843ed4eef06eb7c5b16a1c322689c9f61bd662fc581c1101824011113674c3c6248f89e9ec798bb6895cd64a401eb0408ada92c634d81903dfe5e1424
|
data/CHANGELOG.md
CHANGED
data/LICENSE.md
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# The MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2014-2017 James Coglan
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
6
|
+
this software and associated documentation files (the 'Software'), to deal in
|
7
|
+
the Software without restriction, including without limitation the rights to
|
8
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
9
|
+
the Software, and to permit persons to whom the Software is furnished to do so,
|
10
|
+
subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
17
|
+
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
18
|
+
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
19
|
+
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
20
|
+
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
21
|
+
|
data/README.md
CHANGED
@@ -11,7 +11,7 @@ WebSocket protocol extension as a plugin for
|
|
11
11
|
$ gem install permessage_deflate
|
12
12
|
```
|
13
13
|
|
14
|
-
##
|
14
|
+
## Usage
|
15
15
|
|
16
16
|
Add the plugin to your extensions:
|
17
17
|
|
@@ -65,26 +65,3 @@ can be used to set the local session's behaviour and control that of the peer:
|
|
65
65
|
if requested by the peer
|
66
66
|
* `:request_max_window_bits`: an integer from `8` to `15` inclusive to ask the
|
67
67
|
other peer to use to set its maximum sliding window size, if supported
|
68
|
-
|
69
|
-
## License
|
70
|
-
|
71
|
-
(The MIT License)
|
72
|
-
|
73
|
-
Copyright (c) 2014-2016 James Coglan
|
74
|
-
|
75
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
76
|
-
this software and associated documentation files (the 'Software'), to deal in
|
77
|
-
the Software without restriction, including without limitation the rights to
|
78
|
-
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
79
|
-
the Software, and to permit persons to whom the Software is furnished to do so,
|
80
|
-
subject to the following conditions:
|
81
|
-
|
82
|
-
The above copyright notice and this permission notice shall be included in all
|
83
|
-
copies or substantial portions of the Software.
|
84
|
-
|
85
|
-
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
86
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
87
|
-
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
88
|
-
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
89
|
-
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
90
|
-
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -19,21 +19,21 @@ class PermessageDeflate
|
|
19
19
|
def generate_response
|
20
20
|
response = {}
|
21
21
|
|
22
|
-
# https://tools.ietf.org/html/
|
22
|
+
# https://tools.ietf.org/html/rfc7692#section-7.1.1.1
|
23
23
|
|
24
24
|
@own_context_takeover = !@accept_no_context_takeover &&
|
25
25
|
!@params['server_no_context_takeover']
|
26
26
|
|
27
27
|
response['server_no_context_takeover'] = true unless @own_context_takeover
|
28
28
|
|
29
|
-
# https://tools.ietf.org/html/
|
29
|
+
# https://tools.ietf.org/html/rfc7692#section-7.1.1.2
|
30
30
|
|
31
31
|
@peer_context_takeover = !@request_no_context_takeover &&
|
32
32
|
!@params['client_no_context_takeover']
|
33
33
|
|
34
34
|
response['client_no_context_takeover'] = true unless @peer_context_takeover
|
35
35
|
|
36
|
-
# https://tools.ietf.org/html/
|
36
|
+
# https://tools.ietf.org/html/rfc7692#section-7.1.2.1
|
37
37
|
|
38
38
|
@own_window_bits = [ @accept_max_window_bits || MAX_WINDOW_BITS,
|
39
39
|
@params['server_max_window_bits'] || MAX_WINDOW_BITS
|
@@ -45,7 +45,7 @@ class PermessageDeflate
|
|
45
45
|
response['server_max_window_bits'] = @own_window_bits
|
46
46
|
end
|
47
47
|
|
48
|
-
# https://tools.ietf.org/html/
|
48
|
+
# https://tools.ietf.org/html/rfc7692#section-7.1.2.2
|
49
49
|
|
50
50
|
if client_max = @params['client_max_window_bits']
|
51
51
|
client_max = MAX_WINDOW_BITS if client_max == true
|
@@ -8,6 +8,7 @@ class PermessageDeflate
|
|
8
8
|
'client_max_window_bits'
|
9
9
|
]
|
10
10
|
|
11
|
+
MIN_WINDOW_BITS = 9
|
11
12
|
MAX_WINDOW_BITS = 15
|
12
13
|
VALID_WINDOW_BITS = [8, 9, 10, 11, 12, 13, 14, 15]
|
13
14
|
|
@@ -83,14 +84,20 @@ class PermessageDeflate
|
|
83
84
|
|
84
85
|
def get_inflate
|
85
86
|
return @inflate if @inflate
|
86
|
-
|
87
|
+
|
88
|
+
window_bits = [@peer_window_bits, MIN_WINDOW_BITS].max
|
89
|
+
inflate = Zlib::Inflate.new(-window_bits)
|
90
|
+
|
87
91
|
@inflate = inflate if @peer_context_takeover
|
88
92
|
inflate
|
89
93
|
end
|
90
94
|
|
91
95
|
def get_deflate
|
92
96
|
return @deflate if @deflate
|
93
|
-
|
97
|
+
|
98
|
+
window_bits = [@own_window_bits, MIN_WINDOW_BITS].max
|
99
|
+
deflate = Zlib::Deflate.new(@level, -window_bits, @mem_level, @strategy)
|
100
|
+
|
94
101
|
@deflate = deflate if @own_context_takeover
|
95
102
|
deflate
|
96
103
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: permessage_deflate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Coglan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-09-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -32,6 +32,7 @@ extra_rdoc_files:
|
|
32
32
|
- README.md
|
33
33
|
files:
|
34
34
|
- CHANGELOG.md
|
35
|
+
- LICENSE.md
|
35
36
|
- README.md
|
36
37
|
- lib/permessage_deflate.rb
|
37
38
|
- lib/permessage_deflate/client_session.rb
|
@@ -61,7 +62,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
61
62
|
version: '0'
|
62
63
|
requirements: []
|
63
64
|
rubyforge_project:
|
64
|
-
rubygems_version: 2.
|
65
|
+
rubygems_version: 2.6.11
|
65
66
|
signing_key:
|
66
67
|
specification_version: 4
|
67
68
|
summary: Per-message DEFLATE compression extension for WebSocket connections
|