Re: bug in smsc_smpp.c login failure

Alexander Malysh <[email protected]>
Newsgroups gmane.comp.mobile.kannel.devel
Organization Centrium GmbH
Message-ID <[email protected]>
Hi,

what about attached patch ?

Am Donnerstag, 27. Februar 2003 10:30 schrieb Stipe Tolj:
> Alan McNatty wrote:
> > On Thu, 2003-02-27 at 18:54, Nisan Bloch wrote:
> > > Hi
> > >
> > > At 03:46 PM 2/27/03 +1300, Alan McNatty wrote:
> > > >Hello,
> > > >
> > > >found that if I type in the smpp password incorrectly kannel loops
> > > >forever trying to reconnect. ie:
> > >
> > > -1 from me
> > > In the current form this path will not allow any retries for any sort
> > > of bind error. eg what happens if there is a temporary connectivity
> > > issue, or the SMPP server is down for a short while/
> >
> > What I'm trying highlight is that there is a gap in logic ..
> > Currently regardless of the type of error we continually retry to bind.
> > If we specifically receive an error indicating the password is invalid
> > the SMSC is obviously up but we may as well kill the thread.
>
> yep, that's true in some sense. Trying to reconnect forever while we
> get the error information from the SMSC that we can't login with that
> credentials *could* be considered as login abuse :)
>
> At least I would consider this if our SMPP clients would hammer our
> SMPP server with invalid credentials.
>
> Stipe
>
> [email protected]
> -------------------------------------------------------------------
> Wapme Systems AG
>
> Vogelsanger Weg 80
> 40470 Düsseldorf
>
> Tel: +49-211-74845-0
> Fax: +49-211-74845-299
>
> E-Mail: [email protected]
> Internet: http://www.wapme-systems.de
> -------------------------------------------------------------------
> wapme.net - wherever you are

-- 
Best regards / Mit besten Grüßen aus Köln

Dipl.-Ing.
Alexander Malysh
___________________________________________

Centrium GmbH
Ehrenstraße 2
50672 Köln

Fon: +49 (0221) 277 49 240
Fax: +49 (0221) 277 49 109

email: [email protected]
web: www.centrium.de
msn: [email protected]
icq: 98063111
smsc_smpp.c.diff (text/x-diff, 2.1 KB)
Index: gw/smsc/smsc_smpp.c
===================================================================
RCS file: /home/cvs/gateway/gw/smsc/smsc_smpp.c,v
retrieving revision 1.25
diff -a -u -r1.25 smsc_smpp.c
--- gw/smsc/smsc_smpp.c	23 Feb 2003 11:35:34 -0000	1.25
+++ gw/smsc/smsc_smpp.c	27 Feb 2003 10:25:35 -0000
@@ -62,6 +62,8 @@
  */
 
 enum {
+    SMPP_ESME_RINVPASWD   = 0x0000000E,
+    SMPP_ESME_RINVSYSID   = 0x0000000F,
     SMPP_ESME_RMSGQFUL    = 0x00000014,
     SMPP_ESME_RTHROTTLED  = 0x00000058,
     SMPP_ESME_RX_T_APPN   = 0x00000064,
@@ -958,6 +960,9 @@
 		              "code 0x%08lx.",
                       octstr_get_cstr(smpp->conn->id),
                       pdu->u.bind_transmitter_resp.command_status); 
+                if (pdu->u.bind_transmitter_resp.command_status == SMPP_ESME_RINVSYSID ||
+                    pdu->u.bind_transmitter_resp.command_status == SMPP_ESME_RINVPASWD)
+                    smpp->quitting = 1;
             } else { 
                 *pending_submits = 0; 
                 smpp->conn->status = SMSCCONN_ACTIVE; 
@@ -972,6 +977,9 @@
                       "code 0x%08lx.",
                       octstr_get_cstr(smpp->conn->id),
                       pdu->u.bind_transceiver_resp.command_status); 
+                if (pdu->u.bind_transceiver_resp.command_status == SMPP_ESME_RINVSYSID ||
+                    pdu->u.bind_transceiver_resp.command_status == SMPP_ESME_RINVPASWD)
+                    smpp->quitting = 1;
             } else { 
                 *pending_submits = 0; 
                 smpp->conn->status = SMSCCONN_ACTIVE; 
@@ -986,6 +994,9 @@
                       "code 0x%08lx.", 
                       octstr_get_cstr(smpp->conn->id),
                       pdu->u.bind_receiver_resp.command_status); 
+                if (pdu->u.bind_receiver_resp.command_status == SMPP_ESME_RINVSYSID ||
+                    pdu->u.bind_receiver_resp.command_status == SMPP_ESME_RINVPASWD)
+                    smpp->quitting = 1;
             } else { 
                 /* set only resceive status if no transmitt is bind */
                 if (smpp->conn->status != SMSCCONN_ACTIVE) {
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.