lib/lead_zeppelin/apns/application.rb in lead_zeppelin-0.1.5 vs lib/lead_zeppelin/apns/application.rb in lead_zeppelin-0.1.6

- old
+ new

@@ -27,31 +27,38 @@ def connect cp_args = {size: (@opts[:connection_pool_size] || CONNECTION_POOL_SIZE), timeout: (@opts[:connection_pool_timeout] || CONNECTION_POOL_TIMEOUT)} begin - @gateway_connection_pool = ConnectionPool.new(cp_args) do + gateway_connection_pool = ConnectionPool.new(cp_args) do Gateway.new @ssl_context, (@opts[:gateway_opts] || {}).merge(notification_error_block: @opts[:notification_error_block], certificate_error_block: @opts[:certificate_error_block], application_identifier: @identifier) end rescue OpenSSL::SSL::SSLError => e if e.message =~ /alert certificate unknown/ Logger.warn "bad certificate for #{@identifier}, failed to connect" + end + + if e.message =~ /alert certificate expired/ + Logger.warn "expired certificate for #{@identifier}, failed to connect" + end - if @opts[:certificate_error_block].nil? - Logger.warn "removing application #{@identifier} from the client due to bad certificate" - APNS.client.remove_application @identifier - else - @opts[:certificate_error_block].call @identifier - end + if @opts[:certificate_error_block].nil? + Logger.warn "removing application #{@identifier} from the client due to bad/invalid/expired certificate" + APNS.client.remove_application @identifier + else + @opts[:certificate_error_block].call @identifier end + else + @gateway_connection_pool = gateway_connection_pool end end def message(device_id, message, opts={}) connect if @gateway_connection_pool.nil? + return nil if @gateway_connection_pool.nil? @gateway_connection_pool.with_connection do |gateway| gateway.write Notification.new(device_id, message, opts) end \ No newline at end of file