Re: sending too fast to SMPP SMSC?

Alex Judd <[email protected]>
Newsgroups gmane.comp.mobile.kannel.devel
Message-ID <[email protected]>
Can we please ensure we add the SMPP ability to force source_addr_ton etc. 
to the release or at least the cvs before it is released. I know it is not as per 
the specifications however myself, Stefan Cars, Benjamin Lee and various 
others on the list have to re-add these modifications each new build we 
get, and one of the biggest carriers in the UK, namely BT, are forcing the 
use of non-standard values.

Also - I'd like to review and then cvs add the throttling modifications to 
SMPP so that we can do it correctly by protocol using 0x00000058 I/F Throttled 
Error to slow down the speed we are sending messages until a suitable 
level is reached

Is this suitable for everyone?

Alex

On Mon, 1 Apr 2002, Benjamin Lee wrote:

> 
> Yes, I'll be reposting it again against the current CVS (the repository
> changed a bit under my feet since the last diff...)
> 
> 
> On Thursday, 2002-03-28 at 11:03:49 PM, Kita Ndara scribbled:
> > I don't seem to be able to apply this patch to the cvs
> > set, could you provide one that is based on a diff
> > with the current set?
> > 
> > Thanks.
> > 
> > 
> >  --- Benjamin Lee <[email protected]> wrote: >
> > Find attached my patch for SMPP bits and pieces.
> > > It is a combined patch (sorry) including:
> > > 
> > > 1.  configurable TON and NPI (modified from Alex
> > > Judd>
> > > 
> > > 2.  unbind when shutting down
> > > 
> > > 3.  configurable default priority for SMS messages
> > > 
> > > 4.  configurable throughput to limit (throttle)
> > > sending SMS rate to SMPP SMSC
> > > 
> > > 5.  Makefile.in changes, added install -d
> > > $(DESTDIR)$(... etc...
> > >     facilitating consistent builds using RPM
> > > non-root)
> > > 
> > > 
> > > (I apologise for some of the spacing differences...)
> > > 
> > > 
> > > On Thursday, 2002-03-21 at 08:43:56 AM, Benjamin Lee
> > > scribbled:
> > > > Well, actually nothing smart... we were sleeping
> > > when we received a
> > > > THROTTLE off packet from the SMSC but this
> > > behaviour isn't actually
> > > > specified in the protocol as far as I know; and
> > > such a sleep may or may not
> > > > help with the connection to the SMSC.
> > > > 
> > > > The throughtput is set in the .conf file with:
> > > > 
> > > > throughput = 20
> > > > 
> > > > 20 being 20 messages per second.
> > > > 
> > > > On Wednesday, 2002-03-20 at 11:26:05 PM, Kita
> > > Ndara scribbled:
> > > > > What's the principle? Do you detect certain
> > > types of
> > > > > errors and re-queue? I can do some testing on my
> > > end
> > > > > too, see if it helps more generally.
> > > > > 
> > > > > Let's see it!
> > > > > 
> > > > > Thanks.
> > > > > 
> > > > >  --- Benjamin Lee <[email protected]>
> > > wrote: > I
> > > > > finally got around to doing a throughput patch
> > > for
> > > > > > SMPP... I'll post it
> > > > > > shortly.
> > > > > > 
> > > > > > On Wednesday, 2002-03-20 at 10:29:26 PM, Kita
> > > Ndara
> > > > > > scribbled:
> > > > > > > Hi  
> > > > > > >  I have another issue. When I use kannel to
> > > > > > originate
> > > > > > > messages to many phone numbers, sometimes
> > > the SMSC
> > > > > > > (Comverse) returns errors and rejects some
> > > of the
> > > > > > > messages. If I slow down the rate at which
> > > I'm
> > > > > > > submitting the messages to the SMSC, then it
> > > works
> > > > > > > fine. Is there a way for kannel to kind of
> > > > > > > automatically back off from sending too fast
> > > in
> > > > > > such
> > > > > > > cases?
> > > > > > > 
> > > > > > > Thanks.
> > > > > > > 
> > > > > > > =====
> > > > > > > Bruce Ndara
> > > > > > > York Messaging
> > > > > > > 
> > > > > > >
> > > __________________________________________________
> > > > > > > Do You Yahoo!?
> > > > > > > Everything you'll ever need on one web page
> > > > > > > from News and Sport to Email and Music
> > > Charts
> > > > > > > http://uk.my.yahoo.com
> > > > > > 
> > > > > > -- 
> > > > > > Benjamin Lee
> > > > > > 
> > > > > > 71-75 City Rd, South Melbourne, VIC 3006
> > > Australia 
> > > > > > http://www.dotwap.com/
> > > > > > Phone +61 3 9698 1840  Mobile +61 414 717 573 
> > > Fax
> > > > > > +61 3 9698 1841 
> > > > > 
> > > > >
> > > __________________________________________________
> > > > > Do You Yahoo!?
> > > > > Everything you'll ever need on one web page
> > > > > from News and Sport to Email and Music Charts
> > > > > http://uk.my.yahoo.com
> > > > 
> > > > -- 
> > > > Benjamin Lee
> > > > 
> > > > 71-75 City Rd, South Melbourne, VIC 3006 Australia
> > >  http://www.dotwap.com/
> > > > Phone +61 3 9698 1840  Mobile +61 414 717 573  Fax
> > > +61 3 9698 1841
> > > 
> > > -- 
> > > Benjamin Lee
> > > 
> > > 71-75 City Rd, South Melbourne, VIC 3006 Australia 
> > > http://www.dotwap.com/
> > > Phone +61 3 9698 1840  Mobile +61 414 717 573  Fax
> > > +61 3 9698 1841
> > > > Index: Makefile.in
> > >
> > ===================================================================
> > > RCS file: /home/cvs/gateway/Makefile.in,v
> > > retrieving revision 1.56
> > > diff -u -r1.56 Makefile.in
> > > --- Makefile.in	23 Jan 2002 18:33:00 -0000	1.56
> > > +++ Makefile.in	22 Mar 2002 04:12:46 -0000
> > > @@ -228,12 +228,12 @@
> > >  dummy:
> > >  
> > >  install: all
> > > -	$(INSTALL) -d $(bindir)
> > > +	$(INSTALL) -d $(DESTDIR)$(bindir)
> > >  	for prog in $(binprogs); do \
> > >  		$(INSTALL) $$prog \
> > >  		    $(DESTDIR)$(bindir)/`basename
> > > $$prog`$(suffix); \
> > >  	done
> > > -	$(INSTALL) -d $(sbindir)
> > > +	$(INSTALL) -d $(DESTDIR)$(sbindir)
> > >  	for prog in $(sbinprogs); do \
> > >  		$(INSTALL) $$prog \
> > >  		    $(DESTDIR)$(sbindir)/`basename
> > > $$prog`$(suffix); \
> > > Index: gw/smpp_pdu.def
> > >
> > ===================================================================
> > > RCS file: /home/cvs/gateway/gw/smpp_pdu.def,v
> > > retrieving revision 1.3
> > > diff -u -r1.3 smpp_pdu.def
> > > --- gw/smpp_pdu.def	8 Nov 2001 08:41:23 -0000	1.3
> > > +++ gw/smpp_pdu.def	22 Mar 2002 04:12:48 -0000
> > > @@ -162,6 +162,10 @@
> > >      HEADER
> > >  )
> > >  
> > > +PDU(generic_nack_resp,
> > > +    0x80000000,
> > > +    HEADER
> > > +)
> > >  
> > >  #undef PDU
> > >  #undef INTEGER
> > > Index: gw/smsc_smpp.c
> > >
> > ===================================================================
> > > RCS file: /home/cvs/gateway/gw/smsc_smpp.c,v
> > > retrieving revision 1.51
> > > diff -u -r1.51 smsc_smpp.c
> > > --- gw/smsc_smpp.c	29 Jan 2002 21:38:36 -0000	1.51
> > > +++ gw/smsc_smpp.c	22 Mar 2002 04:12:48 -0000
> > > @@ -70,6 +70,12 @@
> > >      Octstr *username;
> > >      Octstr *password;
> > >      Octstr *address_range;
> > > +    int source_addr_ton;
> > > +    int source_addr_npi;
> > > +    int dest_addr_ton;
> > > +    int dest_addr_npi;
> > > +    int throughput;     /* limit sending rate */
> > > +    int priority;       /* set default priority for
> > > messages */
> > >      int transmit_port;
> > >      int receive_port;
> > >      int quitting;
> > > @@ -80,7 +86,10 @@
> > >  static SMPP *smpp_create(SMSCConn *conn, Octstr
> > > *host, int transmit_port, 
> > >      	    	    	 int receive_port, Octstr
> > > *system_type, 
> > >  			 Octstr *username, Octstr *password,
> > > -    	    	    	 Octstr *address_range)
> > > +    	    	    	 Octstr *address_range, int
> > > source_addr_ton,
> > > +                         int source_addr_npi, int
> > > dest_addr_ton,
> > > +                         int dest_addr_npi,
> > > +                         int throughput, int
> > > priority)
> > >  {
> > >      SMPP *smpp;
> > >      
> > > @@ -97,6 +106,14 @@
> > >      smpp->username = octstr_duplicate(username);
> > >      smpp->password = octstr_duplicate(password);
> > >      smpp->address_range =
> > > octstr_duplicate(address_range);
> > > +    smpp->source_addr_ton = source_addr_ton;
> > > +    smpp->source_addr_npi = source_addr_npi;
> > > +    smpp->dest_addr_ton = dest_addr_ton;
> > > +    smpp->dest_addr_npi = dest_addr_npi;
> > > +    
> > > +    smpp->throughput = throughput;
> > > +    smpp->priority = priority;
> > > +    
> > >      smpp->transmit_port = transmit_port;
> > >      smpp->receive_port = receive_port;
> > >      smpp->quitting = 0;
> > > @@ -207,33 +224,45 @@
> > >      pdu = smpp_pdu_create(submit_sm, 
> > >      	    	    	 
> > > counter_increase(smpp->message_id_counter));
> > >      	    	   
> > > -    pdu->u.submit_sm.dest_addr_ton =
> > > GSM_ADDR_TON_NATIONAL; /* national */
> > > -    pdu->u.submit_sm.source_addr_ton =
> > > GSM_ADDR_TON_NATIONAL; /* national */
> > > -    pdu->u.submit_sm.source_addr_npi =
> > > GSM_ADDR_NPI_E164; /* ISDN number plan */
> > > -    pdu->u.submit_sm.dest_addr_npi =
> > > GSM_ADDR_NPI_E164; /* ISDN number plan */
> > > -    
> > >      pdu->u.submit_sm.source_addr =
> > > octstr_duplicate(msg->sms.sender);
> > >      pdu->u.submit_sm.destination_addr =
> > > octstr_duplicate(msg->sms.receiver);
> > > +
> > > +    /* Check for manual override of source ton and
> > > npi values */
> > > +    if(smpp->source_addr_ton > -1 &&
> > > smpp->source_addr_npi > -1) {
> > > +        pdu->u.submit_sm.source_addr_ton =
> > > smpp->source_addr_ton;
> > > +        pdu->u.submit_sm.source_addr_npi =
> > > smpp->source_addr_npi;
> > > +    } else {
> > > +        pdu->u.submit_sm.source_addr_ton =
> > > GSM_ADDR_TON_NATIONAL; /* national */
> > > +        pdu->u.submit_sm.source_addr_npi =
> > > GSM_ADDR_NPI_E164; /* ISDN number plan */
> > >   
> > > -    /* lets see if its international or
> > > alphanumeric sender */
> > > -    if(
> > > octstr_get_char(pdu->u.submit_sm.source_addr,0) ==
> > > '+') {
> > > -        if
> > > (!octstr_check_range(pdu->u.submit_sm.source_addr,
> > > 1, 256, gw_isdigit)) {
> > > -     	    pdu->u.submit_sm.source_addr_ton =
> > > GSM_ADDR_TON_ALPHANUMERIC; /* alphanum */
> > > -   	    pdu->u.submit_sm.source_addr_npi =
> > > GSM_ADDR_NPI_UNKNOWN;
> > > -    	}
> > > -        else {
> > > -	    /* numeric sender address with + in front ->
> > > international*/
> > > -	   
> > > octstr_delete(pdu->u.submit_sm.source_addr,0,1);
> > > -           pdu->u.submit_sm.source_addr_ton =
> > > GSM_ADDR_TON_INTERNATIONAL;
> > > -	}
> > > -    }
> > > -    else    {
> > > -	if
> > > (!octstr_check_range(pdu->u.submit_sm.source_addr,0,
> > > 256, gw_isdigit)) {
> > > -   	    pdu->u.submit_sm.source_addr_ton =
> > > GSM_ADDR_TON_ALPHANUMERIC;
> > > -   	    pdu->u.submit_sm.source_addr_npi =
> > > GSM_ADDR_NPI_UNKNOWN;
> > > -   	}
> > > +        /* lets see if its international or
> > > alphanumeric sender */
> > > +        if(
> > > octstr_get_char(pdu->u.submit_sm.source_addr,0) ==
> > > '+') {
> > > +            if
> > > (!octstr_check_range(pdu->u.submit_sm.source_addr,
> > > 1, 256, gw_isdigit)) {
> > > +     	        pdu->u.submit_sm.source_addr_ton =
> > > GSM_ADDR_TON_ALPHANUMERIC; /* alphanum */
> > > +   	        pdu->u.submit_sm.source_addr_npi =
> > > GSM_ADDR_NPI_UNKNOWN;
> > > +        	}
> > > +            else {
> > > +	        /* numeric sender address with + in front
> > > -> international*/
> > > +	       
> > > octstr_delete(pdu->u.submit_sm.source_addr,0,1);
> > > +               pdu->u.submit_sm.source_addr_ton =
> > > GSM_ADDR_TON_INTERNATIONAL;
> > > +    	    }
> > > +        }
> > > +        else    {
> > > +    	    if
> > > (!octstr_check_range(pdu->u.submit_sm.source_addr,0,
> > > 256, gw_isdigit)) {
> > > +   	        pdu->u.submit_sm.source_addr_ton =
> > > GSM_ADDR_TON_ALPHANUMERIC;
> > > +   	        pdu->u.submit_sm.source_addr_npi =
> > > GSM_ADDR_NPI_UNKNOWN;
> > > +   	    }
> > > +        }
> > > +    } 
> > > +
> > > +    /* Check for manual override of destination ton
> > > and npi values */
> > > +    if(smpp->dest_addr_ton > -1 &&
> > > smpp->dest_addr_npi > -1) {
> > > +        pdu->u.submit_sm.dest_addr_ton =
> > > smpp->dest_addr_ton;
> > > +        pdu->u.submit_sm.dest_addr_npi =
> > > smpp->dest_addr_npi;
> > > 
> > === message truncated === 
> > 
> > __________________________________________________
> > Do You Yahoo!?
> > Everything you'll ever need on one web page
> > from News and Sport to Email and Music Charts
> > http://uk.my.yahoo.com
> 
> 

-- 
Alex Judd
http://www.skywire.co.uk
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.