ipaccess 1.2.0 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +5 -13
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/.yardopts +2 -0
  5. data/ChangeLog +66 -0
  6. data/Manifest.txt +5 -10
  7. data/README.md +2 -2
  8. data/Rakefile +1 -1
  9. data/docs/HISTORY +11 -0
  10. data/docs/TODO +1 -1
  11. data/docs/yard-tpl/default/fulldoc/html/css/common.css +5 -0
  12. data/examples/open-uri.rb +14 -0
  13. data/examples/telnet.rb +1 -1
  14. data/ipaccess.gemspec +62 -0
  15. data/lib/ipaccess.rb +2 -566
  16. data/lib/ipaccess/arm_sockets.rb +0 -1
  17. data/lib/ipaccess/core.rb +523 -0
  18. data/lib/ipaccess/ghost_doc/ghost_doc.rb +1 -1
  19. data/lib/ipaccess/ghost_doc/ghost_doc_acl.rdoc +54 -0
  20. data/lib/ipaccess/ghost_doc/ghost_doc_net_ftp.rb +35 -19
  21. data/lib/ipaccess/ghost_doc/ghost_doc_net_http.rb +34 -18
  22. data/lib/ipaccess/ghost_doc/ghost_doc_net_smtp.rb +35 -19
  23. data/lib/ipaccess/ghost_doc/ghost_doc_net_telnet.rb +35 -19
  24. data/lib/ipaccess/ghost_doc/ghost_doc_patched_usage.rdoc +65 -0
  25. data/lib/ipaccess/ghost_doc/ghost_doc_sockets.rb +353 -125
  26. data/lib/ipaccess/ip_access_check.rb +2 -2
  27. data/lib/ipaccess/ip_access_errors.rb +2 -2
  28. data/lib/ipaccess/ip_access_list.rb +3 -3
  29. data/lib/ipaccess/patches/generic.rb +150 -183
  30. data/lib/ipaccess/patches/net_ftp.rb +1 -2
  31. data/lib/ipaccess/patches/net_http.rb +10 -14
  32. data/lib/ipaccess/patches/net_imap.rb +1 -2
  33. data/lib/ipaccess/patches/net_pop.rb +2 -4
  34. data/lib/ipaccess/patches/net_smtp.rb +2 -4
  35. data/lib/ipaccess/patches/net_telnet.rb +1 -2
  36. data/lib/ipaccess/patches/sockets.rb +67 -69
  37. data/lib/ipaccess/socket.rb +0 -17
  38. metadata +70 -100
  39. metadata.gz.sig +0 -0
  40. data/lib/ipaccess/ghost_doc/ghost_doc_acl.rb +0 -54
  41. data/lib/ipaccess/ghost_doc/ghost_doc_p_blacklist.rb +0 -36
  42. data/lib/ipaccess/ghost_doc/ghost_doc_p_blacklist_e.rb +0 -7
  43. data/lib/ipaccess/ghost_doc/ghost_doc_p_unblacklist.rb +0 -36
  44. data/lib/ipaccess/ghost_doc/ghost_doc_p_unblacklist_e.rb +0 -7
  45. data/lib/ipaccess/ghost_doc/ghost_doc_p_unwhitelist.rb +0 -36
  46. data/lib/ipaccess/ghost_doc/ghost_doc_p_unwhitelist_e.rb +0 -7
  47. data/lib/ipaccess/ghost_doc/ghost_doc_p_whitelist.rb +0 -36
  48. data/lib/ipaccess/ghost_doc/ghost_doc_p_whitelist_e.rb +0 -7
  49. data/lib/ipaccess/ghost_doc/ghost_doc_patched_usage.rb +0 -64
@@ -91,8 +91,7 @@ module IPAccess::Patches::Net
91
91
 
92
92
  # initialize on steroids.
93
93
  define_method :__ipacall__initialize do |block, *args|
