From b90be687b0a83854653d5d820512cf66fbe0a295 Mon Sep 17 00:00:00 2001 From: Olli-Antti Kivilahti Date: Wed, 27 Aug 2014 15:43:59 +0300 Subject: [PATCH] Bug 3186 - invalid or uninstalled SMSSendDriver (or bad number format) causes process_message_queue to fail This patch wraps the SMS::Send Driver initialization and sending process into an eval block and gracefully causes the sending to fail, instead of crashing the process and preventing emails and good sms' from being sent. Signed-off-by: Chris Cormack --- C4/SMS.pm | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/C4/SMS.pm b/C4/SMS.pm index 24580d6..3a861a7 100644 --- a/C4/SMS.pm +++ b/C4/SMS.pm @@ -75,17 +75,26 @@ sub send_sms { return unless $driver; # warn "using driver: $driver to send message to $params->{'destination'}"; - - # Create a sender - my $sender = SMS::Send->new( $driver, + + my ($sent, $sender); + eval { + # Create a sender + $sender = SMS::Send->new( $driver, _login => C4::Context->preference('SMSSendUsername'), _password => C4::Context->preference('SMSSendPassword'), ); - # Send a message - my $sent = $sender->send_sms( to => $params->{'destination'}, + # Send a message + $sent = $sender->send_sms( to => $params->{'destination'}, text => $params->{'message'}, ); + }; + #We might die because SMS::Send $driver is not defined or the sms-number has a bad format + #Catch those errors and fail the sms-sending gracefully. + if ($@) { + warn $@; + return undef; + } # warn 'failure' unless $sent; return $sent; } -- 1.9.1