Re: Problem with TON=1
"Alejandro Guerrieri" <[email protected]>
| Newsgroups | gmane.comp.mobile.kannel.devel |
|---|---|
| Message-ID | <[email protected]> |
*-addr-ton=1 y *-ton-npi=1 were as per operator's requirement. So they are (probably) violating some specs by setting ton=1 and using a 5 digits short number? I didn't find the 7-digits limit on SMPP 3.4 papers, but I'm sure it's there for some reason (only I wasn't able to find it). Regards, On 7/5/06, Stipe Tolj <[email protected]> wrote: > Alejandro Guerrieri wrote: > > > Dear Devels, > > > > I'm having problems receiving MO messages when addr-ton = 1 > > > > I get an error: > > > > "Mallformed addr `12345, expected at least 7 digits." > > > > I've isolated the problem to smsc_smpp.c, function convert_addr_from_pdu(): > > > > ... > > switch(ton) { > > case GSM_ADDR_TON_INTERNATIONAL: > > /* > > * Checks to perform: > > * 1) assume international number has at least 7 chars > > * 2) the whole source addr consist of digits, exception '+' in front > > */ > > if (octstr_len(addr) < 7) { > > error(0, "SMPP[%s]: Mallformed addr `%s', expected at > > least 7 digits. ", > > octstr_get_cstr(id), > > octstr_get_cstr(addr)); > > reason = SMPP_ESME_RINVSRCADR; > > goto error; > > } else if (octstr_get_char(addr, 0) == '+' && > > !octstr_check_range(addr, 1, 256, gw_isdigit)) { > > error(0, "SMPP[%s]: Mallformed addr `%s', expected all digits. ", > > octstr_get_cstr(id), > > octstr_get_cstr(addr)); > > reason = SMPP_ESME_RINVSRCADR; > > goto error; > > } else if (octstr_get_char(addr, 0) != '+' && > > !octstr_check_range(addr, 0, 256, gw_isdigit)) { > > error(0, "SMPP[%s]: Mallformed addr `%s', expected all digits. ", > > octstr_get_cstr(id), > > octstr_get_cstr(addr)); > > reason = SMPP_ESME_RINVSRCADR; > > goto error; > > } > > .... > > > > Here's a sample MO PDU triggering the problem (numbers and smsc's > > changed but preserving their original length): > > > > 2006-06-27 14:06:31 [11061] [37] DEBUG: SMPP[my-own-smsc]: Got PDU: > > 2006-06-27 14:06:31 [11061] [37] DEBUG: SMPP PDU 0x989cb08 dump: > > 2006-06-27 14:06:31 [11061] [37] DEBUG: type_name: deliver_sm > > 2006-06-27 14:06:31 [11061] [37] DEBUG: command_id: 5 = 0x00000005 > > 2006-06-27 14:06:31 [11061] [37] DEBUG: command_status: 0 = 0x00000000 > > 2006-06-27 14:06:31 [11061] [37] DEBUG: sequence_number: 1780 = 0x000006f4 > > 2006-06-27 14:06:31 [11061] [37] DEBUG: service_type: NULL > > 2006-06-27 14:06:31 [11061] [37] DEBUG: source_addr_ton: 1 = 0x00000001 > > 2006-06-27 14:06:31 [11061] [37] DEBUG: source_addr_npi: 1 = 0x00000001 > > 2006-06-27 14:06:31 [11061] [37] DEBUG: source_addr: "12345678901" > > 2006-06-27 14:06:31 [11061] [37] DEBUG: dest_addr_ton: 1 = 0x00000001 > > 2006-06-27 14:06:31 [11061] [37] DEBUG: dest_addr_npi: 1 = 0x00000001 > > 2006-06-27 14:06:31 [11061] [37] DEBUG: destination_addr: "12345" > > 2006-06-27 14:06:31 [11061] [37] DEBUG: esm_class: 0 = 0x00000000 > > 2006-06-27 14:06:31 [11061] [37] DEBUG: protocol_id: 0 = 0x00000000 > > 2006-06-27 14:06:31 [11061] [37] DEBUG: priority_flag: 0 = 0x00000000 > > 2006-06-27 14:06:31 [11061] [37] DEBUG: schedule_delivery_time: NULL > > 2006-06-27 14:06:31 [11061] [37] DEBUG: validity_period: NULL > > 2006-06-27 14:06:31 [11061] [37] DEBUG: registered_delivery: 0 = 0x00000000 > > 2006-06-27 14:06:31 [11061] [37] DEBUG: replace_if_present_flag: 0 = > > 0x00000000 > > 2006-06-27 14:06:31 [11061] [37] DEBUG: data_coding: 0 = 0x00000000 > > 2006-06-27 14:06:31 [11061] [37] DEBUG: sm_default_msg_id: 0 = 0x00000000 > > 2006-06-27 14:06:31 [11061] [37] DEBUG: sm_length: 6 = 0x00000006 > > 2006-06-27 14:06:31 [11061] [37] DEBUG: short_message: "Test 6" > > 2006-06-27 14:06:31 [11061] [37] DEBUG: SMPP PDU dump ends. > > 2006-06-27 14:06:31 [11061] [37] ERROR: SMPP[my-own-smsc]: Mallformed > > addr `12345', expected at least 7 digits. > > 2006-06-27 14:06:31 [11061] [37] DEBUG: SMPP[my-own-smsc]: Sending PDU: > > 2006-06-27 14:06:31 [11061] [37] DEBUG: SMPP PDU 0x989ba20 dump: > > 2006-06-27 14:06:31 [11061] [37] DEBUG: type_name: deliver_sm_resp > > 2006-06-27 14:06:31 [11061] [37] DEBUG: command_id: 2147483653 = 0x80000005 > > 2006-06-27 14:06:31 [11061] [37] DEBUG: command_status: 10 = 0x0000000a > > 2006-06-27 14:06:31 [11061] [37] DEBUG: sequence_number: 1780 = 0x000006f4 > > 2006-06-27 14:06:31 [11061] [37] DEBUG: message_id: NULL > > 2006-06-27 14:06:31 [11061] [37] DEBUG: SMPP PDU dump ends. > > > > Is this a bug, or really the dest address must have at least 7 digits? > > Shouldn't be the source address? I've temporarily fixed it changing > > the "7" to a "4", but I'd like to know if I'm doing something wrong > > (maybe shall I prepend the short number with an international country > > code?? I don't think so...) or if I've spotted a real bug. > > > > Note that the error thrown is SMPP_ESME_RINVSRCADR but the check is > > apparently performed over the destination_addr. Is this right? > > the destination address (if configured with dest-addr-ton = 1 in the smsc group) > has to have at least 7 digits, since a 5 digit TON=1 is not reasonable. > > What you have here is a shortcode number as destination, hence a network > internal number, that should map to TON=5. > > So simply set 'dest-addr-ton = 5' in the 'my-own-smsc' group and that's it. > > Stipe > > ------------------------------------------------------------------- > Kölner Landstrasse 419 > 40589 Düsseldorf, NRW, Germany > > tolj.org system architecture Kannel Software Foundation (KSF) > http://www.tolj.org/ http://www.kannel.org/ > > mailto:st_{at}_tolj.org mailto:stolj_{at}_kannel.org > ------------------------------------------------------------------- > -- Alejandro Guerrieri Magicom http://www.magicom-bcn.net/ LinkedIn: http://www.linkedin.com/in/aguerrieri