Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6ac55087 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Expose parsing util methods for telephony validation" am: 5092ae8c...

Merge "Expose parsing util methods for telephony validation" am: 5092ae8c am: 2bf2f964 am: ad03a4a1

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1665959

Change-Id: I9116d44ad96ac2a4af5631541c6b27fe1813c81d
parents a344e94e ad03a4a1
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -80,6 +80,15 @@ public class SipMessageParsingUtils {
        return verifySipRequest(splitLine);
    }

    /**
     * @return true if the SIP message start line is considered a response.
     */
    public static boolean isSipResponse(String startLine) {
        String[] splitLine = splitStartLineAndVerify(startLine);
        if (splitLine == null) return false;
        return verifySipResponse(splitLine);
    }

    /**
     * Return the via branch parameter, which is used to identify the transaction ID (request and
     * response pair) in a SIP transaction.
@@ -140,7 +149,12 @@ public class SipMessageParsingUtils {
        return !headers.isEmpty() ? headers.get(0).second : null;
    }

    private static String[] splitStartLineAndVerify(String startLine) {
    /**
     * Validate that the start line is correct and split into its three segments.
     * @param startLine The start line to verify and split.
     * @return The split start line, which will always have three segments.
     */
    public static String[] splitStartLineAndVerify(String startLine) {
        String[] splitLine = startLine.split(" ");
        if (isStartLineMalformed(splitLine)) return null;
        return splitLine;
@@ -184,7 +198,7 @@ public class SipMessageParsingUtils {
     *                           (This is internally an equalsIgnoreMatch comparison).
     * @return the matched header keys and values.
     */
    private static List<Pair<String, String>> parseHeaders(String headerString,
    public static List<Pair<String, String>> parseHeaders(String headerString,
            boolean stopAtFirstMatch, String... matchingHeaderKeys) {
        // Ensure there is no leading whitespace
        headerString = removeLeadingWhitespace(headerString);
+7 −2
Original line number Diff line number Diff line
@@ -81,13 +81,18 @@ public class SipDelegateManager {
    public static final int MESSAGE_FAILURE_REASON_DELEGATE_CLOSED = 2;

    /**
     * The SIP message has an invalid start line and the message can not be sent.
     * The SIP message has an invalid start line and the message can not be sent or the start line
     * failed validation due to the request containing a restricted SIP request method.
     * {@link SipDelegateConnection}s can not send SIP requests for the methods: REGISTER, PUBLISH,
     * or OPTIONS.
     */
    public static final int MESSAGE_FAILURE_REASON_INVALID_START_LINE = 3;

    /**
     * One or more of the header fields in the header section of the outgoing SIP message is invalid
     * and the SIP message can not be sent.
     * or contains a restricted header value and the SIP message can not be sent.
     * {@link SipDelegateConnection}s can not send SIP SUBSCRIBE requests for the "Event" header
     * value of "presence".
     */
    public static final int MESSAGE_FAILURE_REASON_INVALID_HEADER_FIELDS = 4;