From f1b165ae6b59880a1dcbe6201d14be90ee553741 Mon Sep 17 00:00:00 2001 From: Olli-Antti Kivilahti Date: Wed, 27 Aug 2014 15:43:59 +0300 Subject: [PATCH] [PASSED QA] 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 Signed-off-by: Kyle M Hall --- C4/SMS.pm | 19 ++++++++++++++----- 1 files 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.7.2.5