94
- @opened_on_deny = false
95
- args.delete_if { |x| @opened_on_deny = true if (x.is_a?(Symbol) && x == :opened_on_deny) }
94
+ @opened_on_deny = !!args.reject! { |x| x.is_a?(Symbol) && x == :opened_on_deny }
96
95
  args.pop if args.last.nil?
97
96
  self.acl = IPAccess.valid_acl?(args.last) ? args.pop : :global
98
97
  orig_initialize.bind(self).call(*args, &block)
@@ -39,27 +39,26 @@ module IPAccess::Patches::Net
39
39
  # It uses output access lists.
40
40
 
41
41
  module HTTP
42
-
42
+
43
43
  include IPAccess::Patches::ACL
44
-
44
+
45
45
  def self.included(base)
46
-
46
+
47
47
  marker = (base.name =~ /IPAccess/) ? base.superclass : base
48
48
  return if marker.instance_variable_defined?(:@uses_ipaccess)
49
49
  base.instance_variable_set(:@uses_ipaccess, true)
50
-
50
+
51
51
  base.class_eval do
52
52
 
53
53
  # CLASS METHODS
54
54
  unless (base.name.nil? && base.class.name == "Class")
55
55
  (class << self; self; end).class_eval do
56
-
56
+
57
57
  alias :__ipac__orig_new :new
58
-
58
+
59
59
  # overload HTTP.new() since it's not usual.
60
60
  define_method :new do |address, *args|
61
- late_opened_on_deny = false
62
- args.delete_if { |x| late_opened_on_deny = true if (x.is_a?(Symbol) && x == :opened_on_deny) }
61
+ late_opened_on_deny = !!args.reject! { |x| x.is_a?(Symbol) && x == :opened_on_deny }
63
62
  args.pop if args.last.nil?
64
63
  late_acl = IPAccess.valid_acl?(args.last) ? args.pop : :global
65
64
  obj = __ipac__orig_new(address, *args)
@@ -70,8 +69,7 @@ module IPAccess::Patches::Net
70
69
 
71
70
  # overwrite HTTP.start()
72
71
  define_method :__ipacall__start do |block, address, *args|
73
- late_on_deny = nil
74
- args.delete_if { |x| late_on_deny = x if (x.is_a?(Symbol) && x == :opened_on_deny) }
72
+ late_on_deny = ( !!args.reject! { |x| x.is_a?(Symbol) && x == :opened_on_deny } ? :opened_on_deny : nil )
75
73
  args.pop if args.last.nil?
76
74
  acl = IPAccess.valid_acl?(args.last) ? args.pop : :global
77
75
  port, p_addr, p_port, p_user, p_pass = *args
@@ -85,8 +83,7 @@ module IPAccess::Patches::Net
85
83
 
86
84
  # overwrite HTTP.get_response()
87
85
  define_method :__ipacall__get_response do |block, uri_or_host, *args|
88
- late_on_deny = nil
89
- args.delete_if { |x| late_on_deny = x if (x.is_a?(Symbol) && x == :opened_on_deny) }
86
+ late_on_deny = ( !!args.reject! { |x| x.is_a?(Symbol) && x == :opened_on_deny } ? :opened_on_deny : nil )
90
87
  args.pop if args.last.nil?
91
88
  late_acl = IPAccess.valid_acl?(args.last) ? args.pop : :global
92
89
  path, port = *args
@@ -118,8 +115,7 @@ module IPAccess::Patches::Net
118
115
 
119
116
  # initialize on steroids.
120
117
  define_method :__ipacall__initialize do |block, *args|
121
- @opened_on_deny = false
122
- args.delete_if { |x| @opened_on_deny = true if (x.is_a?(Symbol) && x == :opened_on_deny) }
118
+ @opened_on_deny = !!args.reject! { |x| x.is_a?(Symbol) && x == :opened_on_deny }
123
119
  args.pop if args.last.nil?
124
120
  self.acl = IPAccess.valid_acl?(args.last) ? args.pop : :global
