spf 0.0.32 → 0.0.33

Sign up to get free protection for your applications and to get access to all the features.
data/lib/spf/error.rb CHANGED
@@ -14,6 +14,7 @@ module SPF
14
14
 
15
15
  class DNSError < Error; end # DNS error
16
16
  class DNSTimeoutError < DNSError; end # DNS timeout
17
+ class DNSNXDomainError < DNSError; end # DNS NXDomain
17
18
  class RecordSelectionError < Error # Record selection error
18
19
  attr_accessor :records
19
20
  def initialize(message, records=[])
data/lib/spf/eval.rb CHANGED
@@ -140,7 +140,18 @@ class SPF::Server
140
140
 
141
141
  domain = domain.sub(/\.$/, '').downcase
142
142
 
143
- packet = @dns_resolver.getresources(domain, rr_type)
143
+ packet = nil
144
+ begin
145
+ packet = @dns_resolver.getresources(domain, rr_type)
146
+ rescue Resolv::TimeoutError => e
147
+ raise SPF::DNSTimeoutError.new(
148
+ "Time-out on DNS '#{rr_type}' lookup of '#{domain}'")
149
+ rescue Resolv::NXDomainError => e
150
+ raise SPF::DNSError.new("NXDomain for '#{domain}'")
151
+ rescue Resolv::ResolvError => e
152
+ raise SPF::DNSError.new(
153
+ "Unknown error on DNS '#{rr_type}' lookup of '#{domain}'")
154
+ end
144
155
 
145
156
  # Raise DNS exception unless an answer packet with RCODE 0 or 3 (NXDOMAIN)
146
157
  # was received (thereby treating NXDOMAIN as an acceptable but empty answer packet):
data/lib/spf/model.rb CHANGED
@@ -326,7 +326,12 @@ class SPF::Mech < SPF::Term
326
326
 
327
327
  ipv4_prefix_length = @ipv4_prefix_length || self.default_ipv4_prefix_length
328
328
  ipv6_prefix_length = @ipv6_prefix_length || self.default_ipv6_prefix_length
329
- packet = server.dns_lookup(domain.to_s, 'ANY')
329
+ begin
330
+ packet = server.dns_lookup(domain.to_s, 'ANY')
331
+ rescue SPF::DNSError => e
332
+ @errors << e
333
+ return false
334
+ end
330
335
  server.count_void_dns_lookup(request) unless (rrs = packet)
331
336
 
332
337
  rrs.each do |rr|
data/lib/spf/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module SPF
2
- VERSION = '0.0.32'
2
+ VERSION = '0.0.33'
3
3
  end
4
4
 
5
5
  # vim:sw=2 sts=2
data/spf.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "spf"
8
- s.version = "0.0.32"
8
+ s.version = "0.0.33"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Andrew Flury", "Julian Mehnle"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.32
4
+ version: 0.0.33
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -127,8 +127,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
127
127
  version: '0'
128
128
  requirements: []
129
129
  rubyforge_project:
130
- rubygems_version: 1.8.23
130
+ rubygems_version: 1.8.23.2
131
131
  signing_key:
132
132
  specification_version: 3
133
133
  summary: Implementation of the Sender Policy Framework
134
134
  test_files: []
135
+ has_rdoc: