stomp 1.2.2 → 1.2.3
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +54 -17
- data/README.rdoc +8 -17
- data/Rakefile +1 -1
- data/bin/catstomp +19 -0
- data/bin/stompcat +19 -0
- data/examples/slogger.rb +1 -1
- data/examples/ssl_uc1.rb +18 -4
- data/examples/ssl_uc1_ciphers.rb +3 -2
- data/examples/ssl_uc2.rb +19 -13
- data/examples/ssl_uc2_ciphers.rb +3 -9
- data/examples/ssl_uc3.rb +20 -12
- data/examples/ssl_uc3_ciphers.rb +3 -8
- data/examples/ssl_uc4.rb +17 -9
- data/examples/ssl_uc4_ciphers.rb +3 -8
- data/examples/ssl_ucx_default_ciphers.rb +6 -5
- data/lib/stomp/client.rb +6 -0
- data/lib/stomp/connection.rb +43 -10
- data/lib/stomp/message.rb +1 -1
- data/lib/stomp/sslparams.rb +3 -0
- data/lib/stomp/version.rb +1 -1
- data/spec/connection_spec.rb +6 -3
- data/stomp.gemspec +3 -3
- data/test/test_client.rb +6 -0
- data/test/test_connection.rb +30 -0
- metadata +5 -5
data/CHANGELOG.rdoc
CHANGED
@@ -1,4 +1,16 @@
|
|
1
|
-
== 1.2.
|
1
|
+
== 1.2.3 20120616
|
2
|
+
|
3
|
+
* Fix UnsupportedProtocol on connect to a 1.0 broker
|
4
|
+
* Add Client#poll method
|
5
|
+
* Add help to stompcat and catstomp
|
6
|
+
* Allow password to be set for private SSL key
|
7
|
+
* Update comments to reflect new repository URL
|
8
|
+
* Reformat changelog dates to ISO8601
|
9
|
+
* Fix SSL connection failures using JRuby
|
10
|
+
* Use symbols, not strings for all header keys
|
11
|
+
* Add IPV6 to IPV4 failover for dual homed systems when requested
|
12
|
+
|
13
|
+
== 1.2.2 20120324
|
2
14
|
|
3
15
|
* Major performance improvement for read of messages without content-length header
|
4
16
|
* Correct Stomp 1.1 failing test
|
@@ -8,16 +20,16 @@
|
|
8
20
|
* Allow SSL file checks before connect using SSLParams.new(:fsck => true, ...)
|
9
21
|
* Correct a test for Windows compatibility
|
10
22
|
|
11
|
-
== 1.2.1
|
23
|
+
== 1.2.1 20120313
|
12
24
|
|
13
|
-
* Robust SSL certificate support. See examples and: https://github.com/
|
25
|
+
* Robust SSL certificate support. See examples and: https://github.com/stompgem/stomp/wiki/extended-ssl-overview
|
14
26
|
* Really remove the deprecated #send methods
|
15
27
|
* Fix exception in Stomp 1.1 code when headers are frozen
|
16
28
|
* Revert 245e734a0. See ce8335fb2f for details. Fixes broken Connection#poll.
|
17
29
|
* Add reconnection attempts to callback logging.
|
18
30
|
* Add SSL specific connection information to callback logging.
|
19
31
|
|
20
|
-
== 1.2.0
|
32
|
+
== 1.2.0 20111214
|
21
33
|
|
22
34
|
* Stomp 1.1 protocol support. A significant change. Please test existing 1.0 code well. See the examples directory for 1.1 examples.
|
23
35
|
* Accept :reliable in a Stomp::Client connection hash
|
@@ -27,14 +39,14 @@
|
|
27
39
|
* Fix subscription id in find_listener
|
28
40
|
* Start to bootstrap STOMP 1.1 support
|
29
41
|
|
30
|
-
== 1.1.10
|
42
|
+
== 1.1.10 20111107
|
31
43
|
|
32
44
|
* Fixes for JRuby support
|
33
45
|
* Fix EOF error on disconnect
|
34
46
|
* Refactoring and additional test
|
35
47
|
* Set up tests for use of RabbitMQ
|
36
48
|
|
37
|
-
== 1.1.9
|
49
|
+
== 1.1.9 20110615
|
38
50
|
|
39
51
|
* Support wildcard destinations
|
40
52
|
* Handle subscribe with string or symbol ID
|
@@ -45,7 +57,7 @@
|
|
45
57
|
* Add optional callback logging. See the examples install directory, files logexamp.rb and slogger.rb
|
46
58
|
* Correct date stamps in this file
|
47
59
|
|
48
|
-
== 1.1.8
|
60
|
+
== 1.1.8 20110316
|
49
61
|
|
50
62
|
* Set KEEPALIVE on connection socket options
|
51
63
|
* Attempt to support JRuby more robustly (poll remains broken)
|
@@ -56,23 +68,23 @@
|
|
56
68
|
* Allow connection to hosts with a - (dash) in the host name
|
57
69
|
* Add limit parameter to thread joins
|
58
70
|
|
59
|
-
== 1.1.7
|
71
|
+
== 1.1.7 20110109
|
60
72
|
|
61
73
|
* Binary parse of raw STOMP frame
|
62
74
|
* Fix broken tests on Ruby 1.9.2
|
63
75
|
|
64
|
-
== 1.1.6
|
76
|
+
== 1.1.6 20100610
|
65
77
|
|
66
78
|
* Fixed multi-thread app hanging
|
67
79
|
|
68
|
-
== 1.1.5
|
80
|
+
== 1.1.5 20100317
|
69
81
|
|
70
82
|
* Added publish method (send is now deprecated)
|
71
83
|
* Changes on Rake File
|
72
84
|
* Added original_destination header to unreceive
|
73
85
|
* suppress content length header is send on the message for future handling (like unreceive)
|
74
86
|
|
75
|
-
== 1.1.4
|
87
|
+
== 1.1.4 20100121
|
76
88
|
|
77
89
|
* Added unreceive message method that sends the message back to its queue or to the
|
78
90
|
dead letter queue, depending on the :max_redeliveries option, similar to a13m one.
|
@@ -87,13 +99,13 @@
|
|
87
99
|
* Added connection_frame accessor
|
88
100
|
* Added disconnect receipt
|
89
101
|
|
90
|
-
== 1.1.3
|
102
|
+
== 1.1.3 20091124
|
91
103
|
|
92
104
|
* Failover support
|
93
105
|
* SSL support
|
94
106
|
* Stomp::Connection and Stomp::Client accept a hash on their constructor
|
95
107
|
|
96
|
-
== 1.1
|
108
|
+
== 1.1 20090227
|
97
109
|
|
98
110
|
* Ruby 1.9 Support
|
99
111
|
* Add support for connect_headers, to control the CONNECT command.
|
@@ -101,7 +113,7 @@
|
|
101
113
|
* Better test coverage
|
102
114
|
* General code cleanup.
|
103
115
|
|
104
|
-
== 1.0.6
|
116
|
+
== 1.0.6 20080805
|
105
117
|
|
106
118
|
* Whitespace cleanup
|
107
119
|
* Refactored Rakefile and added stomp.gemspec for GitHub friendliness.
|
@@ -113,8 +125,33 @@
|
|
113
125
|
* Created initial RSpec specs which stub/mock objects and should not require a running
|
114
126
|
Stomp server instance.
|
115
127
|
|
116
|
-
== v1.0.5
|
128
|
+
== v1.0.5 20070201
|
129
|
+
|
130
|
+
* better url parsing
|
131
|
+
* git-svn-id: http://svn.codehaus.org/stomp/ruby/trunk@48 fd4e7336-3dff-0310-b68a-b6615a75f13b
|
132
|
+
|
133
|
+
== v1.0.4 20070115
|
134
|
+
|
135
|
+
* Allow URL style connections descriptors
|
136
|
+
* git-svn-id: http://svn.codehaus.org/stomp/ruby/trunk@44 fd4e7336-3dff-0310-b68a-b6615a75f13b
|
137
|
+
|
138
|
+
== v1.0.3 20070114
|
139
|
+
|
140
|
+
* Additional fixes for reliable by Andrew Kuklewicz
|
141
|
+
* git-svn-id: http://svn.codehaus.org/stomp/ruby/trunk@42 fd4e7336-3dff-0310-b68a-b6615a75f13b
|
142
|
+
|
143
|
+
== v1.0.2 20060922
|
144
|
+
|
145
|
+
* Moving ruby so we can tag it ;-)
|
146
|
+
* git-svn-id: http://svn.codehaus.org/stomp/ruby/trunk@37 fd4e7336-3dff-0310-b68a-b6615a75f13b
|
147
|
+
|
148
|
+
== v1.0.1 20051217
|
149
|
+
|
150
|
+
* Increment version
|
151
|
+
* git-svn-id: http://svn.codehaus.org/stomp/trunk/ruby@24 fd4e7336-3dff-0310-b68a-b6615a75f13b
|
152
|
+
|
153
|
+
== v1.0.0 20051015
|
117
154
|
|
118
|
-
|
155
|
+
* works in repl, getting messages in weird order or dupes in test, but unable to isolate so far =(
|
156
|
+
* git-svn-id: http://svn.codehaus.org/stomp/trunk/ruby@20 fd4e7336-3dff-0310-b68a-b6615a75f13b
|
119
157
|
|
120
|
-
git-svn-id: http://svn.codehaus.org/stomp/ruby/trunk@86 fd4e7336-3dff-0310-b68a-b6615a75f13b
|
data/README.rdoc
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
==README
|
2
2
|
|
3
|
-
* (https://github.com/
|
4
|
-
* (http://gitorious.org/projects/stomp/)
|
3
|
+
* (https://github.com/stompgem/stomp/)
|
5
4
|
|
6
5
|
===Overview
|
7
6
|
|
@@ -11,6 +10,7 @@ An implementation of the Stomp protocol for Ruby. See:
|
|
11
10
|
|
12
11
|
===New
|
13
12
|
|
13
|
+
* Gem version 1.2.3. Miscellaneous fixes, see changelog for details.
|
14
14
|
* Gem version 1.2.2. Performance and more SSL enhancements.
|
15
15
|
* Full support of SSL certificates is announced as of gem version 1.2.1.
|
16
16
|
* Support of Stomp protocol level 1.1 is announced as of gem version 1.2.0.
|
@@ -46,6 +46,7 @@ See the change log for details.
|
|
46
46
|
|
47
47
|
],
|
48
48
|
# These are the default parameters, don't need to be set
|
49
|
+
:reliable => true, # true for hash login
|
49
50
|
:initial_reconnect_delay => 0.01,
|
50
51
|
:max_reconnect_delay => 30.0,
|
51
52
|
:use_exponential_back_off => true,
|
@@ -72,8 +73,7 @@ Up until March 2009 the project was maintained and primarily developed by Brian
|
|
72
73
|
|
73
74
|
===Source Code and Project URLs
|
74
75
|
|
75
|
-
https://github.com/
|
76
|
-
http://gitorious.org/projects/stomp/
|
76
|
+
https://github.com/stompgem/stomp/
|
77
77
|
|
78
78
|
===Stomp Protocol Information :
|
79
79
|
|
@@ -83,12 +83,12 @@ Up until March 2009 the project was maintained and primarily developed by Brian
|
|
83
83
|
|
84
84
|
The following people have contributed to Stomp:
|
85
85
|
|
86
|
-
* Brian
|
86
|
+
* Brian McCallister
|
87
87
|
* Glenn Rempe <glenn@rempe.us>
|
88
88
|
* jstrachan
|
89
89
|
* Marius Mathiesen <marius.mathiesen@gmail.com>
|
90
90
|
* Johan S√∏rensen <johan@johansorensen.com>
|
91
|
-
* Thiago Morello <
|
91
|
+
* Thiago Morello <stompgem@gmail.com>
|
92
92
|
* Guy M. Allard
|
93
93
|
* kookster
|
94
94
|
* Tony Garnock-Jones <tonyg@lshift.net>
|
@@ -104,15 +104,6 @@ The following people have contributed to Stomp:
|
|
104
104
|
* R.I. Pienaar
|
105
105
|
* tworker
|
106
106
|
* James Pearson
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
In the next version of the gem, the dates in CHANGELOG.rdoc will be changed from:
|
111
|
-
|
112
|
-
* yyyy-dd-mm
|
113
|
-
|
114
|
-
to:
|
115
|
-
|
116
|
-
* ISO8601 format (yyyymmdd)
|
117
|
-
|
107
|
+
* Craig
|
108
|
+
* Tommy Bishop
|
118
109
|
|
data/Rakefile
CHANGED
@@ -33,7 +33,7 @@ begin
|
|
33
33
|
gem.description = %Q{Ruby client for the Stomp messaging protocol. Note that this gem is no longer supported on rubyforge.}
|
34
34
|
gem.email = ["brianm@apache.org", 'marius@stones.com', 'morellon@gmail.com',
|
35
35
|
'allard.guy.m@gmail.com' ]
|
36
|
-
gem.homepage = "https://github.com/
|
36
|
+
gem.homepage = "https://github.com/stompgem/stomp"
|
37
37
|
gem.authors = ["Brian McCallister", 'Marius Mathiesen', 'Thiago Morello',
|
38
38
|
'Guy M. Allard']
|
39
39
|
gem.add_development_dependency "rspec", '>= 2.3'
|
data/bin/catstomp
CHANGED
@@ -28,6 +28,25 @@ require 'stomp'
|
|
28
28
|
#
|
29
29
|
begin
|
30
30
|
|
31
|
+
if ARGV[0] == '-h' || ARGV[0] == '--help'
|
32
|
+
$stdout.puts
|
33
|
+
$stdout.puts 'Usage: catstomp DESTINATION'
|
34
|
+
$stdout.puts
|
35
|
+
$stdout.puts 'Publishes STDIN to the desired stomp destination'
|
36
|
+
$stdout.puts
|
37
|
+
$stdout.puts 'Example: ls | catstomp /topic/foo'
|
38
|
+
$stdout.puts
|
39
|
+
$stdout.puts 'Defaults:'
|
40
|
+
$stdout.puts "DESTINATION\t/topic/default"
|
41
|
+
$stdout.puts "STOMP_HOST\tlocalhost"
|
42
|
+
$stdout.puts "STOMP_PORT\t61613"
|
43
|
+
$stdout.puts "STOMP_USER"
|
44
|
+
$stdout.puts "STOMP_PASSWORD"
|
45
|
+
$stdout.puts
|
46
|
+
$stdout.puts 'You can override the stomp host, port, user, or password through environment variables'
|
47
|
+
exit 0
|
48
|
+
end
|
49
|
+
|
31
50
|
@port = 61613
|
32
51
|
@host = "localhost"
|
33
52
|
@user = ENV["STOMP_USER"];
|
data/bin/stompcat
CHANGED
@@ -28,6 +28,25 @@ require 'stomp'
|
|
28
28
|
#
|
29
29
|
begin
|
30
30
|
|
31
|
+
if ARGV[0] == '-h' || ARGV[0] == '--help'
|
32
|
+
$stdout.puts
|
33
|
+
$stdout.puts 'Usage: stompcat DESTINATION'
|
34
|
+
$stdout.puts
|
35
|
+
$stdout.puts 'Receives data from a stomp destination and outputs it to STDOUT'
|
36
|
+
$stdout.puts
|
37
|
+
$stdout.puts 'Example: stompcat /topic/foo'
|
38
|
+
$stdout.puts
|
39
|
+
$stdout.puts 'Defaults:'
|
40
|
+
$stdout.puts "DESTINATION\t/topic/default"
|
41
|
+
$stdout.puts "STOMP_HOST\tlocalhost"
|
42
|
+
$stdout.puts "STOMP_PORT\t61613"
|
43
|
+
$stdout.puts "STOMP_USER\t"
|
44
|
+
$stdout.puts "STOMP_PASSWORD\t"
|
45
|
+
$stdout.puts
|
46
|
+
$stdout.puts 'You can override the host, port, user, or password through environment variables'
|
47
|
+
exit 0
|
48
|
+
end
|
49
|
+
|
31
50
|
@port = 61613
|
32
51
|
@host = "localhost"
|
33
52
|
@user = ENV["STOMP_USER"];
|
data/examples/slogger.rb
CHANGED
@@ -175,7 +175,7 @@ class Slogger
|
|
175
175
|
def on_ssl_connectfail(parms)
|
176
176
|
begin
|
177
177
|
@log.debug "SSL Connect Fail Parms #{info(parms)}"
|
178
|
-
@log.debug "SSL Connect Fail
|
178
|
+
@log.debug "SSL Connect Fail Exception #{parms[:ssl_exception]}, #{parms[:ssl_exception].message}"
|
179
179
|
rescue
|
180
180
|
@log.debug "SSL Connect Fail oops"
|
181
181
|
end
|
data/examples/ssl_uc1.rb
CHANGED
@@ -1,19 +1,33 @@
|
|
1
1
|
#
|
2
|
-
# Reference: https://github.com/
|
2
|
+
# Reference: https://github.com/stompgem/stomp/wiki/extended-ssl-overview
|
3
3
|
#
|
4
4
|
require "rubygems"
|
5
5
|
require "stomp"
|
6
6
|
#
|
7
|
-
# SSL Use Case 1
|
7
|
+
# SSL Use Case 1 - server does *not* authenticate client, client does *not* authenticate server
|
8
8
|
#
|
9
|
+
# Subcase 1.A - Message broker configuration does *not* require client authentication
|
10
|
+
#
|
11
|
+
# - Expect connection success
|
12
|
+
# - Expect a verify result of 20 becuase the client did not authenticate the
|
13
|
+
# server's certificate.
|
14
|
+
#
|
15
|
+
# Subcase 1.B - Message broker configuration *does* require client authentication
|
16
|
+
#
|
17
|
+
# - Expect connection failure (broker must be sent a valid client certificate)
|
18
|
+
#
|
19
|
+
ssl_opts = Stomp::SSLParams.new
|
9
20
|
hash = { :hosts => [
|
10
|
-
{:login => 'guest', :passcode => 'guest', :host => 'localhost', :port => 61612, :ssl =>
|
11
|
-
]
|
21
|
+
{:login => 'guest', :passcode => 'guest', :host => 'localhost', :port => 61612, :ssl => ssl_opts},
|
22
|
+
],
|
23
|
+
:reliable => false, # YMMV, to test this in a sane manner
|
12
24
|
}
|
13
25
|
#
|
14
26
|
puts "Connect starts, SSL Use Case 1"
|
15
27
|
c = Stomp::Connection.new(hash)
|
16
28
|
puts "Connect completed"
|
29
|
+
puts "SSL Verify Result: #{ssl_opts.verify_result}"
|
30
|
+
# puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
|
17
31
|
#
|
18
32
|
c.disconnect
|
19
33
|
|
data/examples/ssl_uc1_ciphers.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
#
|
2
|
-
# Reference: https://github.com/
|
2
|
+
# Reference: https://github.com/stompgem/stomp/wiki/extended-ssl-overview
|
3
3
|
#
|
4
4
|
require "rubygems"
|
5
5
|
require "stomp"
|
6
6
|
#
|
7
7
|
# If you need your own ciphers list, this is how.
|
8
8
|
# Stomp's default list will work in many cases. If you need to use this, you
|
9
|
-
# will know it because SSL connect
|
9
|
+
# will know it because SSL connect will fail. In that case, determining
|
10
10
|
# _what_ should be in the list is your responsibility.
|
11
11
|
#
|
12
12
|
ciphers_list = [["DHE-RSA-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["DHE-DSS-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["AES256-SHA", "TLSv1/SSLv3", 256, 256], ["EDH-RSA-DES-CBC3-SHA", "TLSv1/SSLv3", 168, 168], ["EDH-DSS-DES-CBC3-SHA", "TLSv1/SSLv3", 168, 168], ["DES-CBC3-SHA", "TLSv1/SSLv3", 168, 168], ["DHE-RSA-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["DHE-DSS-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["AES128-SHA", "TLSv1/SSLv3", 128, 128], ["RC4-SHA", "TLSv1/SSLv3", 128, 128], ["RC4-MD5", "TLSv1/SSLv3", 128, 128], ["EDH-RSA-DES-CBC-SHA", "TLSv1/SSLv3", 56, 56], ["EDH-DSS-DES-CBC-SHA", "TLSv1/SSLv3", 56, 56],
|
@@ -25,6 +25,7 @@ hash = { :hosts => [
|
|
25
25
|
puts "Connect starts, SSL Use Case 1"
|
26
26
|
c = Stomp::Connection.new(hash)
|
27
27
|
puts "Connect completed"
|
28
|
+
puts "SSL Verify Result: #{ssl_opts.verify_result}"
|
28
29
|
#
|
29
30
|
c.disconnect
|
30
31
|
|
data/examples/ssl_uc2.rb
CHANGED
@@ -1,30 +1,36 @@
|
|
1
1
|
#
|
2
|
-
# Reference: https://github.com/
|
2
|
+
# Reference: https://github.com/stompgem/stomp/wiki/extended-ssl-overview
|
3
3
|
#
|
4
4
|
require "rubygems"
|
5
5
|
require "stomp"
|
6
6
|
#
|
7
|
-
# SSL Use Case 2
|
7
|
+
# SSL Use Case 2 - server does *not* authenticate client, client *does* authenticate server
|
8
8
|
#
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
# Subcase 2.A - Message broker configuration does *not* require client authentication
|
10
|
+
#
|
11
|
+
# - Expect connection success
|
12
|
+
# - Expect a verify result of 0 becuase the client did authenticate the
|
13
|
+
# server's certificate.
|
14
|
+
#
|
15
|
+
# Subcase 2.B - Message broker configuration *does* require client authentication
|
16
|
+
#
|
17
|
+
# - Expect connection failure (broker must be sent a valid client certificate)
|
18
|
+
#
|
19
|
+
ts_flist = []
|
20
|
+
ts_flist << "/home/gmallard/sslwork/twocas_tj/serverCA/ServerTJCA.crt"
|
21
|
+
ssl_opts = Stomp::SSLParams.new(:ts_files => ts_flist.join(","))
|
12
22
|
#
|
13
23
|
hash = { :hosts => [
|
14
24
|
{:login => 'guest', :passcode => 'guest', :host => 'localhost', :port => 61612, :ssl => ssl_opts},
|
15
|
-
]
|
25
|
+
],
|
26
|
+
:reliable => false, # YMMV, to test this in a sane manner
|
16
27
|
}
|
17
28
|
#
|
18
29
|
puts "Connect starts, SSL Use Case 2"
|
19
30
|
c = Stomp::Connection.new(hash)
|
20
31
|
puts "Connect completed"
|
21
|
-
#
|
22
|
-
# Expect a verify_result == 20
|
23
|
-
#
|
24
|
-
# This means: the client did not verify the peer's certificate, but the
|
25
|
-
# handshake succeeds, and the connection is allowed.
|
26
|
-
#
|
27
32
|
puts "SSL Verify Result: #{ssl_opts.verify_result}"
|
28
|
-
puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
|
33
|
+
# puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
|
29
34
|
c.disconnect
|
30
35
|
|
36
|
+
|
data/examples/ssl_uc2_ciphers.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
#
|
2
|
-
# Reference: https://github.com/
|
2
|
+
# Reference: https://github.com/stompgem/stomp/wiki/extended-ssl-overview
|
3
3
|
#
|
4
4
|
require "rubygems"
|
5
5
|
require "stomp"
|
6
6
|
#
|
7
7
|
# If you need your own ciphers list, this is how.
|
8
8
|
# Stomp's default list will work in many cases. If you need to use this, you
|
9
|
-
# will know it because SSL connect
|
9
|
+
# will know it because SSL connect will fail. In that case, determining
|
10
10
|
# _what_ should be in the list is your responsibility.
|
11
11
|
#
|
12
12
|
ciphers_list = [["DHE-RSA-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["DHE-DSS-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["AES256-SHA", "TLSv1/SSLv3", 256, 256], ["EDH-RSA-DES-CBC3-SHA", "TLSv1/SSLv3", 168, 168], ["EDH-DSS-DES-CBC3-SHA", "TLSv1/SSLv3", 168, 168], ["DES-CBC3-SHA", "TLSv1/SSLv3", 168, 168], ["DHE-RSA-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["DHE-DSS-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["AES128-SHA", "TLSv1/SSLv3", 128, 128], ["RC4-SHA", "TLSv1/SSLv3", 128, 128], ["RC4-MD5", "TLSv1/SSLv3", 128, 128], ["EDH-RSA-DES-CBC-SHA", "TLSv1/SSLv3", 56, 56], ["EDH-DSS-DES-CBC-SHA", "TLSv1/SSLv3", 56, 56],
|
@@ -26,13 +26,7 @@ hash = { :hosts => [
|
|
26
26
|
puts "Connect starts, SSL Use Case 2"
|
27
27
|
c = Stomp::Connection.new(hash)
|
28
28
|
puts "Connect completed"
|
29
|
-
#
|
30
|
-
# Expect a verify_result == 20
|
31
|
-
#
|
32
|
-
# This means: the client did not verify the peer's certificate, but the
|
33
|
-
# handshake succeeds, and the connection is allowed.
|
34
|
-
#
|
35
29
|
puts "SSL Verify Result: #{ssl_opts.verify_result}"
|
36
|
-
puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
|
30
|
+
# puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
|
37
31
|
c.disconnect
|
38
32
|
|
data/examples/ssl_uc3.rb
CHANGED
@@ -1,29 +1,37 @@
|
|
1
1
|
#
|
2
|
-
# Reference: https://github.com/
|
2
|
+
# Reference: https://github.com/stompgem/stomp/wiki/extended-ssl-overview
|
3
3
|
#
|
4
4
|
require "rubygems"
|
5
5
|
require "stomp"
|
6
6
|
#
|
7
|
-
# SSL Use Case 3
|
7
|
+
# SSL Use Case 3 - server *does* authenticate client, client does *not* authenticate server
|
8
8
|
#
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
# Subcase 3.A - Message broker configuration does *not* require client authentication
|
10
|
+
#
|
11
|
+
# - Expect connection success
|
12
|
+
# - Expect a verify result of 20 becuase the client did not authenticate the
|
13
|
+
# server's certificate.
|
14
|
+
#
|
15
|
+
# Subcase 3.B - Message broker configuration *does* require client authentication
|
16
|
+
#
|
17
|
+
# - Expect connection success if the server can authenticate the client certificate
|
18
|
+
# - Expect a verify result of 20 because the client did not authenticate the
|
19
|
+
# server's certificate.
|
20
|
+
#
|
21
|
+
ssl_opts = Stomp::SSLParams.new(:key_file => "/home/gmallard/sslwork/twocas_tj/clientCA/ClientTJ.key",
|
22
|
+
:cert_file => "/home/gmallard/sslwork/twocas_tj/clientCA/ClientTJ.crt")
|
23
|
+
|
12
24
|
#
|
13
25
|
hash = { :hosts => [
|
14
26
|
{:login => 'guest', :passcode => 'guest', :host => 'localhost', :port => 61612, :ssl => ssl_opts},
|
15
|
-
]
|
27
|
+
],
|
28
|
+
:reliable => false, # YMMV, to test this in a sane manner
|
16
29
|
}
|
17
30
|
#
|
18
31
|
puts "Connect starts, SSL Use Case 3"
|
19
32
|
c = Stomp::Connection.new(hash)
|
20
33
|
puts "Connect completed"
|
21
|
-
#
|
22
|
-
# Expect a verify_result == 0
|
23
|
-
#
|
24
|
-
# This means: the client successfully verified the peer's certificate.
|
25
|
-
#
|
26
34
|
puts "SSL Verify Result: #{ssl_opts.verify_result}"
|
27
|
-
puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
|
35
|
+
# puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
|
28
36
|
c.disconnect
|
29
37
|
|
data/examples/ssl_uc3_ciphers.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
#
|
2
|
-
# Reference: https://github.com/
|
2
|
+
# Reference: https://github.com/stompgem/stomp/wiki/extended-ssl-overview
|
3
3
|
#
|
4
4
|
require "rubygems"
|
5
5
|
require "stomp"
|
6
6
|
#
|
7
7
|
# If you need your own ciphers list, this is how.
|
8
8
|
# Stomp's default list will work in many cases. If you need to use this, you
|
9
|
-
# will know it because SSL connect
|
9
|
+
# will know it because SSL connect will fail. In that case, determining
|
10
10
|
# _what_ should be in the list is your responsibility.
|
11
11
|
#
|
12
12
|
ciphers_list = [["DHE-RSA-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["DHE-DSS-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["AES256-SHA", "TLSv1/SSLv3", 256, 256], ["EDH-RSA-DES-CBC3-SHA", "TLSv1/SSLv3", 168, 168], ["EDH-DSS-DES-CBC3-SHA", "TLSv1/SSLv3", 168, 168], ["DES-CBC3-SHA", "TLSv1/SSLv3", 168, 168], ["DHE-RSA-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["DHE-DSS-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["AES128-SHA", "TLSv1/SSLv3", 128, 128], ["RC4-SHA", "TLSv1/SSLv3", 128, 128], ["RC4-MD5", "TLSv1/SSLv3", 128, 128], ["EDH-RSA-DES-CBC-SHA", "TLSv1/SSLv3", 56, 56], ["EDH-DSS-DES-CBC-SHA", "TLSv1/SSLv3", 56, 56],
|
@@ -26,12 +26,7 @@ hash = { :hosts => [
|
|
26
26
|
puts "Connect starts, SSL Use Case 3"
|
27
27
|
c = Stomp::Connection.new(hash)
|
28
28
|
puts "Connect completed"
|
29
|
-
#
|
30
|
-
# Expect a verify_result == 0
|
31
|
-
#
|
32
|
-
# This means: the client successfully verified the peer's certificate.
|
33
|
-
#
|
34
29
|
puts "SSL Verify Result: #{ssl_opts.verify_result}"
|
35
|
-
puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
|
30
|
+
# puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
|
36
31
|
c.disconnect
|
37
32
|
|
data/examples/ssl_uc4.rb
CHANGED
@@ -1,10 +1,22 @@
|
|
1
1
|
#
|
2
|
-
# Reference: https://github.com/
|
2
|
+
# Reference: https://github.com/stompgem/stomp/wiki/extended-ssl-overview
|
3
3
|
#
|
4
4
|
require "rubygems"
|
5
5
|
require "stomp"
|
6
6
|
#
|
7
|
-
# SSL Use Case 4
|
7
|
+
# SSL Use Case 4 - server *does* authenticate client, client *does* authenticate server
|
8
|
+
#
|
9
|
+
# Subcase 4.A - Message broker configuration does *not* require client authentication
|
10
|
+
#
|
11
|
+
# - Expect connection success
|
12
|
+
# - Expect a verify result of 0 becuase the client did authenticate the
|
13
|
+
# server's certificate.
|
14
|
+
#
|
15
|
+
# Subcase 4.B - Message broker configuration *does* require client authentication
|
16
|
+
#
|
17
|
+
# - Expect connection success if the server can authenticate the client certificate
|
18
|
+
# - Expect a verify result of 0 because the client did authenticate the
|
19
|
+
# server's certificate.
|
8
20
|
#
|
9
21
|
ssl_opts = Stomp::SSLParams.new(:key_file => "/home/gmallard/sslwork/twocas_tj/clientCA/ClientTJ.key",
|
10
22
|
:cert_file => "/home/gmallard/sslwork/twocas_tj/clientCA/ClientTJ.crt",
|
@@ -12,18 +24,14 @@ ssl_opts = Stomp::SSLParams.new(:key_file => "/home/gmallard/sslwork/twocas_tj/c
|
|
12
24
|
#
|
13
25
|
hash = { :hosts => [
|
14
26
|
{:login => 'guest', :passcode => 'guest', :host => 'localhost', :port => 61612, :ssl => ssl_opts},
|
15
|
-
]
|
27
|
+
],
|
28
|
+
:reliable => false, # YMMV, to test this in a sane manner
|
16
29
|
}
|
17
30
|
#
|
18
31
|
puts "Connect starts, SSL Use Case 4"
|
19
32
|
c = Stomp::Connection.new(hash)
|
20
33
|
puts "Connect completed"
|
21
|
-
#
|
22
|
-
# Expect a verify_result == 0
|
23
|
-
#
|
24
|
-
# This means: the client successfully verified the peer's certificate.
|
25
|
-
#
|
26
34
|
puts "SSL Verify Result: #{ssl_opts.verify_result}"
|
27
|
-
puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
|
35
|
+
# puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
|
28
36
|
c.disconnect
|
29
37
|
|
data/examples/ssl_uc4_ciphers.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
#
|
2
|
-
# Reference: https://github.com/
|
2
|
+
# Reference: https://github.com/stompgem/stomp/wiki/extended-ssl-overview
|
3
3
|
#
|
4
4
|
require "rubygems"
|
5
5
|
require "stomp"
|
6
6
|
#
|
7
7
|
# If you need your own ciphers list, this is how.
|
8
8
|
# Stomp's default list will work in many cases. If you need to use this, you
|
9
|
-
# will know it because SSL connect
|
9
|
+
# will know it because SSL connect will fail. In that case, determining
|
10
10
|
# _what_ should be in the list is your responsibility.
|
11
11
|
#
|
12
12
|
ciphers_list = [["DHE-RSA-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["DHE-DSS-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["AES256-SHA", "TLSv1/SSLv3", 256, 256], ["EDH-RSA-DES-CBC3-SHA", "TLSv1/SSLv3", 168, 168], ["EDH-DSS-DES-CBC3-SHA", "TLSv1/SSLv3", 168, 168], ["DES-CBC3-SHA", "TLSv1/SSLv3", 168, 168], ["DHE-RSA-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["DHE-DSS-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["AES128-SHA", "TLSv1/SSLv3", 128, 128], ["RC4-SHA", "TLSv1/SSLv3", 128, 128], ["RC4-MD5", "TLSv1/SSLv3", 128, 128], ["EDH-RSA-DES-CBC-SHA", "TLSv1/SSLv3", 56, 56], ["EDH-DSS-DES-CBC-SHA", "TLSv1/SSLv3", 56, 56],
|
@@ -27,12 +27,7 @@ hash = { :hosts => [
|
|
27
27
|
puts "Connect starts, SSL Use Case 4"
|
28
28
|
c = Stomp::Connection.new(hash)
|
29
29
|
puts "Connect completed"
|
30
|
-
#
|
31
|
-
# Expect a verify_result == 0
|
32
|
-
#
|
33
|
-
# This means: the client successfully verified the peer's certificate.
|
34
|
-
#
|
35
30
|
puts "SSL Verify Result: #{ssl_opts.verify_result}"
|
36
|
-
puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
|
31
|
+
# puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
|
37
32
|
c.disconnect
|
38
33
|
|
@@ -1,13 +1,14 @@
|
|
1
1
|
#
|
2
|
-
# Reference: https://github.com/
|
2
|
+
# Reference: https://github.com/stompgem/stomp/wiki/extended-ssl-overview
|
3
3
|
#
|
4
4
|
require "rubygems"
|
5
5
|
require "stomp"
|
6
|
-
|
7
6
|
#
|
8
|
-
# If you use SSLParams, and need the _default_ Ruby ciphers, this is how.
|
7
|
+
# If you use SSLParams, and need the _default_ Ruby ciphers, this is how.
|
8
|
+
#
|
9
|
+
# NOTE: JRuby users may find that this is a *required* action. YMMV.
|
9
10
|
#
|
10
|
-
ssl_opts = Stomp::SSLParams.new(:use_ruby_ciphers => true)
|
11
|
+
ssl_opts = Stomp::SSLParams.new(:use_ruby_ciphers => true) # Plus other parameters as needed
|
11
12
|
#
|
12
13
|
# SSL Use Case: Using default Stomp ciphers
|
13
14
|
#
|
@@ -17,7 +18,7 @@ hash = { :hosts => [
|
|
17
18
|
]
|
18
19
|
}
|
19
20
|
#
|
20
|
-
puts "Connect starts, SSL Use
|
21
|
+
puts "Connect starts, SSL , Use Default Ruby Ciphers"
|
21
22
|
c = Stomp::Connection.new(hash)
|
22
23
|
puts "Connect completed"
|
23
24
|
#
|
data/lib/stomp/client.rb
CHANGED
@@ -265,6 +265,12 @@ module Stomp
|
|
265
265
|
@connection.uuid()
|
266
266
|
end
|
267
267
|
|
268
|
+
# Poll for asynchronous messages issued by broker.
|
269
|
+
# Return nil of no message available, else the message
|
270
|
+
def poll
|
271
|
+
@connection.poll
|
272
|
+
end
|
273
|
+
|
268
274
|
private
|
269
275
|
# Set a subscription id in the headers hash if one does not already exist.
|
270
276
|
# For simplicities sake, all subscriptions have a subscription ID.
|
data/lib/stomp/connection.rb
CHANGED
@@ -170,7 +170,6 @@ module Stomp
|
|
170
170
|
|
171
171
|
def refine_params(params)
|
172
172
|
params = params.uncamelize_and_symbolize_keys
|
173
|
-
|
174
173
|
default_params = {
|
175
174
|
:connect_headers => {},
|
176
175
|
:reliable => true,
|
@@ -184,11 +183,15 @@ module Stomp
|
|
184
183
|
:backup => false,
|
185
184
|
:connect_timeout => 0,
|
186
185
|
# Parse Timeout
|
187
|
-
:parse_timeout => 5
|
186
|
+
:parse_timeout => 5,
|
187
|
+
:dmh => false,
|
188
188
|
}
|
189
189
|
|
190
|
-
default_params.merge(params)
|
191
|
-
|
190
|
+
res_params = default_params.merge(params)
|
191
|
+
if res_params[:dmh]
|
192
|
+
res_params = _expand_hosts(res_params)
|
193
|
+
end
|
194
|
+
return res_params
|
192
195
|
end
|
193
196
|
|
194
197
|
def change_host
|
@@ -487,6 +490,30 @@ module Stomp
|
|
487
490
|
|
488
491
|
private
|
489
492
|
|
493
|
+
def _expand_hosts(hash)
|
494
|
+
new_hash = hash.clone
|
495
|
+
new_hash[:hosts_cloned] = hash[:hosts].clone
|
496
|
+
new_hash[:hosts] = []
|
497
|
+
#
|
498
|
+
hash[:hosts].each do |host_parms|
|
499
|
+
ai = Socket.getaddrinfo(host_parms[:host], nil, nil, Socket::SOCK_STREAM)
|
500
|
+
next if ai.nil? || ai.size == 0
|
501
|
+
info6 = ai.detect {|info| info[4] == Socket::AF_INET6}
|
502
|
+
info4 = ai.detect {|info| info[4] == Socket::AF_INET}
|
503
|
+
if info6
|
504
|
+
new_hostp = host_parms.clone
|
505
|
+
new_hostp[:host] = info6[3]
|
506
|
+
new_hash[:hosts] << new_hostp
|
507
|
+
end
|
508
|
+
if info4
|
509
|
+
new_hostp = host_parms.clone
|
510
|
+
new_hostp[:host] = info4[3]
|
511
|
+
new_hash[:hosts] << new_hostp
|
512
|
+
end
|
513
|
+
end
|
514
|
+
return new_hash
|
515
|
+
end
|
516
|
+
|
490
517
|
def _receive( read_socket )
|
491
518
|
@read_semaphore.synchronize do
|
492
519
|
line = read_socket.gets
|
@@ -596,8 +623,8 @@ module Stomp
|
|
596
623
|
# and ActiveMQ will interpret the message as a TextMessage.
|
597
624
|
# For more information refer to http://juretta.com/log/2009/05/24/activemq-jms-stomp/
|
598
625
|
# Lets send this header in the message, so it can maintain state when using unreceive
|
599
|
-
headers['content-length'] = "#{body_length_bytes}" unless headers[:suppress_content_length]
|
600
|
-
headers['content-type'] = "text/plain; charset=UTF-8" unless headers['content-type']
|
626
|
+
headers[:'content-length'] = "#{body_length_bytes}" unless headers[:suppress_content_length]
|
627
|
+
headers[:'content-type'] = "text/plain; charset=UTF-8" unless headers[:'content-type']
|
601
628
|
used_socket.puts command
|
602
629
|
headers.each do |k,v|
|
603
630
|
if v.is_a?(Array)
|
@@ -684,10 +711,10 @@ module Stomp
|
|
684
711
|
if @ssl.cert_file # Any check will do here
|
685
712
|
raise Stomp::Error::SSLNoCertFileError if !File::exists?(@ssl.cert_file)
|
686
713
|
raise Stomp::Error::SSLUnreadableCertFileError if !File::readable?(@ssl.cert_file)
|
687
|
-
ctx.cert = OpenSSL::X509::Certificate.new(File.
|
714
|
+
ctx.cert = OpenSSL::X509::Certificate.new(File.read(@ssl.cert_file))
|
688
715
|
raise Stomp::Error::SSLNoKeyFileError if !File::exists?(@ssl.key_file)
|
689
716
|
raise Stomp::Error::SSLUnreadableKeyFileError if !File::readable?(@ssl.key_file)
|
690
|
-
ctx.key = OpenSSL::PKey::RSA.new(File.
|
717
|
+
ctx.key = OpenSSL::PKey::RSA.new(File.read(@ssl.key_file), @ssl.key_password)
|
691
718
|
end
|
692
719
|
|
693
720
|
# Cipher list
|
@@ -815,10 +842,16 @@ module Stomp
|
|
815
842
|
def _post_connect
|
816
843
|
return unless (@connect_headers[:"accept-version"] && @connect_headers[:host])
|
817
844
|
return if @connection_frame.command == Stomp::CMD_ERROR
|
845
|
+
# We are CONNECTed
|
818
846
|
cfh = @connection_frame.headers.symbolize_keys
|
819
847
|
@protocol = cfh[:version]
|
820
|
-
|
821
|
-
|
848
|
+
if @protocol
|
849
|
+
# Should not happen, but check anyway
|
850
|
+
raise Stomp::Error::UnsupportedProtocolError unless Stomp::SUPPORTED.index(@protocol)
|
851
|
+
else # CONNECTed to a 1.0 server that does not return *any* 1.1 type headers
|
852
|
+
@protocol = Stomp::SPL_10 # reset
|
853
|
+
return
|
854
|
+
end
|
822
855
|
# Heartbeats
|
823
856
|
return unless @connect_headers[:"heart-beat"]
|
824
857
|
_init_heartbeats()
|
data/lib/stomp/message.rb
CHANGED
@@ -41,7 +41,7 @@ module Stomp
|
|
41
41
|
end
|
42
42
|
self.command = work_command
|
43
43
|
work_headers.split("\n").map do |value|
|
44
|
-
parsed_value = value.match /^([\w|-]*):(.*)$/
|
44
|
+
parsed_value = value.match /^([\r|\w|-]*):(.*)$/
|
45
45
|
raise Stomp::Error::InvalidFormat, 'parsed header value' unless parsed_value
|
46
46
|
#
|
47
47
|
pk = parsed_value[1]
|
data/lib/stomp/sslparams.rb
CHANGED
@@ -14,6 +14,8 @@ module Stomp
|
|
14
14
|
attr_accessor :cert_file
|
15
15
|
# The client private key file.
|
16
16
|
attr_accessor :key_file
|
17
|
+
# The client private key password.
|
18
|
+
attr_accessor :key_password
|
17
19
|
# SSL Connect Verify Result. The result of the handshake.
|
18
20
|
attr_accessor :verify_result
|
19
21
|
# The certificate of the connection peer (the server), received during
|
@@ -38,6 +40,7 @@ module Stomp
|
|
38
40
|
# Client authentication parameters
|
39
41
|
@cert_file = opts[:cert_file] # Client cert
|
40
42
|
@key_file = opts[:key_file] # Client key
|
43
|
+
@key_password = opts[:key_password] # Client key password
|
41
44
|
#
|
42
45
|
raise Stomp::Error::SSLClientParamsError if @cert_file.nil? && !@key_file.nil?
|
43
46
|
raise Stomp::Error::SSLClientParamsError if !@cert_file.nil? && @key_file.nil?
|
data/lib/stomp/version.rb
CHANGED
data/spec/connection_spec.rb
CHANGED
@@ -20,7 +20,8 @@ describe Stomp::Connection do
|
|
20
20
|
:backup => false,
|
21
21
|
:connect_timeout => 0,
|
22
22
|
:parse_timeout => 5,
|
23
|
-
:connect_headers => {}
|
23
|
+
:connect_headers => {},
|
24
|
+
:dmh => false,
|
24
25
|
}
|
25
26
|
|
26
27
|
#POG:
|
@@ -298,7 +299,8 @@ describe Stomp::Connection do
|
|
298
299
|
:backup => false,
|
299
300
|
:connect_timeout => 0,
|
300
301
|
:parse_timeout => 5,
|
301
|
-
:connect_headers => {}
|
302
|
+
:connect_headers => {},
|
303
|
+
:dmh => false,
|
302
304
|
}
|
303
305
|
|
304
306
|
used_hash = {
|
@@ -330,7 +332,8 @@ describe Stomp::Connection do
|
|
330
332
|
:parse_timeout => 20,
|
331
333
|
:connect_headers => {:lerolero => "ronaldo"},
|
332
334
|
:dead_letter_queue => "queue/Error",
|
333
|
-
:max_redeliveries => 10
|
335
|
+
:max_redeliveries => 10,
|
336
|
+
:dmh => false,
|
334
337
|
}
|
335
338
|
|
336
339
|
@connection = Stomp::Connection.new(used_hash)
|
data/stomp.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{stomp}
|
8
|
-
s.version = "1.2.
|
8
|
+
s.version = "1.2.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Brian McCallister", "Marius Mathiesen", "Thiago Morello", "Guy M. Allard"]
|
12
|
-
s.date = %q{2012-
|
12
|
+
s.date = %q{2012-06-16}
|
13
13
|
s.description = %q{Ruby client for the Stomp messaging protocol. Note that this gem is no longer supported on rubyforge.}
|
14
14
|
s.email = ["brianm@apache.org", "marius@stones.com", "morellon@gmail.com", "allard.guy.m@gmail.com"]
|
15
15
|
s.executables = ["catstomp", "stompcat"]
|
@@ -75,7 +75,7 @@ Gem::Specification.new do |s|
|
|
75
75
|
"test/test_ssl.rb",
|
76
76
|
"test/tlogger.rb"
|
77
77
|
]
|
78
|
-
s.homepage = %q{https://github.com/
|
78
|
+
s.homepage = %q{https://github.com/stompgem/stomp}
|
79
79
|
s.require_paths = ["lib"]
|
80
80
|
s.rubygems_version = %q{1.3.7}
|
81
81
|
s.summary = %q{Ruby client for the Stomp messaging protocol}
|
data/test/test_client.rb
CHANGED
@@ -18,6 +18,12 @@ class TestClient < Test::Unit::TestCase
|
|
18
18
|
@client.close if @client.open? # allow tests to close
|
19
19
|
end
|
20
20
|
|
21
|
+
def test_poll_async
|
22
|
+
# If the test 'hangs' here, Connection#poll is broken.
|
23
|
+
m = @client.poll
|
24
|
+
assert m.nil?
|
25
|
+
end
|
26
|
+
|
21
27
|
def test_ack_api_works
|
22
28
|
@client.publish make_destination, message_text, {:suppress_content_length => true}
|
23
29
|
|
data/test/test_connection.rb
CHANGED
@@ -384,5 +384,35 @@ class TestConnection < Test::Unit::TestCase
|
|
384
384
|
end
|
385
385
|
end
|
386
386
|
|
387
|
+
# Test to illustrate Issue #44. Prior to a fix for #44, these tests would
|
388
|
+
# fail only when connecting to a pure STOMP 1.0 server that does not
|
389
|
+
# return a 'version' header at all.
|
390
|
+
def test_conn10_simple
|
391
|
+
@conn.disconnect
|
392
|
+
#
|
393
|
+
hash = { :hosts => [
|
394
|
+
{:login => user, :passcode => passcode, :host => host, :port => port, :ssl => false},
|
395
|
+
],
|
396
|
+
:connect_headers => {"accept-version" => "1.0", "host" => host},
|
397
|
+
:reliable => false,
|
398
|
+
}
|
399
|
+
c = nil
|
400
|
+
assert_nothing_raised {
|
401
|
+
c = Stomp::Connection.new(hash)
|
402
|
+
}
|
403
|
+
c.disconnect if c
|
404
|
+
#
|
405
|
+
hash = { :hosts => [
|
406
|
+
{:login => user, :passcode => passcode, :host => host, :port => port, :ssl => false},
|
407
|
+
],
|
408
|
+
:connect_headers => {"accept-version" => "3.14159,1.0,12.0", "host" => host},
|
409
|
+
:reliable => false,
|
410
|
+
}
|
411
|
+
c = nil
|
412
|
+
assert_nothing_raised {
|
413
|
+
c = Stomp::Connection.new(hash)
|
414
|
+
}
|
415
|
+
c.disconnect if c
|
416
|
+
end
|
387
417
|
end
|
388
418
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stomp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 1.2.
|
9
|
+
- 3
|
10
|
+
version: 1.2.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Brian McCallister
|
@@ -18,7 +18,7 @@ autorequire:
|
|
18
18
|
bindir: bin
|
19
19
|
cert_chain: []
|
20
20
|
|
21
|
-
date: 2012-
|
21
|
+
date: 2012-06-16 00:00:00 -04:00
|
22
22
|
default_executable:
|
23
23
|
dependencies:
|
24
24
|
- !ruby/object:Gem::Dependency
|
@@ -108,7 +108,7 @@ files:
|
|
108
108
|
- test/test_ssl.rb
|
109
109
|
- test/tlogger.rb
|
110
110
|
has_rdoc: true
|
111
|
-
homepage: https://github.com/
|
111
|
+
homepage: https://github.com/stompgem/stomp
|
112
112
|
licenses: []
|
113
113
|
|
114
114
|
post_install_message:
|