Skip Menu |

This queue is for tickets about the Net-SMPP CPAN distribution.

Report information
The Basics
Id: 18510
Status: open
Priority: 0/
Queue: Net-SMPP

People
Owner: Nobody in particular
Requestors: top_secret [...] pisem.net
Cc:
AdminCc:

Bug Information
Severity: Critical
Broken in: (no value)
Fixed in: (no value)



Subject: $resp_pdu->status
In the manual it is written: $resp_pdu = $smpp->submit_sm(destination_addr => '+447799658372', short_message => 'test message') or die; die "Response indicated error: " . $resp_pdu->explain_status() if $resp_pdu->status; But, it doesn't work. Error "Not a GLOB reference..." occurs. ###### package Net::SMPP; sub read_pdu { ... ... my $pdu = { cmd => 0, status => 0, seq => 0, data => '', }; ... ... return bless $pdu => 'Net::SMPP::PDU'; } package Net::SMPP::PDU; sub status { my $me = shift; return ${*$me}{status}; } #### So it seems that subroutine SMPP::read_pdu should return GLOB instead of object reference.
On Mon Apr 03 04:42:08 2006, guest wrote: Show quoted text
> package Net::SMPP; > sub read_pdu { > ... > ... > my $pdu = { cmd => 0, status => 0, seq => 0, data => '', }; > ... > ... > return bless $pdu => 'Net::SMPP::PDU'; > }
Show quoted text
> package Net::SMPP::PDU; > sub status { > my $me = shift; > return ${*$me}{status}; > }
Looks to me like some half-completed attempt at copypaste, or refactoring, that wasn't quite finished. I've had a semi-blind stab at fixing the code by eye, see attached patch. I don't directly have access to anything SMPPish, but doing this for someone I know who does, who has confirmed this seems to be working. -- Paul Evans
Subject: SMPP.pm.diff
--- SMPP.pm.orig 2010-08-18 19:57:49.644693000 +0100 +++ SMPP.pm 2010-08-18 19:59:38.548250000 +0100 @@ -2342,38 +2342,36 @@ sub message_id { my $me = shift; - return ${*$me}{message_id}; + return $me->{message_id}; } sub status { my $me = shift; return $me->{status}; - #return ${$me}{status}; - #return ${*$me}{status}; } sub seq { my $me = shift; - return ${*$me}{seq}; + return $me->{seq}; } sub explain_status { my $me = shift; return sprintf("%s (%s=0x%08X)", - Net::SMPP::status_code->{${*$me}{status}}->{msg}, - Net::SMPP::status_code->{${*$me}{status}}->{code}, - ${*$me}{status}); + Net::SMPP::status_code->{$me->{status}}->{msg}, + Net::SMPP::status_code->{$me->{status}}->{code}, + $me->{status}); } sub cmd { my $me = shift; - return ${*$me}{cmd}; + return $me->{cmd}; } sub explain_cmd { my $me = shift; - my $cmd = Net::SMPP::pdu_tab->{${*$me}{cmd}} - || { cmd => sprintf(q{Unknown(0x%08X)}, ${*$me}{cmd}) }; + my $cmd = Net::SMPP::pdu_tab->{$me->{cmd}} + || { cmd => sprintf(q{Unknown(0x%08X)}, $me->{cmd}) }; return $cmd->{cmd}; }