Hello,

found that if I type in the smpp password incorrectly kannel loops
forever trying to reconnect. ie:

 [6] DEBUG: SMPP PDU 0x80f3a18 dump:
 [6] DEBUG:   type_name: bind_receiver_resp
 [6] DEBUG:   command_id: 2147483649 = 0x80000001
 [6] DEBUG:   command_status: 14 = 0x0000000e
 [6] DEBUG:   sequence_number: 732 = 0x000002dc
 [6] DEBUG:   system_id: NULL
 [6] DEBUG: SMPP PDU dump ends.
 [6] ERROR: SMPP[xxx]: SMSC rejected login to receive, code 0x0000000e.
 [6] ERROR: SMPP[xxx]: I/O error or other error. Re-connecting.

And so on .. 

The smsc_smpp.c handle_pdu notices the error (and indeed reports on it)
but it's not noticed at the io_thread level so keeps trying.

I worked around it by setting smpp->quitting = 1 after the error message
in handle_pdu (see patch) which has the effect of shutting down the
failing threads (so they don't keep trying). Crude - provided as example
only - will look at improving this. 

Also, in the instance you only have 1 smpp connection which when fails
in this way, the bearerbox sits without actually shutting down (ie:
doesn't realise there are no active threads and clean up, etc). Should
the bearerbox shutdown in this instance?

Cheers,
Alan


-- 
Alan McNatty <[EMAIL PROTECTED]>
Index: gw/smsc/smsc_smpp.c
===================================================================
RCS file: /home/cvs/gateway/gw/smsc/smsc_smpp.c,v
retrieving revision 1.25
diff -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 02:29:38 -0000
@@ -958,6 +958,11 @@
 		              "code 0x%08lx.",
                       octstr_get_cstr(smpp->conn->id),
                       pdu->u.bind_transmitter_resp.command_status); 
+
+		/* Need to die here, well just don't keep trying this connection
+		 * if the password doesn't work it never will */
+	         smpp->quitting = 1;
+
             } else { 
                 *pending_submits = 0; 
                 smpp->conn->status = SMSCCONN_ACTIVE; 

Reply via email to