On Tue, Sep 27, 2005 at 05:28:30PM +0200, Stipe Tolj wrote: > I'm -1 on commiting the patch in the form Enver send it in. We need to add > a meta field layer in order to "pass" smsc specific values to the smsc > module layer.
I had the same problem while still working for my previous employer (i.e have to set esm_class suppose to be able to connect to one of CDMA operators in Indonesia, Telkom/Flexi). At that time, I do make it configurable through kannel config, i.e set 'submit_esm_class = 1" on smsc group. My current connection to the same operator doesn't need that setting anymore. Anyway, please take a alook at the attached patch. Regards, P.Y. Adi Prasaja
Index: gw/smsc/smsc_smpp.c =================================================================== RCS file: /home/cvs/gateway/gw/smsc/smsc_smpp.c,v retrieving revision 1.82 diff -a -u -r1.82 smsc_smpp.c --- gw/smsc/smsc_smpp.c 12 Aug 2005 16:12:58 -0000 1.82 +++ gw/smsc/smsc_smpp.c 27 Sep 2005 17:07:32 -0000 @@ -161,6 +161,7 @@ long connection_timeout; long wait_ack; int wait_ack_action; + int submit_esm_class; SMSCConn *conn; } SMPP; @@ -213,7 +214,7 @@ Octstr *my_number, int smpp_msg_id_type, int autodetect_addr, Octstr *alt_charset, Octstr *service_type, long connection_timeout, - long wait_ack, int wait_ack_action) + long wait_ack, int wait_ack_action, int submit_esm_class) { SMPP *smpp; @@ -252,6 +253,7 @@ smpp->connection_timeout = connection_timeout; smpp->wait_ack = wait_ack; smpp->wait_ack_action = wait_ack_action; + smpp->submit_esm_class = submit_esm_class; return smpp; } @@ -667,7 +669,7 @@ * set the esm_class field * default is store and forward, plus udh and rpi if requested */ - pdu->u.submit_sm.esm_class = ESM_CLASS_SUBMIT_STORE_AND_FORWARD_MODE; + pdu->u.submit_sm.esm_class = smpp->submit_esm_class; if (octstr_len(msg->sms.udhdata)) pdu->u.submit_sm.esm_class = pdu->u.submit_sm.esm_class | ESM_CLASS_SUBMIT_UDH_INDICATOR; @@ -1758,6 +1760,7 @@ int autodetect_addr; Octstr *alt_charset; long connection_timeout, wait_ack, wait_ack_action; + int submit_esm_class; my_number = alt_charset = NULL; transceiver_mode = 0; @@ -1883,13 +1886,18 @@ if (wait_ack_action > 0x03 || wait_ack_action < 0) panic(0, "SMPP: Invalid wait-ack-expire directive in configuration."); + /* submit_esm_class */ + if (cfg_get_integer((long *)&submit_esm_class, grp, octstr_imm("submit-esm-class")) == -1) + submit_esm_class = ESM_CLASS_SUBMIT_STORE_AND_FORWARD_MODE; + smpp = smpp_create(conn, host, port, receive_port, system_type, username, password, address_range, source_addr_ton, source_addr_npi, dest_addr_ton, dest_addr_npi, enquire_link_interval, max_pending_submits, version, priority, my_number, smpp_msg_id_type, autodetect_addr, alt_charset, - service_type, connection_timeout, wait_ack, wait_ack_action); + service_type, connection_timeout, wait_ack, wait_ack_action, + submit_esm_class); conn->data = smpp; conn->name = octstr_format("SMPP:%S:%d/%d:%S:%S", Index: gwlib/cfg.def =================================================================== RCS file: /home/cvs/gateway/gwlib/cfg.def,v retrieving revision 1.112 diff -a -u -r1.112 cfg.def --- gwlib/cfg.def 21 Sep 2005 02:01:22 -0000 1.112 +++ gwlib/cfg.def 27 Sep 2005 17:07:35 -0000 @@ -328,6 +328,7 @@ OCTSTR(flow-control) OCTSTR(wait-ack) OCTSTR(wait-ack-expire) + OCTSTR(submit-esm-class) OCTSTR(no-sender) OCTSTR(no-coding) OCTSTR(window)