From 79ff8633107763ffaf12f94d4300900a4926d2eb Mon Sep 17 00:00:00 2001 From: abdulazizali77 Date: Fri, 9 Mar 2018 20:34:32 +0800 Subject: [PATCH] RESTCOM-1927: Workaround, hardcode submit_sm encoding to UTF-8. Fix decoding. --- .../src/main/java/org/restcomm/connect/sms/SmsSession.java | 2 ++ .../org/restcomm/connect/sms/smpp/SmppClientOpsThread.java | 7 +++++-- .../org/restcomm/connect/sms/smpp/SmppMessageHandler.java | 4 +++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/restcomm/restcomm.sms/src/main/java/org/restcomm/connect/sms/SmsSession.java b/restcomm/restcomm.sms/src/main/java/org/restcomm/connect/sms/SmsSession.java index f0b8c9b9b8..db1f3b05a1 100644 --- a/restcomm/restcomm.sms/src/main/java/org/restcomm/connect/sms/SmsSession.java +++ b/restcomm/restcomm.sms/src/main/java/org/restcomm/connect/sms/SmsSession.java @@ -188,6 +188,8 @@ private void inbound(final Object message) throws IOException { if(request.getSmppEncoding().equals(CharsetUtil.CHARSET_UCS_2)) { encoding = SmsSessionRequest.Encoding.UCS_2; } else { + //FIXME: unused, due to hardcoded encoding in SmppMessageHandler + //quick fix for https://telestax.atlassian.net/browse/RESTCOMM-1927 encoding = SmsSessionRequest.Encoding.GSM; } // Store the last sms event. diff --git a/restcomm/restcomm.sms/src/main/java/org/restcomm/connect/sms/smpp/SmppClientOpsThread.java b/restcomm/restcomm.sms/src/main/java/org/restcomm/connect/sms/smpp/SmppClientOpsThread.java index 246b5445b0..99e932d083 100644 --- a/restcomm/restcomm.sms/src/main/java/org/restcomm/connect/sms/smpp/SmppClientOpsThread.java +++ b/restcomm/restcomm.sms/src/main/java/org/restcomm/connect/sms/smpp/SmppClientOpsThread.java @@ -352,15 +352,18 @@ public PduResponse firePduRequestReceived(PduRequest pduRequest) { DeliverSm deliverSm = (DeliverSm) pduRequest; try { - String decodedPduMessage = CharsetUtil.CHARSET_MODIFIED_UTF8.decode(deliverSm.getShortMessage()); + String decodedPduMessage; String destSmppAddress = deliverSm.getDestAddress().getAddress(); String sourceSmppAddress = deliverSm.getSourceAddress().getAddress(); Charset charset; if (DataCoding.DATA_CODING_UCS2 == deliverSm.getDataCoding()) { charset = CharsetUtil.CHARSET_UCS_2; } else { - charset = CharsetUtil.CHARSET_GSM; + //FIXME: quick fix for https://telestax.atlassian.net/browse/RESTCOMM-1927 + charset = CharsetUtil.CHARSET_UTF_8; } + //FIXME: Workaround RESTCOMM-1927 + decodedPduMessage = charset.decode(deliverSm.getShortMessage()); //send received SMPP PDU message to restcomm try { sendSmppMessageToRestcomm(decodedPduMessage, destSmppAddress, sourceSmppAddress, charset); diff --git a/restcomm/restcomm.sms/src/main/java/org/restcomm/connect/sms/smpp/SmppMessageHandler.java b/restcomm/restcomm.sms/src/main/java/org/restcomm/connect/sms/smpp/SmppMessageHandler.java index ce9a0e3320..35e6ad868c 100644 --- a/restcomm/restcomm.sms/src/main/java/org/restcomm/connect/sms/smpp/SmppMessageHandler.java +++ b/restcomm/restcomm.sms/src/main/java/org/restcomm/connect/sms/smpp/SmppMessageHandler.java @@ -361,7 +361,9 @@ public void outbound(SmppOutboundMessageEntity request) throws SmppInvalidArgume textBytes = CharsetUtil.encode(request.getSmppContent(), CharsetUtil.CHARSET_UCS_2); } else { submit0.setDataCoding(DataCoding.DATA_CODING_GSM7); - textBytes = CharsetUtil.encode(request.getSmppContent(), request.getSmppEncoding()); + + //FIXME: quick fix for https://telestax.atlassian.net/browse/RESTCOMM-1927 + textBytes = CharsetUtil.encode(request.getSmppContent(), CharsetUtil.CHARSET_UTF_8); } //TODO reverted from https://telestax.atlassian.net/browse/RESTCOMM-1595 as it caused SMS loop at SMSC