125
121
  orig_initialize.bind(self).call(*args, &block)
@@ -56,8 +56,7 @@ module IPAccess::Patches::Net
56
56
 
57
57
  # initialize on steroids.
58
58
  define_method :__ipacall__initialize do |block, host, *args|
59
- @opened_on_deny = false
60
- args.delete_if { |x| @opened_on_deny = true if (x.is_a?(Symbol) && x == :opened_on_deny) }
59
+ @opened_on_deny = !!args.reject! { |x| x.is_a?(Symbol) && x == :opened_on_deny }
61
60
  args.pop if args.last.nil?
62
61
  self.acl = IPAccess.valid_acl?(args.last) ? args.pop : :global
63
62
  ipaddr = ::TCPSocket.getaddress(host)
@@ -56,8 +56,7 @@ module IPAccess::Patches::Net
56
56
 
57
57
  # overwrite POP3.start()
58
58
  define_method :__ipacall__start do |block, address, *args|
59
- late_on_deny = nil
60
- args.delete_if { |x| late_on_deny = x if (x.is_a?(Symbol) && x == :opened_on_deny) }
59
+ late_on_deny = ( !!args.reject! { |x| x.is_a?(Symbol) && x == :opened_on_deny } ? :opened_on_deny : nil )
61
60
  args.pop if args.last.nil?
62
61
  late_acl = IPAccess.valid_acl?(args.last) ? args.pop : :global
63
62
  port, account, password, isapop = *args
@@ -111,8 +110,7 @@ module IPAccess::Patches::Net
111
110
 
112
111
  # initialize on steroids.
113
112
  define_method :initialize do |addr, *args|
114
- @opened_on_deny = false
115
- args.delete_if { |x| @opened_on_deny = true if (x.is_a?(Symbol) && x == :opened_on_deny) }
113
+ @opened_on_deny = !!args.reject! { |x| x.is_a?(Symbol) && x == :opened_on_deny }
116
114
  args.pop if args.last.nil?
117
115
  self.acl = IPAccess.valid_acl?(args.last) ? args.pop : :global
118
116
  obj = orig_initialize.bind(self).call(addr, *args)
@@ -56,8 +56,7 @@ module IPAccess::Patches::Net
56
56
 
57
57
  # overwrite SMTP.start()
58
58
  define_method :__ipacall__start do |block, address, *args|
59
- late_on_deny = nil
60
- args.delete_if { |x| late_on_deny = x if (x.is_a?(Symbol) && x == :opened_on_deny) }
59
+ late_on_deny = ( !!args.reject! { |x| x.is_a?(Symbol) && x == :opened_on_deny } ? :opened_on_deny : nil )
61
60
  args.pop if args.last.nil?
62
61
  late_acl = IPAccess.valid_acl?(args.last) ? args.smtp : :global
63
62
  port, helo, user, secret, authtype = *args
@@ -79,8 +78,7 @@ module IPAccess::Patches::Net
79
78
 
80
79
  # initialize on steroids.
81
80
  define_method :initialize do |addr, *args|
82
- @opened_on_deny = false
83
- args.delete_if { |x| @opened_on_deny = true if (x.is_a?(Symbol) && x == :opened_on_deny) }
81
+ @opened_on_deny = !!args.reject! { |x| x.is_a?(Symbol) && x == :opened_on_deny }
84
82
  args.pop if args.last.nil?
85
83
  self.acl = IPAccess.valid_acl?(args.last) ? args.pop : :global
86
84
  obj = orig_initialize.bind(self).call(addr, *args)
@@ -54,8 +54,7 @@ module IPAccess::Patches::Net
54
54
 
55
55
  # initialize on steroids.
56
56
  define_method :__ipacall__initialize do |block, *args|
