diff options
author | Chih-Chung Chang <chihchung@google.com> | 2011-11-18 19:14:51 +0800 |
---|---|---|
committer | Jaikumar Ganesh <jaikumar@google.com> | 2011-11-29 11:23:10 -0800 |
commit | 0ac98162ff293fdaa23f93f9839aaad5428af537 (patch) | |
tree | 341ffe38de7aab853a4aacb1e0b8d193cb0cf561 /src/com/android/bluetooth/opp/BluetoothOppObexClientSession.java | |
parent | 0e5bc33617343b0e1cce4fa6300e1fe8103a4292 (diff) | |
download | android_packages_apps_Bluetooth-0ac98162ff293fdaa23f93f9839aaad5428af537.tar.gz android_packages_apps_Bluetooth-0ac98162ff293fdaa23f93f9839aaad5428af537.tar.bz2 android_packages_apps_Bluetooth-0ac98162ff293fdaa23f93f9839aaad5428af537.zip |
Read the requested file size completely.
This was causing failures while sharing pictures
from Picassa over Bluetooth.
Bug:5632161.
Change-Id: Ieb2697513299270b2982ebc6c9f0b367adf36d3a
Diffstat (limited to 'src/com/android/bluetooth/opp/BluetoothOppObexClientSession.java')
-rw-r--r-- | src/com/android/bluetooth/opp/BluetoothOppObexClientSession.java | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/com/android/bluetooth/opp/BluetoothOppObexClientSession.java b/src/com/android/bluetooth/opp/BluetoothOppObexClientSession.java index 6efac93de..ea7e4b20a 100644 --- a/src/com/android/bluetooth/opp/BluetoothOppObexClientSession.java +++ b/src/com/android/bluetooth/opp/BluetoothOppObexClientSession.java @@ -110,6 +110,16 @@ public class BluetoothOppObexClientSession implements BluetoothOppObexSession { mThread.addShare(share); } + private static int readFully(InputStream is, byte[] buffer, int size) throws IOException { + int done = 0; + while (done < size) { + int got = is.read(buffer, done, size - done); + if (got <= 0) break; + done += got; + } + return done; + } + private class ClientThread extends Thread { private static final int sSleepTime = 500; @@ -388,7 +398,7 @@ public class BluetoothOppObexClientSession implements BluetoothOppObexSession { BufferedInputStream a = new BufferedInputStream(fileInfo.mInputStream, 0x4000); if (!mInterrupted && (position != fileInfo.mLength)) { - readLength = a.read(buffer, 0, outputBufferSize); + readLength = readFully(a, buffer, outputBufferSize); mCallback.sendMessageDelayed(mCallback .obtainMessage(BluetoothOppObexSession.MSG_CONNECT_TIMEOUT), |