Hi, as far as I know, tis is not allowed to ave multiple parts in different data coding.
Thanks, Alex > Am 22.02.2018 um 00:20 schrieb Nic Pottier <nicpott...@gmail.com>: > > Hi all, > > Use Kannel quite a bit, thanks for all the work. I've run into an > interesting issue which I'm not sure whether to blame on Kannel or the > SMSC. When a multi-part message comes through where some parts are > GSM7 and some parts are UTF16, Kannel combines the parts naively as > bytes and therefore leads to a corrupt message. > > Example below with 4 parts. Note that part 1 has a coding of 8, while > the others are plain GSM7 with coding of 0. But when the final part is > received Kannel simply concatenates the bytes from all the parts, > leading to a mix of single and multi-byte message, which is obviously > corrupt. (immediately below) > > Is this valid SMPP traffic? (to use separate encodings for each of the > parts of a segmented message) I do notice that the GSM7 parts (2-4) > while definitely encoded as GSM7 are only 73 characters long which > seems suspicious. At the same time, it seems Kannel should be > converting these all to unicode internally and then appending them > instead of just appending the bytes. So could see this being an > argument that Kannel is wrong here. > > This is on version 1.4.4 > > Octet string at 0x7f191880ebe0: > len: 283 > size: 1024 > immutable: 0 > data: 00 45 00 75 00 20 00 74 00 69 00 76 00 20 00 75 .E.u. .t.i.v. .u > data: 00 6d 00 61 00 20 00 72 00 65 00 6c 00 61 00 e7 .m.a. .r.e.l.a.. > data: 00 61 00 6f 00 20 00 64 00 65 00 73 00 70 00 72 .a.o. .d.e.s.p.r > data: 00 6f 00 74 00 65 00 67 00 69 00 64 00 61 00 20 .o.t.e.g.i.d.a. > data: 00 6e 00 6f 00 20 00 6d 00 65 00 73 00 20 00 70 .n.o. .m.e.s. .p > data: 00 61 00 73 00 73 00 61 00 64 00 6f 00 20 00 65 .a.s.s.a.d.o. .e > data: 00 20 00 f1 00 20 00 76 00 69 00 20 00 6d 00 65 . ... .v.i. .m.e > data: 00 73 00 74 00 72 00 75 00 61 00 e7 00 61 00 6f .s.t.r.u.a...a.o > data: 00 20 00 70 00 6f 72 71 20 65 72 61 20 61 6e 74 . .p.orq era ant > data: 65 73 20 64 65 20 76 65 72 20 6e 61 71 75 65 6c es de ver naquel > data: 65 20 6d 65 73 20 6d 61 73 20 64 65 70 6f 69 73 e mes mas depois > data: 20 6e 6f 20 69 6e 69 63 69 6f 20 64 65 73 74 65 no inicio deste > data: 20 65 6d 20 63 75 72 73 6f 20 76 69 20 75 6d 61 em curso vi uma > data: 73 20 67 6f 74 61 73 20 64 65 20 73 61 6e 67 75 s gotas de sangu > data: 65 20 6d 61 73 20 6d 75 69 74 6f 20 63 61 72 72 e mas muito carr > data: 65 67 61 64 61 20 64 75 72 61 6e 74 65 20 64 6f egada durante do > data: 69 73 20 64 69 61 73 2e 73 65 72 61 71 20 73 74 is dias.seraq st > data: 6f 75 20 67 72 61 76 69 64 61 3f ou gravida? > Octet string dump ends. > > ------------------------------------------------------------------------ > Part 1 delivered: > > SMPP PDU 0x7f191880cb40 dump: > type_name: deliver_sm > command_id: 5 = 0x00000005 > command_status: 0 = 0x00000000 > sequence_number: 294621 = 0x00047edd > service_type: NULL > source_addr_ton: 1 = 0x00000001 > source_addr_npi: 1 = 0x00000001 > source_addr: "258844096933" > dest_addr_ton: 0 = 0x00000000 > dest_addr_npi: 1 = 0x00000001 > destination_addr: "92222" > esm_class: 64 = 0x00000040 > protocol_id: 0 = 0x00000000 > priority_flag: 0 = 0x00000000 > schedule_delivery_time: NULL > validity_period: NULL > registered_delivery: 0 = 0x00000000 > replace_if_present_flag: 0 = 0x00000000 > data_coding: 8 = 0x00000008 > sm_default_msg_id: 0 = 0x00000000 > sm_length: 140 = 0x0000008c > short_message: > Octet string at 0x7f191880cd70: > len: 140 > size: 141 > immutable: 0 > data: 05 00 03 0d 04 01 00 45 00 75 00 20 00 74 00 69 .......E.u. .t.i > data: 00 76 00 20 00 75 00 6d 00 61 00 20 00 72 00 65 .v. .u.m.a. .r.e > data: 00 6c 00 61 00 e7 00 61 00 6f 00 20 00 64 00 65 .l.a...a.o. .d.e > data: 00 73 00 70 00 72 00 6f 00 74 00 65 00 67 00 69 .s.p.r.o.t.e.g.i > data: 00 64 00 61 00 20 00 6e 00 6f 00 20 00 6d 00 65 .d.a. .n.o. .m.e > data: 00 73 00 20 00 70 00 61 00 73 00 73 00 61 00 64 .s. .p.a.s.s.a.d > data: 00 6f 00 20 00 65 00 20 00 f1 00 20 00 76 00 69 .o. .e. ... .v.i > data: 00 20 00 6d 00 65 00 73 00 74 00 72 00 75 00 61 . .m.e.s.t.r.u.a > data: 00 e7 00 61 00 6f 00 20 00 70 00 6f ...a.o. .p.o > Octet string dump ends. > SMPP PDU dump ends. > SMPP[unicef_mz_vodacom]: UDH length read as 6 > Got part 1 [ref 13, total parts 4] of message from +258844096933. Dump > follows: > > ------------------------------------------------------------------------ > Part 2 delivered: > > SMPP PDU 0x7f1918809240 dump: > type_name: deliver_sm > command_id: 5 = 0x00000005 > command_status: 0 = 0x00000000 > sequence_number: 294618 = 0x00047eda > service_type: NULL > source_addr_ton: 1 = 0x00000001 > source_addr_npi: 1 = 0x00000001 > source_addr: "258844096933" > dest_addr_ton: 0 = 0x00000000 > dest_addr_npi: 1 = 0x00000001 > destination_addr: "92222" > esm_class: 64 = 0x00000040 > protocol_id: 0 = 0x00000000 > priority_flag: 0 = 0x00000000 > schedule_delivery_time: NULL > validity_period: NULL > registered_delivery: 0 = 0x00000000 > replace_if_present_flag: 0 = 0x00000000 > data_coding: 0 = 0x00000000 > sm_default_msg_id: 0 = 0x00000000 > sm_length: 73 = 0x00000049 > short_message: > Octet string at 0x7f1918811130: > len: 73 > size: 74 > immutable: 0 > data: 05 00 03 0d 04 02 72 71 20 65 72 61 20 61 6e 74 ......rq era ant > data: 65 73 20 64 65 20 76 65 72 20 6e 61 71 75 65 6c es de ver naquel > data: 65 20 6d 65 73 20 6d 61 73 20 64 65 70 6f 69 73 e mes mas depois > data: 20 6e 6f 20 69 6e 69 63 69 6f 20 64 65 73 74 65 no inicio deste > data: 20 65 6d 20 63 75 72 73 6f em curso > Octet string dump ends. > SMPP PDU dump ends. > SMPP[unicef_mz_vodacom]: UDH length read as 6 > Got part 2 [ref 13, total parts 4] of message from +258844096933. Dump > follows: > > ------------------------------------------------------------------------ > Part 3 delivered: > > SMPP PDU 0x7f1918809240 dump: > type_name: deliver_sm > command_id: 5 = 0x00000005 > command_status: 0 = 0x00000000 > sequence_number: 294612 = 0x00047ed4 > service_type: NULL > source_addr_ton: 1 = 0x00000001 > source_addr_npi: 1 = 0x00000001 > source_addr: "258844096933" > dest_addr_ton: 0 = 0x00000000 > dest_addr_npi: 1 = 0x00000001 > destination_addr: "92222" > esm_class: 64 = 0x00000040 > protocol_id: 0 = 0x00000000 > priority_flag: 0 = 0x00000000 > schedule_delivery_time: NULL > validity_period: NULL > registered_delivery: 0 = 0x00000000 > replace_if_present_flag: 0 = 0x00000000 > data_coding: 0 = 0x00000000 > sm_default_msg_id: 0 = 0x00000000 > sm_length: 73 = 0x00000049 > short_message: > Octet string at 0x7f191880be80: > len: 73 > size: 74 > immutable: 0 > data: 05 00 03 0d 04 03 20 76 69 20 75 6d 61 73 20 67 ...... vi umas g > data: 6f 74 61 73 20 64 65 20 73 61 6e 67 75 65 20 6d otas de sangue m > data: 61 73 20 6d 75 69 74 6f 20 63 61 72 72 65 67 61 as muito carrega > data: 64 61 20 64 75 72 61 6e 74 65 20 64 6f 69 73 20 da durante dois > data: 64 69 61 73 2e 73 65 72 61 dias.sera > Octet string dump ends. > SMPP PDU dump ends. > SMPP[unicef_mz_vodacom]: UDH length read as 6 > Got part 3 [ref 13, total parts 4] of message from +258844096933. Dump > follows: > > ------------------------------------------------------------------------ > Part 4 delivered: > > SMPP PDU 0x7f1918809240 dump: > type_name: deliver_sm > command_id: 5 = 0x00000005 > command_status: 0 = 0x00000000 > sequence_number: 294608 = 0x00047ed0 > service_type: NULL > source_addr_ton: 1 = 0x00000001 > source_addr_npi: 1 = 0x00000001 > source_addr: "258844096933" > dest_addr_ton: 0 = 0x00000000 > dest_addr_npi: 1 = 0x00000001 > destination_addr: "92222" > esm_class: 64 = 0x00000040 > protocol_id: 0 = 0x00000000 > priority_flag: 0 = 0x00000000 > schedule_delivery_time: NULL > validity_period: NULL > registered_delivery: 0 = 0x00000000 > replace_if_present_flag: 0 = 0x00000000 > data_coding: 0 = 0x00000000 > sm_default_msg_id: 0 = 0x00000000 > sm_length: 21 = 0x00000015 > short_message: > Octet string at 0x7f1918800d30: > len: 21 > size: 22 > immutable: 0 > data: 05 00 03 0d 04 04 71 20 73 74 6f 75 20 67 72 61 ......q stou gra > data: 76 69 64 61 3f vida? > Octet string dump ends. > SMPP PDU dump ends. > SMPP[unicef_mz_vodacom]: UDH length read as 6 > Got part 4 [ref 13, total parts 4] of message from +258844096933. Dump > follows: >