57
- @opened_on_deny = false
58
- args.delete_if { |x| @opened_on_deny = true if (x.is_a?(Symbol) && x == :opened_on_deny) }
57
+ @opened_on_deny = !!args.reject! { |x| x.is_a?(Symbol) && x == :opened_on_deny }
59
58
  args.pop if args.last.nil?
60
59
  options = args.first
61
60
  options["ACL"] = args.pop if (IPAccess.valid_acl?(args.last) && options.is_a?(Hash))
@@ -39,22 +39,22 @@ require 'ipaccess/patches/generic'
39
39
  # class has acl member, which is an IPAccess::Set object.
40
40
 
41
41
  module IPAccess::Patches
42
-
42
+
43
43
  ###################################################################
44
44
  # Socket class with IP access control.
45
45
  # It uses input and output access lists.
46
46
  # Default access list for management operations is output.
47
-
47
+
48
48
  module Socket
49
-
49
+
50
50
  include IPAccess::Patches::ACL
51
51
 
52
52
  def self.included(base)
53
-
53
+
54
54
  marker = (base.name =~ /IPAccess/) ? base.superclass : base
55
55
  return if marker.instance_variable_defined?(:@uses_ipaccess)
56
56
  base.instance_variable_set(:@uses_ipaccess, true)
57
-
57
+
58
58
  base.class_eval do
59
59
 
60
60
  orig_initialize = self.instance_method :initialize
@@ -64,17 +64,16 @@ module IPAccess::Patches
64
64
  orig_recvfrom = self.instance_method :recvfrom
65
65
  orig_recvfrom_nonblock = self.instance_method :recvfrom_nonblock
66
66
  orig_sysaccept = self.instance_method :sysaccept
67
-
67
+
68
68
  define_method :__ipacall__initialize do |block, *args|
69
- @opened_on_deny = false
70
- args.delete_if { |x| @opened_on_deny = true if (x.is_a?(Symbol) && x == :opened_on_deny) }
69
+ @opened_on_deny = !!args.reject! { |x| x.is_a?(Symbol) && x == :opened_on_deny }
71
70
  args.pop if args.last.nil?
72
71
  self.acl = valid_acl?(args.last) ? args.pop : :global
73
72
  @useables = IPAccess::ObjectsReferences
74
73
  orig_initialize.bind(self).call(*args, &block)
75
74
  return self
76
75
  end
77
-
76
+
78
77
  # block passing wrapper for Ruby 1.8
79
78
  def initialize(*args, &block)
80
79
  __ipacall__initialize(block, *args)
@@ -112,7 +111,7 @@ module IPAccess::Patches
112
111
  end
113
112
  return ret
114
113
  end
115
-
114
+
116
115
  # this hook will be called each time @acl is reassigned
117
116
  define_method :acl_recheck do
118
117
  return nil if self.closed?
@@ -141,23 +140,23 @@ module IPAccess::Patches
141
140
  end
142
141
  return ret
143
142
  end
144
-
143
+
145
144
  # This method returns default access list indicator
146
145
  # used by protected object; in this case it's +:output+.
147
146
  define_method :default_list do
148
147
  :output
149
148
  end
150
-
149
+
151
150
  define_method :useables do
152
151
  @useables
153
152
  end
154
-
153
+
155
154
  end # base.class_eval
156
-
155
+
157
156
  end # self.included
158
-
157
+
159
158
  end # module Socket
160
-
159
+
161
160
  ###################################################################
162
161
  # UDPSocket class with IP access control.
163
162
  # It uses input and output access lists.
@@ -168,38 +167,38 @@ module IPAccess::Patches
168
167
  include IPAccess::Patches::ACL
169
168
 
170
169
  def self.included(base)
171
-
170
+
172
171
  marker = (base.name =~ /IPAccess/) ? base.superclass : base
173
172
  return if marker.instance_variable_defined?(:@uses_ipaccess)
174
173
  base.instance_variable_set(:@uses_ipaccess, true)
175
-
174
+
176
175
  base.class_eval do
