OSDN Git Service

Incorrect response code after pull of invalid vCard handle.
authorStaffan Lindvall <staffan.lindvall.x@sonyericsson.com>
Tue, 7 Dec 2010 13:15:51 +0000 (14:15 +0100)
committerJean-Baptiste Queru <jbq@google.com>
Tue, 28 Dec 2010 19:34:15 +0000 (11:34 -0800)
When calling pullVcardEntry with an invalid / non-existing
vCard handle the response code is always "OK".

Instead the phone should respond "NOT FOUND" according
to Bluetooth PBAP specification.

The problem exists both for phonebook and call logs.

Change-Id: I339b1fe0cdb7fa9b6c6b425f1b1686c24cab9626

src/com/android/bluetooth/pbap/BluetoothPbapObexServer.java

index eccd3a2..7cd9492 100644 (file)
@@ -869,7 +869,7 @@ public class BluetoothPbapObexServer extends ServerRequestHandler {
         int size = mVcardManager.getPhonebookSize(appParamValue.needTag);
         if (size == 0) {
             if (V) Log.v(TAG, "PhonebookSize is 0, return.");
-            return ResponseCodes.OBEX_HTTP_OK;
+            return ResponseCodes.OBEX_HTTP_NOT_FOUND;
         }
 
         boolean vcard21 = appParamValue.vcard21;
@@ -879,7 +879,7 @@ public class BluetoothPbapObexServer extends ServerRequestHandler {
         } else if (appParamValue.needTag == ContentType.PHONEBOOK) {
             if (intIndex < 0 || intIndex >= size) {
                 Log.w(TAG, "The requested vcard is not acceptable! name= " + name);
-                return ResponseCodes.OBEX_HTTP_OK;
+                return ResponseCodes.OBEX_HTTP_NOT_FOUND;
             } else if (intIndex == 0) {
                 // For PB_PATH, 0.vcf is the phone number of this phone.
                 String ownerVcard = mVcardManager.getOwnerPhoneNumberVcard(vcard21);
@@ -891,7 +891,7 @@ public class BluetoothPbapObexServer extends ServerRequestHandler {
         } else {
             if (intIndex <= 0 || intIndex > size) {
                 Log.w(TAG, "The requested vcard is not acceptable! name= " + name);
-                return ResponseCodes.OBEX_HTTP_OK;
+                return ResponseCodes.OBEX_HTTP_NOT_FOUND;
             }
             // For others (ich/och/cch/mch), 0.vcf is meaningless, and must
             // begin from 1.vcf