From 760cf3a6e405f6035b0bb01870b677d113e1211f Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 31 Jan 2017 17:29:13 +0100 Subject: [PATCH] Fixed file transfer upload with LIME --- src/org/linphone/ChatFragment.java | 4 +--- src/org/linphone/LinphoneManager.java | 23 ++++++++++++----------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/org/linphone/ChatFragment.java b/src/org/linphone/ChatFragment.java index c0de6e861..08882b598 100644 --- a/src/org/linphone/ChatFragment.java +++ b/src/org/linphone/ChatFragment.java @@ -136,7 +136,6 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC private ChatMessageAdapter adapter; private LinphoneCoreListenerBase mListener; - private ByteArrayInputStream mUploadingImageStream; private boolean newChatConversation = false; @Override @@ -893,7 +892,6 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC if (progressDialog != null && progressDialog.isShowing()) { progressDialog.dismiss(); } - mUploadingImageStream = new ByteArrayInputStream(result); String fileName = path.substring(path.lastIndexOf("/") + 1); String extension = LinphoneUtils.getExtensionFromFileName(fileName); @@ -905,7 +903,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC message.setAppData(path); LinphoneManager.getInstance().setUploadPendingFileMessage(message); - LinphoneManager.getInstance().setUploadingImageStream(mUploadingImageStream); + LinphoneManager.getInstance().setUploadingImage(result); chatRoom.sendChatMessage(message); adapter.addMessage(message); diff --git a/src/org/linphone/LinphoneManager.java b/src/org/linphone/LinphoneManager.java index 4743db9f4..2a2575155 100644 --- a/src/org/linphone/LinphoneManager.java +++ b/src/org/linphone/LinphoneManager.java @@ -153,7 +153,6 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag private static List mPendingChatFileMessage; private static LinphoneChatMessage mUploadPendingFileMessage; - public String wizardLoginViewDomain = null; private static List simpleListeners = new ArrayList(); @@ -214,7 +213,7 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag private final String mFriendsDatabaseFile; private final String mErrorToneFile; private final String mUserCertificatePath; - private ByteArrayInputStream mUploadingImageStream; + private byte[] mUploadingImage; private Timer mTimer; private void routeAudioToSpeakerHelper(boolean speakerOn) { @@ -371,16 +370,16 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag return mUploadPendingFileMessage; } - public void setUploadingImageStream(ByteArrayInputStream array){ - this.mUploadingImageStream = array; + public void setUploadingImage(byte[] array){ + this.mUploadingImage = array; } @Override public void onLinphoneChatMessageStateChanged(LinphoneChatMessage msg, LinphoneChatMessage.State state) { if (state == LinphoneChatMessage.State.FileTransferDone) { - if (msg.isOutgoing() && mUploadingImageStream != null) { + if (msg.isOutgoing() && mUploadingImage != null) { mUploadPendingFileMessage = null; - mUploadingImageStream = null; + mUploadingImage = null; } else { LinphoneUtils.storeImage(getContext(), msg); removePendingMessage(msg); @@ -402,14 +401,16 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag @Override public void onLinphoneChatMessageFileTransferSent(LinphoneChatMessage msg, LinphoneContent content, int offset, int size, LinphoneBuffer bufferToFill) { - if (mUploadingImageStream != null && size > 0) { + if (mUploadingImage != null && size > 0) { byte[] data = new byte[size]; - int read = mUploadingImageStream.read(data, 0, size); - if (read > 0) { + if (offset + size <= mUploadingImage.length) { + for (int i = 0; i < size; i++) { + data[i] = mUploadingImage[i + offset]; + } bufferToFill.setContent(data); - bufferToFill.setSize(read); + bufferToFill.setSize(size); } else { - Log.e("Error, upload task asking for more bytes(" + size + ") than available (" + mUploadingImageStream.available() + ")"); + Log.e("Error, upload task asking for more bytes( " + (size+offset) + " ) than available (" + mUploadingImage.length + ")"); } } }