Skip to content

Commit

Permalink
Fix for HTTP SBB NPE when checking initial HTTP event (apache HttpReq…
Browse files Browse the repository at this point in the history
…uest returns null RequestURL sometimes...).

Conflicts:
	core/slee/services/sbbs/src/main/java/org/mobicents/smsc/slee/services/http/server/tx/TxHttpServerSbb.java
  • Loading branch information
ovoo-unif authored and vetss committed Mar 12, 2018
1 parent 2954c79 commit b1d1e47
Showing 1 changed file with 23 additions and 37 deletions.
Expand Up @@ -41,15 +41,12 @@
import org.mobicents.smsc.slee.services.http.server.tx.utils.ResponseFormatter;
import org.mobicents.smsc.slee.services.submitsbb.SubmitCommonSbb;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.slee.*;
import javax.slee.serviceactivity.ServiceActivity;
import javax.slee.serviceactivity.ServiceStartedEvent;
import java.io.IOException;
import java.nio.charset.Charset;
import java.sql.Timestamp;
import java.util.*;

Expand All @@ -64,49 +61,49 @@ public abstract class TxHttpServerSbb extends SubmitCommonSbb implements Sbb {
private SmscStatAggregator smscStatAggregator = SmscStatAggregator.getInstance();
private SmscCongestionControl smscCongestionControl = SmscCongestionControl.getInstance();

private static Charset utf8Charset = Charset.forName("UTF-8");
private static Charset ucs2Charset = Charset.forName("UTF-16BE");
private static final String GET = "GET";
private static final String POST = "POST";

private final String GET = "GET";
private final String POST = "POST";

private final String SEND_SMS = "sendSms";
private final String MSG_QUERY = "msgQuery";
private static final String SEND_SMS = "sendSms";
private static final String MSG_QUERY = "msgQuery";

public TxHttpServerSbb() {
super(className);
}

public InitialEventSelector isInitialHttpRequestEvent(final InitialEventSelector ies) {
if (logger.isFinestEnabled()) {
logger.finest("incomming http event: " + ies.getEvent());
logger.finest("Incomming HTTP event: " + ies.getEvent() + ".");
}

final Object event = ies.getEvent();
if (event instanceof HttpServletRequestEvent) {
HttpServletRequest request = ((HttpServletRequestEvent) event).getRequest();
String requestURL = request.getRequestURL().toString();
if (request.getMethod().equals(GET)) {
String[] tmp = requestURL.split("\\?");
if (tmp[0].endsWith(SEND_SMS) || tmp[0].endsWith(MSG_QUERY)) {
ies.setInitialEvent(true);
return ies;
}
} else if (request.getMethod().equals(POST) && (requestURL.endsWith(SEND_SMS) || requestURL.endsWith(MSG_QUERY))) {
if (isInitialHttpRequest(((HttpServletRequestEvent) event).getRequest())) {
ies.setInitialEvent(true);
return ies;
} else {
if (logger.isFinestEnabled()) {
logger.finest(request.getMethod() + " this method is not supported!");
}
}
}
ies.setInitialEvent(false);
if (logger.isFinestEnabled()) {
logger.finest("this is not an initial event!");
logger.finest("This is not our initial event!");
}
return ies;
}

private boolean isInitialHttpRequest(final HttpServletRequest aRequest) {
final String uri = aRequest.getRequestURI();
if (uri == null) {
return false;
}
if (GET.equals(aRequest.getMethod())) {
final String[] tmp = uri.split("\\?");
return tmp[0].endsWith(SEND_SMS) || tmp[0].endsWith(MSG_QUERY);
}
if (POST.equals(aRequest.getMethod())) {
return uri.endsWith(SEND_SMS) || uri.endsWith(MSG_QUERY);
}
logger.warning("Request method " + aRequest.getMethod() + " is not supported!");
return false;
}

public void onHttpGet(HttpServletRequestEvent event, ActivityContextInterface aci) {
logger.fine("onHttpGet");
Expand Down Expand Up @@ -619,17 +616,6 @@ private void generateCDR(HttpSendMessageIncomingData data, String status, String
smscPropertiesManagement.getCalculateMsgPartsLenCdr(), smscPropertiesManagement.getDelayParametersInCdr());
}

@Override
public void setSbbContext(SbbContext sbbContext) {
super.setSbbContext(sbbContext);

try {
Context ctx = (Context) new InitialContext().lookup("java:comp/env");
} catch (Exception ne) {
logger.severe("Could not set SBB context:", ne);
}
}

@Override
public void sbbLoad() {
super.sbbLoad();
Expand Down

0 comments on commit b1d1e47

Please sign in to comment.