From 21e9e1ec7d90ddab19886bd8014bf9ab87e72c22 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 Signed-off-by: Kyle M Hall Signed-off-by: Mason James --- C4/SMS.pm | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/C4/SMS.pm b/C4/SMS.pm index 24580d6c9f..3a861a764d 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; } -- 2.39.5