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

Commit cf250733 authored by Lixin Yue's avatar Lixin Yue Committed by Android Git Automerger
Browse files

am 971af003: Merge change I65208317 into eclair

Merge commit '971af003' into eclair-mr2

* commit '971af003':
  Update OBEX to fix missing several contact entries issue.
parents acbd9fda 971af003
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -269,7 +269,7 @@ public final class ClientOperation implements Operation, BaseStream {

        if (mPrivateOutput == null) {
            // there are 3 bytes operation headers and 3 bytes body headers //
            mPrivateOutput = new PrivateOutputStream(this, mMaxPacketSize - 6);
            mPrivateOutput = new PrivateOutputStream(this, getMaxPacketSize());
        }

        mPrivateOutputOpen = true;
@@ -278,7 +278,13 @@ public final class ClientOperation implements Operation, BaseStream {
    }

    public int getMaxPacketSize() {
        return mMaxPacketSize - 6;
        return mMaxPacketSize - 6 - getHeaderLength();
    }

    public int getHeaderLength() {
        // OPP may need it
        byte[] headerArray = ObexHelper.createHeader(mRequestHeader, false);
        return headerArray.length;
    }

    /**
+2 −0
Original line number Diff line number Diff line
@@ -163,6 +163,8 @@ public interface Operation {

    long getLength();

    int getHeaderLength();

    String getType();

    InputStream openInputStream() throws IOException;
+42 −16
Original line number Diff line number Diff line
@@ -124,12 +124,6 @@ public final class ServerOperation implements Operation, BaseStream {
             * It is a PUT request.
             */
            mGetOperation = false;
        } else {
            /*
             * It is a GET request.
             */
            mGetOperation = true;
        }

            /*
             * Determine if the final bit is set
@@ -140,6 +134,21 @@ public final class ServerOperation implements Operation, BaseStream {
                finalBitSet = true;
                mRequestFinished = true;
            }
        } else if ((request == 0x03) || (request == 0x83)) {
            /*
             * It is a GET request.
             */
            mGetOperation = true;

            // For Get request, final bit set is decided by server side logic
            finalBitSet = false;

            if (request == 0x83) {
                mRequestFinished = true;
            }
        } else {
            throw new IOException("ServerOperation can not handle such request");
        }

        int length = in.read();
        length = (length << 8) + in.read();
@@ -216,12 +225,9 @@ public final class ServerOperation implements Operation, BaseStream {
        }

        // wait for get request finished !!!!
        while (mGetOperation && !finalBitSet) {
        while (mGetOperation && !mRequestFinished) {
            sendReply(ResponseCodes.OBEX_HTTP_CONTINUE);
        }
        if (finalBitSet && mGetOperation) {
            mRequestFinished = true;
        }
    }

    public boolean isValidBody() {
@@ -333,6 +339,12 @@ public final class ServerOperation implements Operation, BaseStream {
            out.write(headerArray);
        }

        // For Get operation: if response code is OBEX_HTTP_OK, then this is the
        // last packet; so set finalBitSet to true.
        if (mGetOperation && type == ResponseCodes.OBEX_HTTP_OK) {
            finalBitSet = true;
        }

        if ((finalBitSet) || (headerArray.length < (mMaxPacketLength - 20))) {
            if (bodyLength > 0) {
                /*
@@ -410,9 +422,10 @@ public final class ServerOperation implements Operation, BaseStream {
                }
            } else {

                if ((headerID == ObexHelper.OBEX_OPCODE_PUT_FINAL)
                        || (headerID == ObexHelper.OBEX_OPCODE_GET_FINAL)) {
                if ((headerID == ObexHelper.OBEX_OPCODE_PUT_FINAL)) {
                    finalBitSet = true;
                } else if (headerID == ObexHelper.OBEX_OPCODE_GET_FINAL) {
                    mRequestFinished = true;
                }

                /*
@@ -584,7 +597,20 @@ public final class ServerOperation implements Operation, BaseStream {
    }

    public int getMaxPacketSize() {
        return mMaxPacketLength - 6;
        return mMaxPacketLength - 6 - getHeaderLength();
    }

    public int getHeaderLength() {
        long id = mListener.getConnectionId();
        if (id == -1) {
            replyHeader.mConnectionID = null;
        } else {
            replyHeader.mConnectionID = ObexHelper.convertToByteArray(id);
        }

        byte[] headerArray = ObexHelper.createHeader(replyHeader, false);

        return headerArray.length;
    }

    /**
@@ -623,7 +649,7 @@ public final class ServerOperation implements Operation, BaseStream {
        }

        if (mPrivateOutput == null) {
            mPrivateOutput = new PrivateOutputStream(this, mMaxPacketLength - 6);
            mPrivateOutput = new PrivateOutputStream(this, getMaxPacketSize());
        }
        mPrivateOutputOpen = true;
        return mPrivateOutput;