177
-
176
+
178
177
  orig_initialize = self.instance_method :initialize
179
178
  orig_connect = self.instance_method :connect
180
179
  orig_send = self.instance_method :send
181
180
  orig_recvfrom = self.instance_method :recvfrom
182
181
  orig_recvfrom_nonblock = self.instance_method :recvfrom_nonblock
183
-
182
+
184
183
  define_method :__ipacall__initialize do |block, *args|
185
184
  self.acl = valid_acl?(args.last) ? args.pop : :global
186
185
  @opened_on_deny = true
187
186
  orig_initialize.bind(self).call(*args, &block)
188
187
  return self
189
188
  end
190
-
189
+
191
190
  # block passing wrapper for Ruby 1.8
192
191
  def initialize(*args, &block)
193
192
  __ipacall__initialize(block, *args)
194
193
  end
195
-
194
+
196
195
  # connect on steroids.
197
196
  define_method :connect do |*args|
198
197
  peer_ip = self.class.getaddress(args.shift)
199
198
  real_acl.output.check_sockaddr(peer_ip, self)
200
199
  return orig_connect.bind(self).call(peer_ip, *args)
201
200
  end
202
-
201
+
203
202
  # send on steroids.
204
203
  define_method :send do |*args|
205
204
  hostname = args[2]
@@ -231,31 +230,31 @@ module IPAccess::Patches
231
230
  end
232
231
  return ret
233
232
  end
234
-
233
+
235
234
  # This method returns default access list indicator
236
235
  # used by protected object; in this case it's +:input+.
237
236
  define_method :default_list do
238
237
  :intput
239
238
  end
240
-
239
+
241
240
  # this kind of socket is not connection-oriented.
242
241
  define_method :connection_close do
243
242
  return nil
244
243
  end
245
-
244
+
246
245
  # this hook will be called each time @acl is reassigned
247
246
  define_method :acl_recheck do
248
247
  return nil if self.closed?
249
248
  real_acl.output.check_socket(self, self) { try_terminate }
250
249
  return nil
251
250
  end
252
-
251
+
253
252
  end # base.class_eval
254
253
 
255
254
  end # self.included
256
255
 
257
256
  end # module UDPSocket
258
-
257
+
259
258
  ###################################################################
260
259
  # SOCKSSocket class with IP access control.
261
260
  # It uses output access lists.
@@ -265,19 +264,18 @@ module IPAccess::Patches
265
264
  include IPAccess::Patches::ACL
266
265
 
267
266
  def self.included(base)
268
-
267
+
269
268
  marker = (base.name =~ /IPAccess/) ? base.superclass : base
270
269
  return if marker.instance_variable_defined?(:@uses_ipaccess)
271
270
  base.instance_variable_set(:@uses_ipaccess, true)
272
-
271
+
273
272
  base.class_eval do
274
-
273
+
275
274
  orig_initialize = self.instance_method :initialize
276
-
275
+
277
276
  # initialize on steroids.
278
277
  define_method :__pacall__initialize do |block, *args|
279
- @opened_on_deny = false
280
- args.delete_if { |x| @opened_on_deny = true if (x.is_a?(Symbol) && x == :opened_on_deny) }
278
+ @opened_on_deny = !!args.reject! { |x| x.is_a?(Symbol) && x == :opened_on_deny }
281
279
  args.pop if args.last.nil?
282
280
  self.acl = valid_acl?(args.last) ? args.pop : :global
283
281
  args[0] = self.class.getaddress(args[0])
@@ -291,25 +289,25 @@ module IPAccess::Patches
291
289
  @useables = IPAccess::ObjectsReferences
292
290
  return self
293
291
  end
294
-
292
+
295
293
  # block passing wrapper for Ruby 1.8
296
294
  def initialize(*args, &block)
297
295
  __ipacall__initialize(block, *args)
298
296
  end
299
-
297
+
300
298
  # this hook will be called each time @acl is reassigned
