mad-p-xmpp4r 0.6.1 → 0.6.2

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/CHANGELOG CHANGED
@@ -1,3 +1,9 @@
1
+ mad-p-xmpp4r 0.6.2 (26/02/2013)
2
+ ===============================
3
+ * Merge pull request #1 from Strech/patch-1
4
+ * Non-bosh connection flushes correctly
5
+ * Elaborated debug messages in HTTPBinding::Client
6
+
1
7
  mad-p-xmpp4r 0.6.1 (21/02/2013)
2
8
  ===============================
3
9
  * Modified to work with BOSH with HTTPBinding::Client
data/lib/xmpp4r/client.rb CHANGED
@@ -253,7 +253,7 @@ module Jabber
253
253
  authset = Iq.new_authset(@jid, password)
254
254
  end
255
255
  send_with_id(authset)
256
- $defout.flush
256
+ $>.flush
257
257
 
258
258
  true
259
259
  end
@@ -139,7 +139,7 @@ module Jabber
139
139
  end
140
140
  req_body.attributes['secure'] = 'true'
141
141
  req_body.attributes['xmlns'] = 'http://jabber.org/protocol/httpbind'
142
- res_body = post(req_body)
142
+ res_body = post(req_body, "sid=new rid=#{@http_rid}")
143
143
  unless res_body.name == 'body'
144
144
  raise 'Response body is no <body/> element'
145
145
  end
@@ -192,7 +192,7 @@ module Jabber
192
192
  @pending_requests += 1
193
193
  @last_send = Time.now
194
194
  }
195
- res_body = post(req_body)
195
+ res_body = post(req_body, "terminate sid=#{@http_sid} rid=#{@http_rid}")
196
196
  sleep(3)
197
197
  Jabber::debuglog("Connection closed")
198
198
  end
@@ -231,13 +231,13 @@ module Jabber
231
231
 
232
232
  ##
233
233
  # Do a POST request
234
- def post(body)
234
+ def post(body, debug_info)
235
235
  body = body.to_s
236
236
  request = Net::HTTP::Post.new(@uri.path)
237
237
  request.content_length = body.size
238
238
  request.body = body
239
239
  request['Content-Type'] = @http_content_type
240
- Jabber::debuglog("HTTP REQUEST (#{@pending_requests}/#{@http_requests}):\n#{request.body}")
240
+ Jabber::debuglog("HTTP REQUEST (#{@pending_requests}/#{@http_requests}) #{debug_info}:\n#{request.body}")
241
241
 
242
242
  net_http_args = [@uri.host, @uri.port]
243
243
  unless @proxy_args.empty?
@@ -256,7 +256,7 @@ module Jabber
256
256
  response = http.start { |http|
257
257
  http.request(request)
258
258
  }
259
- Jabber::debuglog("HTTP RESPONSE (#{@pending_requests}/#{@http_requests}): #{response.class}\n#{response.body}")
259
+ Jabber::debuglog("HTTP RESPONSE (#{@pending_requests}/#{@http_requests}) #{debug_info}: #{response.class}\n#{response.body}")
260
260
 
261
261
  unless response.kind_of? Net::HTTPSuccess
262
262
  # Unfortunately, HTTPResponses aren't exceptions
@@ -286,6 +286,7 @@ module Jabber
286
286
  def post_data(data, restart = false)
287
287
  req_body = nil
288
288
  current_rid = nil
289
+ debug_info = ''
289
290
 
290
291
  begin
291
292
  begin
@@ -306,12 +307,13 @@ module Jabber
306
307
  req_body += data unless restart
307
308
  req_body += "</body>"
308
309
  current_rid = @http_rid
310
+ debug_info = "sid=#{@http_sid} rid=#{current_rid}"
309
311
 
310
312
  @pending_requests += 1
311
313
  @last_send = Time.now
312
314
  }
313
315
 
314
- res_body = post(req_body)
316
+ res_body = post(req_body, debug_info)
315
317
 
316
318
  ensure
317
319
  @lock.synchronize {
@@ -329,18 +331,19 @@ module Jabber
329
331
  close; @exception_block.call(e, self, :parser)
330
332
  end
331
333
  else
332
- Jabber::debuglog "Exception caught when parsing HTTP response!"
334
+ Jabber::debuglog "Exception caught when parsing HTTP response! (#{debug_info})"
333
335
  close
334
336
  raise
335
337
  end
336
338
 
337
339
  rescue StandardError => e
338
- Jabber::debuglog("POST error (will retry): #{e.class}: #{e}")
340
+ Jabber::debuglog("POST error (will retry) #{debug_info}: #{e.class}: #{e}, #{e.backtrace}")
339
341
  receive_elements_with_rid(current_rid, [])
340
342
  # It's not good to resend on *any* exception,
341
343
  # but there are too many cases (Timeout, 404, 502)
342
344
  # where resending is appropriate
343
345
  # TODO: recognize these conditions and act appropriate
346
+ # FIXME: resending the same data with a new rid is wrong. should resend with the same rid
344
347
  send_data(data)
345
348
  end
346
349
  end
data/lib/xmpp4r/xmpp4r.rb CHANGED
@@ -8,7 +8,7 @@ module Jabber
8
8
  # XMPP4R Version number. This is the ONLY place where the version number
9
9
  # should be specified. This constant is used to determine the version of
10
10
  # package tarballs and generated gems.
11
- XMPP4R_VERSION = '0.6.1'
11
+ XMPP4R_VERSION = '0.6.2'
12
12
  end
13
13
 
14
14
  require 'xmpp4r/client'
data/mad-p-xmpp4r.gemspec CHANGED
@@ -245,5 +245,5 @@ Gem::Specification.new do |s|
245
245
  s.rubygems_version = "1.8.24"
246
246
  s.specification_version = 3
247
247
  s.summary = "This is a fork from XMPP4R (https://github.com/ln/xmpp4r), fixing BOSH"
248
- s.version = "0.6.1"
248
+ s.version = "0.6.2"
249
249
  end
data/test/ts_xmpp4r.rb CHANGED
@@ -13,7 +13,16 @@ require 'find'
13
13
 
14
14
  # List files' basenames, not full path!
15
15
  # EXCLUDED_FILES = [ 'tc_muc_simplemucclient.rb' ]
16
- EXCLUDED_FILES = ['tc_disconnect_cleanup.rb', './pubsub/tc_helper.rb', './muc/tc_muc_mucclient.rb', './reliable/tc_reliable_connection.rb', './reliable/tc_disconnect_exception.rb', './reliable/tc_listener_mocked_test.rb', './reliable/tc_reliable_connection.rb']
16
+ EXCLUDED_FILES = %w[
17
+ tc_disconnect_cleanup.rb
18
+ ./pubsub/tc_helper.rb
19
+ ./muc/tc_muc_mucclient.rb
20
+ ./reliable/tc_reliable_connection.rb
21
+ ./reliable/tc_disconnect_exception.rb
22
+ ./reliable/tc_listener_mocked_test.rb
23
+ ./reliable/tc_reliable_connection.rb
24
+ ./bytestreams/tc_socks5bytestreams.rb
25
+ ].map {|f| f.gsub(%r[^\.], File.dirname(__FILE__)) }
17
26
 
18
27
  tc_files = []
19
28
  tc_subdirs = []
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mad-p-xmpp4r
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2013-02-21 00:00:00.000000000 Z
15
+ date: 2013-02-26 00:00:00.000000000 Z
16
16
  dependencies: []
17
17
  description: This is a fork from XMPP4R (https://github.com/ln/xmpp4r), fixing BOSH
18
18
  email: kaoru.maeda@gmail.com