Hello,
I was looking forward for this bug and it appears that the code is not clear
on the transcoding (see below), does someone know why the transcoding is
done in at_smsc :
debug("bb.smsc.at2", 0, "AT2[%s]: Udh decoding done len=%d udhi=%d
udhlen=%d udh='%s'",
octstr_get_cstr(privdata->name), len, udhi, udhlen, (udh ?
octstr_get_cstr(udh) : ""));
if (pos > octstr_len(pdu) || len < 0)
goto msg_error;
/* build the message */
message = msg_create(sms);
if (!dcs_to_fields(&message, dcs)) {
/* XXX Should reject this message? */
debug("bb.smsc.at2", 0, "AT2[%s]: Invalid DCS",
octstr_get_cstr(privdata->name));
dcs_to_fields(&message, 0);
}
message->sms.pid = pid;
/* deal with the user data -- 7 or 8 bit encoded */
tmpstr = octstr_copy(pdu, pos, len);
if (message->sms.coding == DC_8BIT || message->sms.coding == DC_UCS2) {
text = octstr_duplicate(tmpstr);
} else {
int offset = 0;
text = octstr_create("");
if (udhi && message->sms.coding == DC_7BIT) {
int nbits;
nbits = (udhlen + 1) * 8;
/* fill bits for UDH to septet boundary */
offset = (((nbits / 7) + 1) * 7 - nbits) % 7;
}
at2_decode7bituncompressed(tmpstr, len, text, offset);
}
message->sms.sender = origin;
if (octstr_len(privdata->my_number)) {
message->sms.receiver = octstr_duplicate(privdata->my_number);
} else {
/* Put a dummy address in the receiver for now (SMSC requires one)
*/
message->sms.receiver = octstr_create_from_data("1234", 4);
}
if (udhi) {
message->sms.udhdata = udh;
}
message->sms.msgdata = text;
message->sms.time = stime;
/* cleanup */
octstr_destroy(pdu);
octstr_destroy(tmpstr);
return message;
-----Original Message-----
From: info.ubichip [mailto:[EMAIL PROTECTED]
Sent: jeudi 15 mai 2008 01:11
To: [email protected]
Subject: Strange msg data conversion in pdu : kannel bug ?
Hello,
I got a strange behavior from kannel.
Here is the log from the bearerbox that show a message arrived :
2008-05-15 08:53:48 [26800] [6] DEBUG: AT2[GSM0]: <--
07913366003000F0240B913366496236F90000805051
80054080A01354005000000000000000000000000000704A200A0F0103134010D267B2985C3E
9B5D924421000000000000
000000000000000000000000000000000000000000000000040A020000000000000000000000
0000000000000000000000
0000000000000000000000061D95A841186C340A010000000000000000000000000000000000
000000000000000000
2008-05-15 08:53:48 [26800] [6] DEBUG: AT2[GSM0]: received message from
SMSC: +33660003000
2008-05-15 08:53:48 [26800] [6] DEBUG: AT2[GSM0]: Numeric sender
(international) <+33669426639>
2008-05-15 08:53:48 [26800] [6] DEBUG: AT2[GSM0]: User data length read as
(160)
2008-05-15 08:53:48 [26800] [6] DEBUG: AT2[GSM0]: Udh decoding done len=160
udhi=0 udhlen=0 udh=''
2008-05-15 08:53:48 [26800] [12] DEBUG: send_msg: sending msg to box:
<127.0.0.1>
2008-05-15 08:53:48 [26800] [12] DEBUG: boxc_sender: sent message to
<127.0.0.1>
I assumed the user data (length=0A=160) is :
1354005000000000000000000000000000704A200A0F0103134010D267B2985C3E9B5D924421
000000000000
000000000000000000000000000000000000000000000000040A020000000000000000000000
0000000000000000000000
0000000000000000000000061D95A841186C340A010000000000000000000000000000000000
000000000000000000
Then the message is transmit to the smsbox :
2008-05-15 08:50:08 [26835] [0] INFO: Connected to bearerbox at 127.0.0.1
port 13003.
2008-05-15 08:53:48 [26835] [4] INFO: Starting to service
<?([EMAIL PROTECTED]@@@@@@@@@@@@@@@\'Çòéå$ø?£òèigdbdeg
è¥?Çé£@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@£é$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@¥æ*"
$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@> from <+33yyyyyyyy> to <003xxxxxxxx>
And then the transmit data to the web server throug a sms service :
"GET
/INSMS.jsp?t=2008-05-15+06:56:03&q=%2B3366942xx39&coding=0&charset=ISO-8859-
1&a=%3F(%A3%40%E9%A3%40%40%40%40%40%40%40%40%40%40%40%40%3F%40%5C'+%F2%E9%E5
%F27%40%A3+%E8jhdbdfhh*%C5%E8%A3%40%40%40%40%40%40%40%40%40%40%40%40%40%40%4
0%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%A3%E9%24%40%40
%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%
40%40%40%40%40%40%40%40%40%40%40%A5%C6%26%C9%F8%A5%E9%DF+%E8%A3%40%40%40%40%
40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40
I don't understand why kannel doesn't transmit the orginal 1354.... And why
it is making strange caracters in the url such as the parenthesis or the
strange "%E8jhdbdfhh*" in the middle of the url.
Is it a bug in kannel or I forget something ? Is it a problem with url
encode or with pdu transformation ?
Please help me.