301
299
  define_method :acl_recheck do
302
300
  return nil if self.closed?
303
301
  real_acl.output.check_socket(self, self) { try_terminate }
304
302
  return nil
305
303
  end
306
-
304
+
307
305
  # This method returns default access list indicator
308
306
  # used by protected object; in this case it's +:output+.
309
307
  define_method :default_list do
310
308
  :output
311
309
  end
312
-
310
+
313
311
  end # base.class_eval
314
312
 
315
313
  end # self.included
@@ -319,25 +317,24 @@ module IPAccess::Patches
319
317
  ###################################################################
320
318
  # TCPSocket class with IP access control.
321
319
  # It uses output access lists.
322
-
320
+
323
321
  module TCPSocket
324
322
 
325
323
  include IPAccess::Patches::ACL
326
324
 
327
325
  def self.included(base)
328
-
326
+
329
327
  marker = (base.name =~ /IPAccess/) ? base.superclass : base
330
328
  return if marker.instance_variable_defined?(:@uses_ipaccess)
331
329
  base.instance_variable_set(:@uses_ipaccess, true)
332
-
330
+
333
331
  base.class_eval do
334
-
332
+
335
333
  orig_initialize = self.instance_method :initialize
336
-
334
+
337
335
  # initialize on steroids.
338
336
  define_method :__ipacall__initialize do |block, *args|
339
- @opened_on_deny = false
340
- args.delete_if { |x| @opened_on_deny = true if (x.is_a?(Symbol) && x == :opened_on_deny) }
337
+ @opened_on_deny = !!args.reject! { |x| x === :opened_on_deny }
341
338
  args.pop if args.last.nil?
342
339
  self.acl = valid_acl?(args.last) ? args.pop : :global
343
340
  args[0] = self.class.getaddress(args[0])
@@ -351,66 +348,65 @@ module IPAccess::Patches
351
348
  end
352
349
  return self
353
350
  end
354
-
351
+
355
352
  # block passing wrapper for Ruby 1.8
356
353
  def initialize(*args, &block)
357
354
  __ipacall__initialize(block, *args)
358
355
  end
359
-
356
+
360
357
  # this hook will be called each time @acl is reassigned
361
358
  define_method :acl_recheck do
362
359
  return nil if self.closed?
363
360
  real_acl.output.check_socket(self, self) { try_terminate }
364
361
  return nil
365
362
  end
366
-
363
+
367
364
  # This method returns default access list indicator
368
365
  # used by protected object; in this case it's +:output+.
369
366
  define_method :default_list do
370
367
  :output
371
368
  end
372
-
369
+
373
370
  end # base.class_eval
374
371
 
375
372
  end # self.included
376
373
 
377
374
  end # module TCPSocket
378
-
375
+
379
376
  ###################################################################
380
377
  # TCPServer class with IP access control.
381
378
  # It uses input access lists.
382
-
379
+
383
380
  module TCPServer
384
381
 
385
382
  include IPAccess::Patches::ACL
386
383
 
387
384
  def self.included(base)
388
-
385
+
389
386
  marker = (base.name =~ /IPAccess/) ? base.superclass : base
390
387
  return if marker.instance_variable_defined?(:@uses_ipaccess)
391
388
  base.instance_variable_set(:@uses_ipaccess, true)
392
-
389
+
393
390
  base.class_eval do
394
-
391
+
395
392
  orig_initialize = self.instance_method :initialize
396
393
  orig_accept = self.instance_method :accept
397
394
  orig_accept_nonblock = self.instance_method :accept_nonblock
398
395
  orig_sysaccept = self.instance_method :sysaccept
399
-
396
+
400
397
  # initialize on steroids.
401
398
  define_method :__ipacall__initialize do |block, *args|
402
- @opened_on_deny = false
403
- args.delete_if { |x| @opened_on_deny = true if (x.is_a?(Symbol) && x == :opened_on_deny) }
399
+ @opened_on_deny = !!args.reject! { |x| x.is_a?(Symbol) && x == :opened_on_deny }
404
400
  args.pop if args.last.nil?
