remailer 0.4.10 → 0.4.11
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/remailer/connection.rb +28 -11
- data/lib/remailer/connection/socks5_interpreter.rb +2 -6
- data/remailer.gemspec +4 -4
- metadata +5 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.11
|
data/lib/remailer/connection.rb
CHANGED
@@ -98,7 +98,7 @@ class Remailer::Connection < EventMachine::Connection
|
|
98
98
|
end
|
99
99
|
|
100
100
|
# Handles callbacks driven by exceptions before an instance could be created.
|
101
|
-
def self.report_exception(e)
|
101
|
+
def self.report_exception(e, options)
|
102
102
|
case (options[:connect])
|
103
103
|
when Proc
|
104
104
|
options[:connect].call(false, e.to_s)
|
@@ -159,6 +159,7 @@ class Remailer::Connection < EventMachine::Connection
|
|
159
159
|
reset_timeout!
|
160
160
|
|
161
161
|
if (using_proxy?)
|
162
|
+
@connecting_to_proxy = true
|
162
163
|
use_socks5_interpreter!
|
163
164
|
else
|
164
165
|
use_smtp_interpreter!
|
@@ -266,28 +267,41 @@ class Remailer::Connection < EventMachine::Connection
|
|
266
267
|
@timeout = DEFAULT_TIMEOUT if (@timeout <= 0)
|
267
268
|
end
|
268
269
|
|
270
|
+
def proxy_connection_initiated
|
271
|
+
@connecting_to_proxy = false
|
272
|
+
end
|
273
|
+
|
269
274
|
# This implements the EventMachine::Connection#completed method by
|
270
275
|
# flagging the connection as estasblished.
|
271
276
|
def connection_completed
|
272
|
-
|
277
|
+
reset_timeout!
|
273
278
|
end
|
274
279
|
|
275
280
|
# This implements the EventMachine::Connection#unbind method to capture
|
276
281
|
# a connection closed event.
|
277
282
|
def unbind
|
278
283
|
return if (@unbound)
|
279
|
-
|
280
|
-
@connected = false
|
281
|
-
@unbound = true
|
282
|
-
@interpreter = nil
|
283
284
|
|
285
|
+
@unbound = true
|
286
|
+
|
284
287
|
if (@active_message)
|
288
|
+
debug_notification(:disconnect, "Disconnected by remote before transaction could be completed.")
|
289
|
+
|
285
290
|
if (callback = @active_message[:callback])
|
286
291
|
callback.call(nil)
|
292
|
+
|
287
293
|
@active_message = nil
|
288
294
|
end
|
295
|
+
elsif (@closed)
|
296
|
+
debug_notification(:disconnect, "Disconnected from remote.")
|
297
|
+
else
|
298
|
+
debug_notification(:disconnect, "Disconnected by remote while connection was idle.")
|
289
299
|
end
|
290
|
-
|
300
|
+
|
301
|
+
@connected = false
|
302
|
+
@timeout_at = nil
|
303
|
+
@interpreter = nil
|
304
|
+
|
291
305
|
send_callback(:on_disconnect)
|
292
306
|
end
|
293
307
|
|
@@ -391,15 +405,15 @@ class Remailer::Connection < EventMachine::Connection
|
|
391
405
|
send_callback(:on_error)
|
392
406
|
elsif (!@connected)
|
393
407
|
remote_options = @options
|
408
|
+
interpreter = @interpreter
|
394
409
|
|
395
|
-
|
396
|
-
when Remailer::Connection::Socks5Interpreter
|
410
|
+
if (@connecting_to_proxy)
|
397
411
|
remote_options = @options[:proxy]
|
398
412
|
end
|
399
413
|
|
400
414
|
message = "Timed out before a connection could be established to #{remote_options[:host]}:#{remote_options[:port]}"
|
401
415
|
|
402
|
-
if (interpreter
|
416
|
+
if (interpreter)
|
403
417
|
message << " using #{interpreter.label}"
|
404
418
|
end
|
405
419
|
|
@@ -522,7 +536,10 @@ class Remailer::Connection < EventMachine::Connection
|
|
522
536
|
@connected = code
|
523
537
|
|
524
538
|
send_notification(:connect, code, message || self.remote)
|
525
|
-
|
539
|
+
|
540
|
+
if (code)
|
541
|
+
send_callback(:on_connect)
|
542
|
+
end
|
526
543
|
end
|
527
544
|
|
528
545
|
def error_notification(code, message)
|
@@ -35,12 +35,6 @@ class Remailer::Connection::Socks5Interpreter < Remailer::Interpreter
|
|
35
35
|
# == State Mapping ========================================================
|
36
36
|
|
37
37
|
state :initialized do
|
38
|
-
enter do
|
39
|
-
enter_state(:connect_to_proxy)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
state :connect_to_proxy do
|
44
38
|
enter do
|
45
39
|
proxy_options = delegate.options[:proxy]
|
46
40
|
|
@@ -91,6 +85,8 @@ class Remailer::Connection::Socks5Interpreter < Remailer::Interpreter
|
|
91
85
|
|
92
86
|
state :connect_through_proxy do
|
93
87
|
enter do
|
88
|
+
delegate.proxy_connection_initiated
|
89
|
+
|
94
90
|
if (@destination_address)
|
95
91
|
delegate.debug_notification(:proxy, "Sending proxy connection request to #{@destination_address.unpack('CCCC').join('.')}:#{delegate.options[:port]}")
|
96
92
|
|
data/remailer.gemspec
CHANGED
@@ -5,10 +5,10 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{remailer}
|
8
|
-
s.version = "0.4.
|
8
|
+
s.version = "0.4.11"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = [
|
11
|
+
s.authors = ["Scott Tadman"]
|
12
12
|
s.date = %q{2011-07-05}
|
13
13
|
s.description = %q{EventMachine SMTP Mail User Agent}
|
14
14
|
s.email = %q{scott@twg.ca}
|
@@ -37,8 +37,8 @@ Gem::Specification.new do |s|
|
|
37
37
|
"test/unit/remailer_test.rb"
|
38
38
|
]
|
39
39
|
s.homepage = %q{http://github.com/twg/remailer}
|
40
|
-
s.require_paths = [
|
41
|
-
s.rubygems_version = %q{1.
|
40
|
+
s.require_paths = ["lib"]
|
41
|
+
s.rubygems_version = %q{1.5.3}
|
42
42
|
s.summary = %q{Reactor-Ready SMTP Mailer}
|
43
43
|
s.test_files = [
|
44
44
|
"test/config.example.rb",
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: remailer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.4.
|
5
|
+
version: 0.4.11
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Scott Tadman
|
@@ -10,7 +10,8 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-07-05 00:00:00
|
13
|
+
date: 2011-07-05 00:00:00 -04:00
|
14
|
+
default_executable:
|
14
15
|
dependencies:
|
15
16
|
- !ruby/object:Gem::Dependency
|
16
17
|
name: eventmachine
|
@@ -51,6 +52,7 @@ files:
|
|
51
52
|
- test/unit/remailer_interpreter_state_proxy_test.rb
|
52
53
|
- test/unit/remailer_interpreter_test.rb
|
53
54
|
- test/unit/remailer_test.rb
|
55
|
+
has_rdoc: true
|
54
56
|
homepage: http://github.com/twg/remailer
|
55
57
|
licenses: []
|
56
58
|
|
@@ -74,7 +76,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
74
76
|
requirements: []
|
75
77
|
|
76
78
|
rubyforge_project:
|
77
|
-
rubygems_version: 1.
|
79
|
+
rubygems_version: 1.5.3
|
78
80
|
signing_key:
|
79
81
|
specification_version: 3
|
80
82
|
summary: Reactor-Ready SMTP Mailer
|