push-apns 1.0.1 → 1.0.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.
@@ -1,3 +1,3 @@
1
1
  module PushApns
2
- VERSION = "1.0.1"
2
+ VERSION = "1.0.2"
3
3
  end
@@ -1,10 +1,11 @@
1
1
  module Push
2
2
  class ConfigurationApns < Push::Configuration
3
- store :properties, accessors: [:certificate, :certificate_password, :sandbox, :feedback_poll]
3
+ store :properties, accessors: [:certificate, :certificate_password, :sandbox, :feedback_poll, :skip_check_for_error]
4
4
  attr_accessible :app, :enabled, :connections, :certificate, :certificate_password, :sandbox, :feedback_poll
5
5
  validates :certificate, :presence => true
6
6
  validates :sandbox, :inclusion => { :in => [true, false] }
7
7
  validates :feedback_poll, :presence => true
8
+ validates :skip_check_for_error, :inclusion => { :in => [true, false] }, :allow_blank => true
8
9
 
9
10
  def name
10
11
  :apns
@@ -51,7 +51,7 @@ module Push
51
51
 
52
52
  begin
53
53
  write_data(data)
54
- rescue Errno::EPIPE, Errno::ETIMEDOUT, OpenSSL::SSL::SSLError => e
54
+ rescue Errno::EPIPE, Errno::ETIMEDOUT, Errno::ECONNRESET, OpenSSL::SSL::SSLError => e
55
55
  retry_count += 1;
56
56
 
57
57
  if retry_count == 1
@@ -3,6 +3,8 @@ module Push
3
3
  module ApnsSupport
4
4
  class FeedbackReceiver
5
5
  include Push::Daemon::InterruptibleSleep
6
+ include Push::Daemon::DatabaseReconnectable
7
+
6
8
  FEEDBACK_TUPLE_BYTES = 38
7
9
 
8
10
  def initialize(provider)
@@ -32,7 +34,7 @@ module Push
32
34
 
33
35
  while tuple = connection.read(FEEDBACK_TUPLE_BYTES)
34
36
  timestamp, device = parse_tuple(tuple)
35
- create_feedback(timestamp, device)
37
+ create_feedback(connection, timestamp, device)
36
38
  end
37
39
  rescue StandardError => e
38
40
  Push::Daemon.logger.error(e)
@@ -48,10 +50,12 @@ module Push
48
50
  [Time.at(failed_at).utc, device]
49
51
  end
50
52
 
51
- def create_feedback(failed_at, device)
53
+ def create_feedback(connection, failed_at, device)
52
54
  formatted_failed_at = failed_at.strftime("%Y-%m-%d %H:%M:%S UTC")
53
- Push::Daemon.logger.info("[FeedbackReceiver] Delivery failed at #{formatted_failed_at} for #{device}")
54
- Push::FeedbackApns.create!(:app => @provider.configuration[:name], :failed_at => failed_at, :device => device, :follow_up => 'delete')
55
+ Push::Daemon.logger.info("[#{connection.name}: Delivery failed at #{formatted_failed_at} for #{device}")
56
+ with_database_reconnect_and_retry(connection.name) do
57
+ Push::FeedbackApns.create!(:app => @provider.configuration[:name], :failed_at => failed_at, :device => device, :follow_up => 'delete')
58
+ end
55
59
  end
56
60
  end
57
61
  end
@@ -76,6 +76,9 @@ module Push
76
76
  end
77
77
 
78
78
  def check_for_error(connection)
79
+ # check for true, because check_for_error can be nil
80
+ return if connection.provider.configuration[:skip_check_for_error] == true
81
+
79
82
  if connection.select(SELECT_TIMEOUT)
80
83
  error = nil
81
84
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: push-apns
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-27 00:00:00.000000000 Z
12
+ date: 2012-11-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multi_json
16
- requirement: &70129790660280 !ruby/object:Gem::Requirement
16
+ requirement: &70256296415060 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '1.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70129790660280
24
+ version_requirements: *70256296415060
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: push-core
27
- requirement: &70129790659040 !ruby/object:Gem::Requirement
27
+ requirement: &70256296414560 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.0.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70129790659040
35
+ version_requirements: *70256296414560
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: sqlite3
38
- requirement: &70129790658180 !ruby/object:Gem::Requirement
38
+ requirement: &70256296414180 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70129790658180
46
+ version_requirements: *70256296414180
47
47
  description: APNS support for the modular push daemon.
48
48
  email:
49
49
  - tom@tnux.net