summaryrefslogtreecommitdiffstats
path: root/src/com/android/bluetooth/opp/BluetoothOppObexClientSession.java
diff options
context:
space:
mode:
authorChih-Chung Chang <chihchung@google.com>2011-11-18 19:14:51 +0800
committerJaikumar Ganesh <jaikumar@google.com>2011-11-29 11:23:10 -0800
commit0ac98162ff293fdaa23f93f9839aaad5428af537 (patch)
tree341ffe38de7aab853a4aacb1e0b8d193cb0cf561 /src/com/android/bluetooth/opp/BluetoothOppObexClientSession.java
parent0e5bc33617343b0e1cce4fa6300e1fe8103a4292 (diff)
downloadandroid_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.java12
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),