Skip to content

Commit

Permalink
issue #216: continued to work + fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
satanatoly committed Jul 17, 2017
1 parent 8bf713d commit cb22b36
Show file tree
Hide file tree
Showing 8 changed files with 399 additions and 264 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -683,7 +683,9 @@ private void rejectSmsByDiameter(ChargingData chargingData, RoCreditControlAnswe
switch (sms.getOriginationType()) {
case SMPP:
EsmeManagement esmeManagement = EsmeManagement.getInstance();
Esme esme = esmeManagement.getEsmeByClusterName(sms.getSmsSet().getDestClusterName());
Esme esme = null;
if (esmeManagement != null)
esme = esmeManagement.getEsmeByClusterName(sms.getOrigEsmeName());
eventType = EventType.IN_SMPP_REJECT_DIAMETER;
if (esme != null) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1538,7 +1538,7 @@ protected void generateCDR(Sms sms, String status, String reason, boolean messag

protected void generateDetailedCDR(Sms sms, EventType eventType, ErrorCode errorCode, String messageType, int statusCode,
String destAddrAndPort, int seqNumber) {
CdrDetailedGenerator.generateDetailedCdr(sms, eventType, errorCode, messageType, statusCode, 0, null, destAddrAndPort,
CdrDetailedGenerator.generateDetailedCdr(sms, eventType, errorCode, messageType, statusCode, -1, null, destAddrAndPort,
seqNumber, smscPropertiesManagement.getGenerateReceiptCdr(), smscPropertiesManagement.getGenerateDetailedCdr());
}

Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -1184,14 +1184,19 @@ private void onDeliveryError(SmsSet smsSet, ErrorAction errorAction, ErrorCode s

EsmeManagement esmeManagement = EsmeManagement.getInstance();
Esme esme = esmeManagement.getEsmeByClusterName(smsSet.getDestClusterName());
String messageType = esme.getSmppSessionType() == Type.CLIENT ? CdrDetailedGenerator.CDR_MSG_TYPE_SUBMITSM
: CdrDetailedGenerator.CDR_MSG_TYPE_DELIVERSM;
String messageType = null;
String remoteAddr = null;
if (esme != null) {
messageType = esme.getSmppSessionType() == Type.CLIENT ? CdrDetailedGenerator.CDR_MSG_TYPE_SUBMITSM
: CdrDetailedGenerator.CDR_MSG_TYPE_DELIVERSM;
remoteAddr = esme.getRemoteAddressAndPort();
}
System.out.println(smsSet);

// generating of a temporary failure CDR (one record for all unsent messages)
if (smscPropertiesManagement.getGenerateTempFailureCdr()) {
this.generateTemporaryFailureCDR(CdrGenerator.CDR_TEMP_FAILED_ESME, reason);
this.generateTemporaryFailureDetailedCDR(eventType, messageType, smStatus, esme.getRemoteAddressAndPort(),
seqNumber);
this.generateTemporaryFailureDetailedCDR(eventType, messageType, smStatus, remoteAddr, seqNumber);
}

ArrayList<Sms> lstPermFailured = new ArrayList<Sms>();
Expand Down Expand Up @@ -1234,7 +1239,7 @@ private void onDeliveryError(SmsSet smsSet, ErrorAction errorAction, ErrorCode s
this.generateCDRs(lstPermFailured2, CdrGenerator.CDR_FAILED_ESME, reason);

generateDetailedCDRs(lstPermFailured2, EventType.OUT_SMPP_ERROR, smStatus, messageType,
esme.getRemoteAddressAndPort(), seqNumber);
remoteAddr, seqNumber);

// sending of intermediate delivery receipts
this.generateIntermediateReceipts(smsSet, lstTempFailured2);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -349,20 +349,27 @@ private void onSubmitSmLocal(final TxSmppServerSbbUsage anSbbUsage, final com.cl
}

// Lets send the Response with error here
long timestampB = 0L;
try {
this.smppServerSessions.sendResponsePdu(esme, event, response);
if (sms != null) {
sms.setTimestampB(System.currentTimeMillis());
generateFailureDetailedCdr(sms, EventType.IN_SMPP_REJECT_FORBIDDEN, ErrorCode.REJECT_INCOMING,
CdrDetailedGenerator.CDR_MSG_TYPE_SUBMITSM, e1.getSmppErrorCode(), esme.getRemoteAddressAndPort(),
event.getSequenceNumber());
}
timestampB = System.currentTimeMillis();
} catch (Exception e) {
anSbbUsage.incrementCounterErrorSubmitSmResponding(ONE);
this.logger.severe("Error while trying to send SubmitSmResponse. Message: " + e.getMessage() + ".\nResponse: "
+ response + ".", e);
}

if (sms != null) {
sms.setTimestampB(timestampB);
generateFailureDetailedCdr(sms, EventType.IN_SMPP_REJECT_FORBIDDEN, ErrorCode.REJECT_INCOMING,
CdrDetailedGenerator.CDR_MSG_TYPE_SUBMITSM, e1.getSmppErrorCode(), esme.getRemoteAddressAndPort(),
event.getSequenceNumber());
} else {
generateFailureDetailedCdr(event, esme, EventType.IN_SMPP_REJECT_FORBIDDEN, ErrorCode.REJECT_INCOMING,
CdrDetailedGenerator.CDR_MSG_TYPE_SUBMITSM, e1.getSmppErrorCode(), parseShortMessageText(event),
timestampB);
}

return;
} catch (Throwable e1) {
anSbbUsage.incrementCounterErrorSubmitSm(ONE);
Expand Down Expand Up @@ -533,19 +540,26 @@ private void onDataSmLocal(final TxSmppServerSbbUsage anSbbUsage, final com.clou
}

// Lets send the Response with error here
long timestampB = 0L;
try {
this.smppServerSessions.sendResponsePdu(esme, event, response);
if (sms != null) {
sms.setTimestampB(System.currentTimeMillis());
generateFailureDetailedCdr(sms, EventType.IN_SMPP_REJECT_FORBIDDEN, ErrorCode.REJECT_INCOMING,
CdrDetailedGenerator.CDR_MSG_TYPE_DATASM, e1.getSmppErrorCode(), esme.getRemoteAddressAndPort(),
event.getSequenceNumber());
}
timestampB = System.currentTimeMillis();
} catch (Exception e) {
anSbbUsage.incrementCounterErrorDataSmResponding(ONE);
this.logger.severe("Error while trying to send DataSmResponse=" + response, e);
}

if (sms != null) {
sms.setTimestampB(System.currentTimeMillis());
generateFailureDetailedCdr(sms, EventType.IN_SMPP_REJECT_FORBIDDEN, ErrorCode.REJECT_INCOMING,
CdrDetailedGenerator.CDR_MSG_TYPE_DATASM, e1.getSmppErrorCode(), esme.getRemoteAddressAndPort(),
event.getSequenceNumber());
} else {
generateFailureDetailedCdr(event, esme, EventType.IN_SMPP_REJECT_FORBIDDEN, ErrorCode.REJECT_INCOMING,
CdrDetailedGenerator.CDR_MSG_TYPE_SUBMITSM, e1.getSmppErrorCode(), parseShortMessageText(event),
timestampB);
}

return;
} catch (Throwable e1) {
anSbbUsage.incrementCounterErrorDataSm(ONE);
Expand Down Expand Up @@ -640,8 +654,10 @@ private void onSubmitMultiLocal(final TxSmppServerSbbUsage anSbbUsage, final com
}

// Lets send the Response with error here
long timestampB = 0L;
try {
this.smppServerSessions.sendResponsePdu(esme, event, response);
timestampB = System.currentTimeMillis();
} catch (Exception e) {
anSbbUsage.incrementCounterErrorSubmitMultiSmResponding(ONE);
this.logger.severe("Error while trying to send SubmitMultiResponse=" + response, e);
Expand All @@ -650,7 +666,7 @@ private void onSubmitMultiLocal(final TxSmppServerSbbUsage anSbbUsage, final com
try {
TargetAddress ta = createDestTargetAddress(event.getDestAddress(), esme.getNetworkId());
Sms sms = this.createSmsEvent(event, esme, ta, persistence);
sms.setTimestampB(System.currentTimeMillis());
sms.setTimestampB(timestampB);
generateFailureDetailedCdr(sms, EventType.IN_SMPP_REJECT_CONG, ErrorCode.REJECT_INCOMING,
CdrDetailedGenerator.CDR_MSG_TYPE_SUBMITMULTI, SmppConstants.STATUS_THROTTLED,
esme.getRemoteAddressAndPort(), event.getSequenceNumber());
Expand Down Expand Up @@ -709,20 +725,26 @@ private void onSubmitMultiLocal(final TxSmppServerSbbUsage anSbbUsage, final com
}

// Lets send the Response with error here
long timestampB = 0L;
try {
this.smppServerSessions.sendResponsePdu(esme, event, response);
if (singleSms != null) {
singleSms.setTimestampB(System.currentTimeMillis());
generateFailureDetailedCdr(singleSms, EventType.IN_SMPP_REJECT_FORBIDDEN, ErrorCode.REJECT_INCOMING,
CdrDetailedGenerator.CDR_MSG_TYPE_SUBMITMULTI, e1.getSmppErrorCode(),
esme.getRemoteAddressAndPort(), event.getSequenceNumber());
}

timestampB = System.currentTimeMillis();
} catch (Exception e) {
anSbbUsage.incrementCounterErrorSubmitMultiSmResponding(ONE);
this.logger.severe("Error while trying to send SubmitMultiResponse=" + response, e);
}

if (singleSms != null) {
singleSms.setTimestampB(timestampB);
generateFailureDetailedCdr(singleSms, EventType.IN_SMPP_REJECT_FORBIDDEN, ErrorCode.REJECT_INCOMING,
CdrDetailedGenerator.CDR_MSG_TYPE_SUBMITMULTI, e1.getSmppErrorCode(), esme.getRemoteAddressAndPort(),
event.getSequenceNumber());
} else {
generateFailureDetailedCdr(event, esme, EventType.IN_SMPP_REJECT_FORBIDDEN, ErrorCode.REJECT_INCOMING,
CdrDetailedGenerator.CDR_MSG_TYPE_SUBMITMULTI, e1.getSmppErrorCode(), parseShortMessageText(event),
timestampB);
}

return;
} catch (Throwable e1) {
anSbbUsage.incrementCounterErrorSubmitMultiSm(ONE);
Expand Down Expand Up @@ -884,19 +906,26 @@ private void onDeliverSmLocal(final TxSmppServerSbbUsage anSbbUsage, final com.c
}

// Lets send the Response with error here
long timestampB = 0L;
try {
this.smppServerSessions.sendResponsePdu(esme, event, response);
if (sms != null) {
sms.setTimestampB(System.currentTimeMillis());
generateFailureDetailedCdr(sms, EventType.IN_SMPP_REJECT_FORBIDDEN, ErrorCode.REJECT_INCOMING,
CdrDetailedGenerator.CDR_MSG_TYPE_DELIVERSM, e1.getSmppErrorCode(), esme.getRemoteAddressAndPort(),
event.getSequenceNumber());
}
timestampB = System.currentTimeMillis();
} catch (Exception e) {
anSbbUsage.incrementCounterErrorDeliverSmResponding(ONE);
this.logger.severe("Error while trying to send SubmitSmResponse=" + response, e);
}

if (sms != null) {
sms.setTimestampB(timestampB);
generateFailureDetailedCdr(sms, EventType.IN_SMPP_REJECT_FORBIDDEN, ErrorCode.REJECT_INCOMING,
CdrDetailedGenerator.CDR_MSG_TYPE_DELIVERSM, e1.getSmppErrorCode(), esme.getRemoteAddressAndPort(),
event.getSequenceNumber());
} else {
generateFailureDetailedCdr(event, esme, EventType.IN_SMPP_REJECT_FORBIDDEN, ErrorCode.REJECT_INCOMING,
CdrDetailedGenerator.CDR_MSG_TYPE_SUBMITSM, e1.getSmppErrorCode(), parseShortMessageText(event),
timestampB);
}

return;
} catch (Throwable e1) {
anSbbUsage.incrementCounterErrorDeliverSm(ONE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@

package org.mobicents.smsc.slee.services.submitsbb;

import java.util.ArrayList;

import javax.slee.ActivityContextInterface;
import javax.slee.CreateException;
import javax.slee.RolledBackContext;
Expand Down Expand Up @@ -56,8 +58,11 @@
import org.mobicents.smsc.slee.services.charging.ChargingSbbLocalObject;
import org.restcomm.smpp.Esme;
import org.restcomm.smpp.EsmeManagement;
import org.restcomm.smpp.parameter.TlvSet;

import com.cloudhopper.smpp.SmppConstants;
import com.cloudhopper.smpp.pdu.BaseSm;
import com.cloudhopper.smpp.tlv.Tlv;

import javolution.util.FastList;

Expand Down Expand Up @@ -295,12 +300,14 @@ protected void forwardMessage(Sms sms0, boolean withCharging, SmscStatAggregator
TargetAddress ta = new TargetAddress(sms.getSmsSet());
TargetAddress lock = persistence.obtainSynchroObject(ta);

String sourceAddr = null;

try {
sms.setTimestampC(System.currentTimeMillis());

if (eventTypeSuccess != null) {
if (eventTypeSuccess == EventType.IN_SMPP_RECEIVED) {
EsmeManagement esmeManagement = EsmeManagement.getInstance();
String sourceAddr = null;

if (esmeManagement != null) {
// for testing there is no EsmeManagement
Esme esme = esmeManagement.getEsmeByClusterName(sms0.getOrigEsmeName());
Expand All @@ -309,10 +316,10 @@ protected void forwardMessage(Sms sms0, boolean withCharging, SmscStatAggregator
sourceAddr = esme.getRemoteAddressAndPort();
}
}
generateDetailedCDR(sms, eventTypeSuccess, messageType, SmppConstants.STATUS_SYSERR, sourceAddr,
seqNumber);
}

generateDetailedCDR(sms, eventTypeSuccess, messageType, 0, sourceAddr, seqNumber);

sms.setTimestampA(0);
sms.setTimestampB(0);
sms.setTimestampC(0);
Expand Down Expand Up @@ -461,6 +468,24 @@ protected void generateFailureDetailedCdr(Sms sms, EventType eventType, ErrorCod
smscPropertiesManagement.getGenerateDetailedCdr());
}

protected void generateFailureDetailedCdr(BaseSm<?> event, Esme esme, EventType eventType, ErrorCode errorCode,
String messageType, int statusCode, String shortMessageText, Long timestampB) {
TlvSet tlvSet = new TlvSet();
ArrayList<Tlv> optionalParameters = event.getOptionalParameters();
if (optionalParameters != null && optionalParameters.size() > 0) {
for (Tlv tlv : optionalParameters) {
if (tlv.getTag() != SmppConstants.TAG_MESSAGE_PAYLOAD) {
tlvSet.addOptionalParameter(tlv);
}
}
}
boolean mcDeliveryReceipt = (event.getEsmClass() & Sms.ESME_DELIVERY_ACK) != 0;
CdrDetailedGenerator.generateDetailedCdr(mcDeliveryReceipt, shortMessageText, tlvSet, null, timestampB, null, null,
esme.getName(), eventType, errorCode, messageType, statusCode, -1, esme.getRemoteAddressAndPort(), null,
event.getSequenceNumber(), smscPropertiesManagement.getGenerateReceiptCdr(),
smscPropertiesManagement.getGenerateDetailedCdr());
}

protected void generateMprocFailureDetailedCdr(Sms sms, EventType eventType, ErrorCode errorCode, String messageType,
int statusCode, int mprocRuleId, String sourceAddrAndPort, int seqNumber) {
CdrDetailedGenerator.generateDetailedCdr(sms, eventType, errorCode, messageType, statusCode, mprocRuleId,
Expand Down

0 comments on commit cb22b36

Please sign in to comment.