Hello Stipe,

Not really, I know that dcs 8 and ucs-2 are not modified, however
sms_split() transforms utf-8 to gsm dropping all non-gsm characters, so when
the message get to the smsc driver it will be utf-8 but only with gsm
characters, so in case there's a smsc accepting latin1 encoding
(iso-8859-1), and we got (for example) a msg of type mt-push submitted via
smsbox http with latin1 encoding, the smsbox convert it to utf-8 (no
characters dropped) the bearerbox call sms_split() on the utf-8 msg,
sms_split transform the utf-8 msg into gsm (dropping non gsm characteres),
and back into utf-8 (without the non gsm characters of course), then the
resulting message (or messages) in utf-8 format (but without non gsm
characters) get to the smsc driver (i'm only using smpp), and if the
alt-charset is set to iso-8859-1 (latin1, same as how we got the original
mt-push msg), it's converted from utf-8 to iso-8859-1, however the resulting
message is not going to be the same as the one we got, because all the non
gsm characters where dropped...

So, my first impression was: "this is kind of pointless" and then Alex
explain that it's unlikely for the smsc to send non-gsm characters to the
mobile (ss7 network),  so I assume that the smsc, even if it gets the
message in iso-8859-1 will convert it to gsm, dropping non gsm characters in
the process, thrust making my first impression pointless :p so everything ok
:)

The only problem is that I think there's a bug in the smsc_smpp msg_to_pdu,
the conversion from utf-8 to gsm is only done when the msg->sms.charset is
set, and I think smsbox is not setting it, so for my example i'm sending
utf-8 to the smsc, please check previews email for details:

1. got http request
2. convert payload to utf-8
3. build mt-push msg
4. send to core
5. check for re-encoding to alt-charset, if not set, convert to gsm
6. send to smsc

piont 5 is failing for me, the code is:

if (msg->sms.charset != NULL && octstr_case_compare(msg->sms.charset,
octstr_imm("GSM-03.38")) != 0)
              charset_utf8_to_gsm(pdu->u.submit_sm.short_message);

msg->sms.charset should be set on poing 3, however it is not, also if msg->
sms.charset is different than utf8 (shouldn't be however) it does the
re-encoding of utf-8 to gsm.

so my solution is to either set msg->sms.charset to UTF-8 in point 3 or
modify the if on point 5 (msg_to_pdu()) or even both!...

can you confirm this bug?

On 5/19/07, Stipe Tolj <[EMAIL PROTECTED]> wrote:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Alexander Malysh wrote:
>
> yes, you are correct but even if operator accepts utf-8 it doesn't mean
> that they will send any non gsm03.38 chars on SS7 (I assume GSM network
> here).

I think Paco means something different here.

@Paco: do you mean lossing characters while we do interal utf-8
processing,
sms_split() is called and we still have an alt-charset (ie. DCS=0x08 for
ucs-2
in SMPP) to be used?

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
- -------------------------------------------------------------------
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFGTwEH9ez0oeKvYs0RAmccAKCRM9OdRAr7U4JLyQc3ncl8kziXigCfVFEj
M7v1grNJjUDxfVxV+8gr/mo=
=S5mc
-----END PGP SIGNATURE-----


Reply via email to