405
401
  self.acl = valid_acl?(args.last) ? args.pop : :global
406
402
  return orig_initialize.bind(self).call(*args, &block)
407
403
  end
408
-
404
+
409
405
  # block passing wrapper for Ruby 1.8
410
406
  def initialize(*args, &block)
411
407
  __ipacall__initialize(block, *args)
412
408
  end
413
-
409
+
414
410
  # accept on steroids.
415
411
  define_method :accept do |*args|
416
412
  r = orig_accept.bind(self).call(*args)
@@ -424,33 +420,33 @@ module IPAccess::Patches
424
420
  real_acl.input.check_socket(r, r) { try_terminate_subsocket(r) }
425
421
  return r
426
422
  end
427
-
423
+
428
424
  # sysaccept on steroids.
429
425
  define_method :sysaccept do |*args|
430
426
  r = orig_sysaccept.bind(self).call(*args)
431
427
  real_acl.input.check_fd(r, r) { try_terminate_subsocket(::Socket.for_fd(r)) }
432
428
  return r
433
429
  end
434
-
430
+
435
431
  # this hook will be called each time @acl is reassigned
436
432
  define_method :acl_recheck do
437
433
  return nil if self.closed?
438
434
  real_acl.output.check_socket(self, self) { try_terminate }
439
435
  return nil
440
436
  end
441
-
437
+
442
438
  # This method returns default access list indicator
443
439
  # used by protected object; in this case it's +:input+.
444
440
  define_method :default_list do
445
441
  :input
446
442
  end
447
-
443
+
448
444
  end # base.class_eval
449
445
 
450
446
  end # self.included
451
447
 
452
448
  end # module TCPServer
453
-
449
+
454
450
  ###################################################################
455
451
  # Helper methods for easy checking and arming sockets.
456
452
 
@@ -472,7 +468,7 @@ module IPAccess::Patches
472
468
  end
473
469
  end
474
470
  private :real_socket
475
-
471
+
476
472
  # This method is used to safely
477
473
  # re-raise an eventual exception
478
474
  # and add current object's reference
@@ -503,13 +499,13 @@ module IPAccess::Patches
503
499
  end
504
500
  end
505
501
  private :take_care
506
-
502
+
507
503
  # This method tries to arm socket object.
508
504
  # If a wanted access set and an object's access
509
505
  # set is no different then acl_recheck is called
510
506
  # by force. It sets armed socket's +opened_on_deny+
511
507
  # flag to +true+.
512
-
508
+
513
509
  def try_arm_socket(obj, initial_acl=nil)
514
510
  late_sock = real_socket(obj)
515
511
  unless late_sock.nil?
@@ -523,7 +519,7 @@ module IPAccess::Patches
523
519
  return obj
524
520
  end
525
521
  private :try_arm_socket
526
-
522
+
527
523
  # This method tries to arm socket object and then
528
524
  # tries to set up correct ACL for it. If the ACL
529
525
  # had changed then it assumes that underlying routines
@@ -547,7 +543,9 @@ module IPAccess::Patches
547
543
  initial_acl = real_acl if initial_acl.nil?
548
544
  IPAccess.arm(late_sock, acl, :opened_on_deny) unless late_sock.respond_to?(:acl)
549
545
  if late_sock.acl != initial_acl
546
+ p "dla #{initial_acl}"
550
547
  late_sock.acl = initial_acl
548
+ p late_sock.acl
551
549
  else
552
550
  late_sock.acl_recheck
553
551
  end
@@ -579,7 +577,7 @@ module IPAccess::Patches
579
577
  private :try_check_in_socket_acl
580
578
 
581
579
  end # module ACL
582
-
580
+
583
581
  end # module IPAccess::Patches
584
582
 
585
583
  # :startdoc: