--- smsdaemon/SmsPdu.cpp 2008/06/12 12:04:32 62 +++ smsdaemon/SmsPdu.cpp 2008/06/12 15:16:12 66 @@ -10,7 +10,7 @@ #include #include - +#include "common.h" #include "util.h" @@ -116,6 +116,12 @@ if (multipart) { + if (message.length() > 800) + { + Common::instance()->logMessage("Trying to send multipart sms > 800 bytes !!!"); + message = message.substr(0,800); + } + part_count = message.length() / PDU_LEN; if (message.length() % PDU_LEN) part_count++; @@ -134,7 +140,7 @@ pdu.push_back( 0x01|UDHI ); // first octet -- no timeout pdu.push_back(0x00); // TP-MR message reference pdu.push_back(to.length() ); //length of phone nr - pdu.push_back(0x91); // type of address (international nr + ISDN/telephone range) - else try 0x81 + pdu.push_back(0x81); // type of address (international nr + ISDN/telephone range) - else try 0x81 vector phone = BcdEncode(to); pdu.insert( pdu.end(), phone.begin(), phone.end()); @@ -160,7 +166,15 @@ } else { - message_part = message.substr(0,160); //truncate to 160 + if (message.length() > 160) + { + message_part = message.substr(0,160); //truncate to 160 + Common::instance()->logMessage("Truncated message"); + } + else + { + message_part = message; + } pdu.push_back( message_part.length() ); //UserDataLength }