From d0b8bd0f8a0cb10c93d45d6900ff1fdb62db80b7 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 24 Aug 2015 18:18:01 +0200 Subject: catch invalid base64 in axolotl key parsing --- src/main/java/eu/siacs/conversations/parser/IqParser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/main/java/eu/siacs/conversations/parser/IqParser.java b/src/main/java/eu/siacs/conversations/parser/IqParser.java index cef5b03d9..44e4bc089 100644 --- a/src/main/java/eu/siacs/conversations/parser/IqParser.java +++ b/src/main/java/eu/siacs/conversations/parser/IqParser.java @@ -138,7 +138,7 @@ public class IqParser extends AbstractParser implements OnIqPacketReceived { } try { publicKey = Curve.decodePoint(Base64.decode(signedPreKeyPublic.getContent(),Base64.DEFAULT), 0); - } catch (InvalidKeyException e) { + } catch (InvalidKeyException | IllegalArgumentException e) { Log.e(Config.LOGTAG, AxolotlService.LOGPREFIX+" : "+"Invalid signedPreKeyPublic in PEP: " + e.getMessage()); } return publicKey; -- cgit v1.2.3 From fb0b4bb4453568b10a830ff14f751318cbcd85d7 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 24 Aug 2015 20:56:25 +0200 Subject: added setting to allow for white backgrounds in incoming message bubbles --- .../conversations/ui/ConversationActivity.java | 11 ++- .../conversations/ui/ConversationFragment.java | 1 + .../conversations/ui/adapter/MessageAdapter.java | 85 ++++++++++++--------- .../drawable-hdpi/message_bubble_received.9.png | Bin 765 -> 765 bytes .../message_bubble_received_warning.9.png | Bin 757 -> 757 bytes .../message_bubble_received_white.9.png | Bin 0 -> 779 bytes .../res/drawable-hdpi/message_bubble_sent.9.png | Bin 687 -> 687 bytes .../drawable-mdpi/message_bubble_received.9.png | Bin 594 -> 594 bytes .../message_bubble_received_warning.9.png | Bin 598 -> 598 bytes .../message_bubble_received_white.9.png | Bin 0 -> 610 bytes .../res/drawable-mdpi/message_bubble_sent.9.png | Bin 558 -> 558 bytes .../drawable-xhdpi/message_bubble_received.9.png | Bin 929 -> 929 bytes .../message_bubble_received_warning.9.png | Bin 921 -> 921 bytes .../message_bubble_received_white.9.png | Bin 0 -> 935 bytes .../res/drawable-xhdpi/message_bubble_sent.9.png | Bin 857 -> 857 bytes .../drawable-xxhdpi/message_bubble_received.9.png | Bin 1334 -> 1334 bytes .../message_bubble_received_warning.9.png | Bin 1308 -> 1308 bytes .../message_bubble_received_white.9.png | Bin 0 -> 1344 bytes .../res/drawable-xxhdpi/message_bubble_sent.9.png | Bin 1190 -> 1190 bytes .../drawable-xxxhdpi/message_bubble_received.9.png | Bin 1714 -> 1714 bytes .../message_bubble_received_warning.9.png | Bin 1674 -> 1674 bytes .../message_bubble_received_white.9.png | Bin 0 -> 1705 bytes .../res/drawable-xxxhdpi/message_bubble_sent.9.png | Bin 1499 -> 1499 bytes src/main/res/values/strings.xml | 2 + src/main/res/xml/preferences.xml | 5 ++ 25 files changed, 68 insertions(+), 36 deletions(-) create mode 100644 src/main/res/drawable-hdpi/message_bubble_received_white.9.png create mode 100644 src/main/res/drawable-mdpi/message_bubble_received_white.9.png create mode 100644 src/main/res/drawable-xhdpi/message_bubble_received_white.9.png create mode 100644 src/main/res/drawable-xxhdpi/message_bubble_received_white.9.png create mode 100644 src/main/res/drawable-xxxhdpi/message_bubble_received_white.9.png (limited to 'src') diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java index 219a4fcac..e7f453994 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java @@ -966,6 +966,9 @@ public class ConversationActivity extends XmppActivity mPendingGeoUri = null; setSelectedConversation(conversationList.get(0)); this.mConversationFragment.reInit(getSelectedConversation()); + } else { + this.mConversationFragment.messageListAdapter.updatePreferences(); + this.mConversationFragment.messagesView.invalidateViews(); } if(!forbidProcessingPendings) { @@ -1144,7 +1147,7 @@ public class ConversationActivity extends XmppActivity } prepareFileToast = Toast.makeText(getApplicationContext(),getText(R.string.preparing_file), Toast.LENGTH_LONG); prepareFileToast.show(); - xmppConnectionService.attachFileToConversation(conversation,uri, new UiCallback() { + xmppConnectionService.attachFileToConversation(conversation, uri, new UiCallback() { @Override public void success(Message message) { hidePrepareFileToast(); @@ -1174,7 +1177,7 @@ public class ConversationActivity extends XmppActivity @Override public void userInputRequried(PendingIntent pi, - Message object) { + Message object) { hidePrepareFileToast(); } @@ -1256,6 +1259,10 @@ public class ConversationActivity extends XmppActivity return getPreferences().getBoolean("indicate_received", false); } + public boolean useWhiteBackground() { + return getPreferences().getBoolean("use_white_background",false); + } + protected boolean trustKeysIfNeeded(int requestCode) { return trustKeysIfNeeded(requestCode, ATTACHMENT_CHOICE_INVALID); } diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index de758efc1..541e1533b 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -662,6 +662,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa this.mEditMessage.setText(""); this.mEditMessage.append(this.conversation.getNextMessage()); this.mEditMessage.setKeyboardListener(this); + messageListAdapter.updatePreferences(); this.messagesView.setAdapter(messageListAdapter); updateMessages(); this.messagesLoaded = true; diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java index 1ddd6c44a..8cdcb585f 100644 --- a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java +++ b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java @@ -60,11 +60,14 @@ public class MessageAdapter extends ArrayAdapter { return true; } }; + private boolean mIndicateReceived = false; + private boolean mUseWhiteBackground = false; public MessageAdapter(ConversationActivity activity, List messages) { super(activity, 0, messages); this.activity = activity; metrics = getContext().getResources().getDisplayMetrics(); + updatePreferences(); } public void setOnContactPictureClicked(OnContactPictureClicked listener) { @@ -96,15 +99,15 @@ public class MessageAdapter extends ArrayAdapter { return this.getItemViewType(getItem(position)); } - private int getMessageTextColor(int type, boolean primary) { - if (type == SENT) { - return activity.getResources().getColor(primary ? R.color.black87 : R.color.black54); - } else { + private int getMessageTextColor(boolean onDark, boolean primary) { + if (onDark) { return activity.getResources().getColor(primary ? R.color.white : R.color.white70); + } else { + return activity.getResources().getColor(primary ? R.color.black87 : R.color.black54); } } - private void displayStatus(ViewHolder viewHolder, Message message, int type) { + private void displayStatus(ViewHolder viewHolder, Message message, int type, boolean darkBackground) { String filesize = null; String info = null; boolean error = false; @@ -140,12 +143,12 @@ public class MessageAdapter extends ArrayAdapter { info = getContext().getString(R.string.offering); break; case Message.STATUS_SEND_RECEIVED: - if (activity.indicateReceived()) { + if (mIndicateReceived) { viewHolder.indicatorReceived.setVisibility(View.VISIBLE); } break; case Message.STATUS_SEND_DISPLAYED: - if (activity.indicateReceived()) { + if (mIndicateReceived) { viewHolder.indicatorReceived.setVisibility(View.VISIBLE); } break; @@ -162,11 +165,12 @@ public class MessageAdapter extends ArrayAdapter { if (error && type == SENT) { viewHolder.time.setTextColor(activity.getWarningTextColor()); } else { - viewHolder.time.setTextColor(this.getMessageTextColor(type,false)); + viewHolder.time.setTextColor(this.getMessageTextColor(darkBackground,false)); } if (message.getEncryption() == Message.ENCRYPTION_NONE) { viewHolder.indicator.setVisibility(View.GONE); } else { + viewHolder.indicator.setImageResource(darkBackground ? R.drawable.ic_secure_indicator_white : R.drawable.ic_secure_indicator); viewHolder.indicator.setVisibility(View.VISIBLE); if (message.getEncryption() == Message.ENCRYPTION_AXOLOTL) { XmppAxolotlSession.Trust trust = message.getConversation() @@ -178,18 +182,18 @@ public class MessageAdapter extends ArrayAdapter { viewHolder.indicator.setAlpha(1.0f); } else { viewHolder.indicator.clearColorFilter(); - if (type == SENT) { - viewHolder.indicator.setAlpha(0.57f); - } else { + if (darkBackground) { viewHolder.indicator.setAlpha(0.7f); + } else { + viewHolder.indicator.setAlpha(0.57f); } } } else { viewHolder.indicator.clearColorFilter(); - if (type == SENT) { - viewHolder.indicator.setAlpha(0.57f); - } else { + if (darkBackground) { viewHolder.indicator.setAlpha(0.7f); + } else { + viewHolder.indicator.setAlpha(0.57f); } } } @@ -223,19 +227,19 @@ public class MessageAdapter extends ArrayAdapter { } } - private void displayInfoMessage(ViewHolder viewHolder, String text, int type) { + private void displayInfoMessage(ViewHolder viewHolder, String text, boolean darkBackground) { if (viewHolder.download_button != null) { viewHolder.download_button.setVisibility(View.GONE); } viewHolder.image.setVisibility(View.GONE); viewHolder.messageBody.setVisibility(View.VISIBLE); viewHolder.messageBody.setText(text); - viewHolder.messageBody.setTextColor(getMessageTextColor(type,false)); + viewHolder.messageBody.setTextColor(getMessageTextColor(darkBackground, false)); viewHolder.messageBody.setTypeface(null, Typeface.ITALIC); viewHolder.messageBody.setTextIsSelectable(false); } - private void displayDecryptionFailed(ViewHolder viewHolder, int type) { + private void displayDecryptionFailed(ViewHolder viewHolder, boolean darkBackground) { if (viewHolder.download_button != null) { viewHolder.download_button.setVisibility(View.GONE); } @@ -243,7 +247,7 @@ public class MessageAdapter extends ArrayAdapter { viewHolder.messageBody.setVisibility(View.VISIBLE); viewHolder.messageBody.setText(getContext().getString( R.string.decryption_failed)); - viewHolder.messageBody.setTextColor(getMessageTextColor(type,false)); + viewHolder.messageBody.setTextColor(getMessageTextColor(darkBackground, false)); viewHolder.messageBody.setTypeface(null, Typeface.NORMAL); viewHolder.messageBody.setTextIsSelectable(false); } @@ -261,7 +265,7 @@ public class MessageAdapter extends ArrayAdapter { viewHolder.messageBody.setText(span); } - private void displayTextMessage(final ViewHolder viewHolder, final Message message, int type) { + private void displayTextMessage(final ViewHolder viewHolder, final Message message, boolean darkBackground) { if (viewHolder.download_button != null) { viewHolder.download_button.setVisibility(View.GONE); } @@ -303,7 +307,7 @@ public class MessageAdapter extends ArrayAdapter { } final Spannable span = new SpannableString(privateMarker + " " + formattedBody); - span.setSpan(new ForegroundColorSpan(getMessageTextColor(type,false)), 0, privateMarker + span.setSpan(new ForegroundColorSpan(getMessageTextColor(darkBackground,false)), 0, privateMarker .length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); span.setSpan(new StyleSpan(Typeface.BOLD), 0, privateMarker.length(), @@ -318,7 +322,8 @@ public class MessageAdapter extends ArrayAdapter { } else { viewHolder.messageBody.setText(""); } - viewHolder.messageBody.setTextColor(this.getMessageTextColor(type,true)); + viewHolder.messageBody.setTextColor(this.getMessageTextColor(darkBackground, true)); + viewHolder.messageBody.setLinkTextColor(this.getMessageTextColor(darkBackground,true)); viewHolder.messageBody.setTypeface(null, Typeface.NORMAL); viewHolder.messageBody.setTextIsSelectable(true); } @@ -388,7 +393,7 @@ public class MessageAdapter extends ArrayAdapter { scalledH = (int) (params.height / ((double) params.width / target)); } LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(scalledW, scalledH); - layoutParams.setMargins(0, (int)(metrics.density * 4), 0, (int)(metrics.density * 4)); + layoutParams.setMargins(0, (int) (metrics.density * 4), 0, (int) (metrics.density * 4)); viewHolder.image.setLayoutParams(layoutParams); activity.loadBitmap(message, viewHolder.image); viewHolder.image.setOnClickListener(new OnClickListener() { @@ -404,6 +409,7 @@ public class MessageAdapter extends ArrayAdapter { @Override public View getView(int position, View view, ViewGroup parent) { final Message message = getItem(position); + final boolean isInValidSession = message.isValidInSession(); final Conversation conversation = message.getConversation(); final Account account = conversation.getAccount(); final int type = getItemViewType(position); @@ -468,6 +474,8 @@ public class MessageAdapter extends ArrayAdapter { } } + boolean darkBackground = (type == RECEIVED && (!isInValidSession || !mUseWhiteBackground)); + if (type == STATUS) { if (conversation.getMode() == Conversation.MODE_SINGLE) { viewHolder.contact_picture.setImageBitmap(activity @@ -497,7 +505,7 @@ public class MessageAdapter extends ArrayAdapter { public void onClick(View v) { if (MessageAdapter.this.mOnContactPictureClickedListener != null) { MessageAdapter.this.mOnContactPictureClickedListener - .onContactPictureClicked(message); + .onContactPictureClicked(message); } } @@ -509,7 +517,7 @@ public class MessageAdapter extends ArrayAdapter { public boolean onLongClick(View v) { if (MessageAdapter.this.mOnContactPictureLongClickedListener != null) { MessageAdapter.this.mOnContactPictureLongClickedListener - .onContactPictureLongClicked(message); + .onContactPictureLongClicked(message); return true; } else { return false; @@ -524,7 +532,7 @@ public class MessageAdapter extends ArrayAdapter { } else if (transferable.getStatus() == Transferable.STATUS_OFFER_CHECK_FILESIZE) { displayDownloadableMessage(viewHolder, message, activity.getString(R.string.check_x_filesize, UIHelper.getFileDescriptionString(activity, message))); } else { - displayInfoMessage(viewHolder, UIHelper.getMessagePreview(activity, message).first,type); + displayInfoMessage(viewHolder, UIHelper.getMessagePreview(activity, message).first,darkBackground); } } else if (message.getType() == Message.TYPE_IMAGE && message.getEncryption() != Message.ENCRYPTION_PGP && message.getEncryption() != Message.ENCRYPTION_DECRYPTION_FAILED) { displayImageMessage(viewHolder, message); @@ -536,9 +544,9 @@ public class MessageAdapter extends ArrayAdapter { } } else if (message.getEncryption() == Message.ENCRYPTION_PGP) { if (activity.hasPgp()) { - displayInfoMessage(viewHolder,activity.getString(R.string.encrypted_message),type); + displayInfoMessage(viewHolder,activity.getString(R.string.encrypted_message),darkBackground); } else { - displayInfoMessage(viewHolder,activity.getString(R.string.install_openkeychain),type); + displayInfoMessage(viewHolder,activity.getString(R.string.install_openkeychain),darkBackground); if (viewHolder != null) { viewHolder.message_box .setOnClickListener(new OnClickListener() { @@ -551,7 +559,7 @@ public class MessageAdapter extends ArrayAdapter { } } } else if (message.getEncryption() == Message.ENCRYPTION_DECRYPTION_FAILED) { - displayDecryptionFailed(viewHolder,type); + displayDecryptionFailed(viewHolder,darkBackground); } else { if (GeoHelper.isGeoUri(message.getBody())) { displayLocationMessage(viewHolder,message); @@ -560,19 +568,23 @@ public class MessageAdapter extends ArrayAdapter { } else if (message.treatAsDownloadable() == Message.Decision.MUST) { displayDownloadableMessage(viewHolder, message, activity.getString(R.string.check_x_filesize, UIHelper.getFileDescriptionString(activity, message))); } else { - displayTextMessage(viewHolder, message, type); + displayTextMessage(viewHolder, message, darkBackground); } } if (type == RECEIVED) { - if(message.isValidInSession()) { - viewHolder.message_box.setBackgroundResource(R.drawable.message_bubble_received); + if(isInValidSession) { + if (mUseWhiteBackground) { + viewHolder.message_box.setBackgroundResource(R.drawable.message_bubble_received_white); + } else { + viewHolder.message_box.setBackgroundResource(R.drawable.message_bubble_received); + } } else { viewHolder.message_box.setBackgroundResource(R.drawable.message_bubble_received_warning); } } - displayStatus(viewHolder, message, type); + displayStatus(viewHolder, message, type, darkBackground); return view; } @@ -616,12 +628,17 @@ public class MessageAdapter extends ArrayAdapter { Toast.makeText(activity,R.string.no_application_found_to_display_location,Toast.LENGTH_SHORT).show(); } + public void updatePreferences() { + this.mIndicateReceived = activity.indicateReceived(); + this.mUseWhiteBackground = activity.useWhiteBackground(); + } + public interface OnContactPictureClicked { - public void onContactPictureClicked(Message message); + void onContactPictureClicked(Message message); } public interface OnContactPictureLongClicked { - public void onContactPictureLongClicked(Message message); + void onContactPictureLongClicked(Message message); } private static class ViewHolder { diff --git a/src/main/res/drawable-hdpi/message_bubble_received.9.png b/src/main/res/drawable-hdpi/message_bubble_received.9.png index 1a496771e..4445ca04a 100644 Binary files a/src/main/res/drawable-hdpi/message_bubble_received.9.png and b/src/main/res/drawable-hdpi/message_bubble_received.9.png differ diff --git a/src/main/res/drawable-hdpi/message_bubble_received_warning.9.png b/src/main/res/drawable-hdpi/message_bubble_received_warning.9.png index 9cd2f825d..1bd8cb51f 100644 Binary files a/src/main/res/drawable-hdpi/message_bubble_received_warning.9.png and b/src/main/res/drawable-hdpi/message_bubble_received_warning.9.png differ diff --git a/src/main/res/drawable-hdpi/message_bubble_received_white.9.png b/src/main/res/drawable-hdpi/message_bubble_received_white.9.png new file mode 100644 index 000000000..15d27cca8 Binary files /dev/null and b/src/main/res/drawable-hdpi/message_bubble_received_white.9.png differ diff --git a/src/main/res/drawable-hdpi/message_bubble_sent.9.png b/src/main/res/drawable-hdpi/message_bubble_sent.9.png index 2bb4e04f6..5d79264e9 100644 Binary files a/src/main/res/drawable-hdpi/message_bubble_sent.9.png and b/src/main/res/drawable-hdpi/message_bubble_sent.9.png differ diff --git a/src/main/res/drawable-mdpi/message_bubble_received.9.png b/src/main/res/drawable-mdpi/message_bubble_received.9.png index 7e134402f..ba63820b2 100644 Binary files a/src/main/res/drawable-mdpi/message_bubble_received.9.png and b/src/main/res/drawable-mdpi/message_bubble_received.9.png differ diff --git a/src/main/res/drawable-mdpi/message_bubble_received_warning.9.png b/src/main/res/drawable-mdpi/message_bubble_received_warning.9.png index 38f75e051..6523e9a14 100644 Binary files a/src/main/res/drawable-mdpi/message_bubble_received_warning.9.png and b/src/main/res/drawable-mdpi/message_bubble_received_warning.9.png differ diff --git a/src/main/res/drawable-mdpi/message_bubble_received_white.9.png b/src/main/res/drawable-mdpi/message_bubble_received_white.9.png new file mode 100644 index 000000000..2abd4fe1b Binary files /dev/null and b/src/main/res/drawable-mdpi/message_bubble_received_white.9.png differ diff --git a/src/main/res/drawable-mdpi/message_bubble_sent.9.png b/src/main/res/drawable-mdpi/message_bubble_sent.9.png index b42664a85..dd23cf7d7 100644 Binary files a/src/main/res/drawable-mdpi/message_bubble_sent.9.png and b/src/main/res/drawable-mdpi/message_bubble_sent.9.png differ diff --git a/src/main/res/drawable-xhdpi/message_bubble_received.9.png b/src/main/res/drawable-xhdpi/message_bubble_received.9.png index dc8ee5346..aa0fc16e4 100644 Binary files a/src/main/res/drawable-xhdpi/message_bubble_received.9.png and b/src/main/res/drawable-xhdpi/message_bubble_received.9.png differ diff --git a/src/main/res/drawable-xhdpi/message_bubble_received_warning.9.png b/src/main/res/drawable-xhdpi/message_bubble_received_warning.9.png index b5be808f8..79e6e1fdf 100644 Binary files a/src/main/res/drawable-xhdpi/message_bubble_received_warning.9.png and b/src/main/res/drawable-xhdpi/message_bubble_received_warning.9.png differ diff --git a/src/main/res/drawable-xhdpi/message_bubble_received_white.9.png b/src/main/res/drawable-xhdpi/message_bubble_received_white.9.png new file mode 100644 index 000000000..771c3ff43 Binary files /dev/null and b/src/main/res/drawable-xhdpi/message_bubble_received_white.9.png differ diff --git a/src/main/res/drawable-xhdpi/message_bubble_sent.9.png b/src/main/res/drawable-xhdpi/message_bubble_sent.9.png index f1c462326..9e01ebaca 100644 Binary files a/src/main/res/drawable-xhdpi/message_bubble_sent.9.png and b/src/main/res/drawable-xhdpi/message_bubble_sent.9.png differ diff --git a/src/main/res/drawable-xxhdpi/message_bubble_received.9.png b/src/main/res/drawable-xxhdpi/message_bubble_received.9.png index 6ce844871..0af666695 100644 Binary files a/src/main/res/drawable-xxhdpi/message_bubble_received.9.png and b/src/main/res/drawable-xxhdpi/message_bubble_received.9.png differ diff --git a/src/main/res/drawable-xxhdpi/message_bubble_received_warning.9.png b/src/main/res/drawable-xxhdpi/message_bubble_received_warning.9.png index a31818698..e128d58a6 100644 Binary files a/src/main/res/drawable-xxhdpi/message_bubble_received_warning.9.png and b/src/main/res/drawable-xxhdpi/message_bubble_received_warning.9.png differ diff --git a/src/main/res/drawable-xxhdpi/message_bubble_received_white.9.png b/src/main/res/drawable-xxhdpi/message_bubble_received_white.9.png new file mode 100644 index 000000000..94baefed9 Binary files /dev/null and b/src/main/res/drawable-xxhdpi/message_bubble_received_white.9.png differ diff --git a/src/main/res/drawable-xxhdpi/message_bubble_sent.9.png b/src/main/res/drawable-xxhdpi/message_bubble_sent.9.png index 9f36a6494..de4f8784b 100644 Binary files a/src/main/res/drawable-xxhdpi/message_bubble_sent.9.png and b/src/main/res/drawable-xxhdpi/message_bubble_sent.9.png differ diff --git a/src/main/res/drawable-xxxhdpi/message_bubble_received.9.png b/src/main/res/drawable-xxxhdpi/message_bubble_received.9.png index e7fa6754b..8a35671d4 100644 Binary files a/src/main/res/drawable-xxxhdpi/message_bubble_received.9.png and b/src/main/res/drawable-xxxhdpi/message_bubble_received.9.png differ diff --git a/src/main/res/drawable-xxxhdpi/message_bubble_received_warning.9.png b/src/main/res/drawable-xxxhdpi/message_bubble_received_warning.9.png index 398e53a2d..2b4e08b2b 100644 Binary files a/src/main/res/drawable-xxxhdpi/message_bubble_received_warning.9.png and b/src/main/res/drawable-xxxhdpi/message_bubble_received_warning.9.png differ diff --git a/src/main/res/drawable-xxxhdpi/message_bubble_received_white.9.png b/src/main/res/drawable-xxxhdpi/message_bubble_received_white.9.png new file mode 100644 index 000000000..6ea852cec Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/message_bubble_received_white.9.png differ diff --git a/src/main/res/drawable-xxxhdpi/message_bubble_sent.9.png b/src/main/res/drawable-xxxhdpi/message_bubble_sent.9.png index be428cd2e..5cbfdbb4b 100644 Binary files a/src/main/res/drawable-xxxhdpi/message_bubble_sent.9.png and b/src/main/res/drawable-xxxhdpi/message_bubble_sent.9.png differ diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 2a03847df..6abc17b13 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -510,4 +510,6 @@ Download failed: Server not found Download failed: File not found Download failed: Could not connect to host + Use white background + Show received messages as black text on a white background diff --git a/src/main/res/xml/preferences.xml b/src/main/res/xml/preferences.xml index 8ab35c098..6663c22b7 100644 --- a/src/main/res/xml/preferences.xml +++ b/src/main/res/xml/preferences.xml @@ -95,6 +95,11 @@ android:key="use_subject" android:summary="@string/pref_conference_name_summary" android:title="@string/pref_conference_name"/> + Date: Mon, 24 Aug 2015 20:56:36 +0200 Subject: fixed regression with mlinks stream managment. fixes #1206 --- src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java index 376858323..ddc3158ce 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java @@ -954,7 +954,7 @@ public class XmppConnection implements Runnable { AbstractAcknowledgeableStanza stanza = (AbstractAcknowledgeableStanza) packet; ++stanzasSent; this.mStanzaQueue.put(stanzasSent, stanza); - if (stanza instanceof MessagePacket && stanza.getId() != null && this.streamId != null) { + if (stanza instanceof MessagePacket && stanza.getId() != null && getFeatures().sm()) { if (Config.EXTENDED_SM_LOGGING) { Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": requesting ack for message stanza #" + stanzasSent); } -- cgit v1.2.3 From 730a5c644bbacea3189479ef067b3ebbd7dcffd6 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 24 Aug 2015 21:15:47 +0200 Subject: renamed plain text to unencrypted. fixes #1331 --- src/main/java/eu/siacs/conversations/ui/ConversationFragment.java | 2 +- src/main/res/menu/encryption_choices.xml | 2 +- src/main/res/values-ar-rEG/strings.xml | 4 ++-- src/main/res/values-bg/strings.xml | 4 ++-- src/main/res/values-ca/strings.xml | 4 ++-- src/main/res/values-cs/strings.xml | 4 ++-- src/main/res/values-de/strings.xml | 4 ++-- src/main/res/values-el/strings.xml | 4 ++-- src/main/res/values-es/strings.xml | 4 ++-- src/main/res/values-eu/strings.xml | 4 ++-- src/main/res/values-fr/strings.xml | 4 ++-- src/main/res/values-gl/strings.xml | 4 ++-- src/main/res/values-id/strings.xml | 4 ++-- src/main/res/values-it/strings.xml | 4 ++-- src/main/res/values-iw/strings.xml | 4 ++-- src/main/res/values-ja/strings.xml | 4 ++-- src/main/res/values-ko/strings.xml | 4 ++-- src/main/res/values-nl/strings.xml | 4 ++-- src/main/res/values-pl/strings.xml | 4 ++-- src/main/res/values-pt/strings.xml | 4 ++-- src/main/res/values-ro-rRO/strings.xml | 2 +- src/main/res/values-ru/strings.xml | 4 ++-- src/main/res/values-sk/strings.xml | 4 ++-- src/main/res/values-sr/strings.xml | 4 ++-- src/main/res/values-sv/strings.xml | 4 ++-- src/main/res/values-zh-rCN/strings.xml | 4 ++-- src/main/res/values-zh-rTW/strings.xml | 4 ++-- src/main/res/values/strings.xml | 4 ++-- 28 files changed, 53 insertions(+), 53 deletions(-) (limited to 'src') diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index 541e1533b..2d6288714 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -327,7 +327,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa switch (conversation.getNextEncryption()) { case Message.ENCRYPTION_NONE: mEditMessage - .setHint(getString(R.string.send_plain_text_message)); + .setHint(getString(R.string.send_unencrypted_message)); break; case Message.ENCRYPTION_OTR: mEditMessage.setHint(getString(R.string.send_otr_message)); diff --git a/src/main/res/menu/encryption_choices.xml b/src/main/res/menu/encryption_choices.xml index 9af2cd346..ab42a206b 100644 --- a/src/main/res/menu/encryption_choices.xml +++ b/src/main/res/menu/encryption_choices.xml @@ -4,7 +4,7 @@ + android:title="@string/encryption_choice_unencrypted"/> diff --git a/src/main/res/values-ar-rEG/strings.xml b/src/main/res/values-ar-rEG/strings.xml index 0d85e55c5..2c347f13b 100644 --- a/src/main/res/values-ar-rEG/strings.xml +++ b/src/main/res/values-ar-rEG/strings.xml @@ -76,7 +76,7 @@ حذف الرسائل انهاء هذه المحادثة بعد الكلمات اختيار ظهورك لجهات الإتصال - ارسال رسالة غير مشفّرة + ارسال رسالة غير مشفّرة OTRارساله رساله مشفره عبر OpenPGPارساله رساله مشفره عبر تم تغيير لقبك بنجاح @@ -128,7 +128,7 @@ اسم المستخدم مستخدم من قبل تم تسجيل حسابك بنجاح تسجيل الحسابات غير متاح على هذا السرفر - رساله عادية + رساله عادية OTRرسالة مشفرة عبر OpenPGPرسالة مشفرة عبر تعديل الحساب diff --git a/src/main/res/values-bg/strings.xml b/src/main/res/values-bg/strings.xml index e21a6cee6..c1064c193 100644 --- a/src/main/res/values-bg/strings.xml +++ b/src/main/res/values-bg/strings.xml @@ -76,7 +76,7 @@ Изтриване на съобщенията Този разговор да приключи след това Изберете присъствие за контакта - Изпр. на обикновено текстово съобщение + Изпр. на обикновено текстово съобщение Изпр. на съобщение, шифр. чрез OTP Изпр. на съобщение, шифр. чрез OMEMO Изпр. на съобщение, шифр. чрез OpenPGP @@ -150,7 +150,7 @@ Сървърът не поддържа регистриране Грешка в сигурността Несъвместим сървър - Обикновен текст + Обикновен текст OTR OpenPGP OMEMO diff --git a/src/main/res/values-ca/strings.xml b/src/main/res/values-ca/strings.xml index 74d87736b..2e508219a 100644 --- a/src/main/res/values-ca/strings.xml +++ b/src/main/res/values-ca/strings.xml @@ -76,7 +76,7 @@ Esborrar missatges Finalitzar aquesta conversa més tard Selecciona recurs del contacte - Enviar missatge de text + Enviar missatge de text Enviar missatge xifrat amb OTR Enviar missatge xifrat amb OpenPGP El teu sobrenom s\'ha modificat @@ -147,7 +147,7 @@ El servidor no admet el registre Error de seguretat Servidor incompatible - Text pla + Text pla OTR OpenPGP Edita compte diff --git a/src/main/res/values-cs/strings.xml b/src/main/res/values-cs/strings.xml index 2cdf06a95..8fb7babb6 100644 --- a/src/main/res/values-cs/strings.xml +++ b/src/main/res/values-cs/strings.xml @@ -76,7 +76,7 @@ Smazat zprávy Poté ukončit i tuto konverzaci Vybrat aktualizaci stavu pro kontakt - Poslat textovou zprávu + Poslat textovou zprávu Poslat OTR šifrovanou zprávu Poslat OMEMO šifrovanou zprávu Poslat OpenPGP šifrovanou zprávu @@ -150,7 +150,7 @@ Server nepodporuje registrace Bezpečnostní chyba Nekompatibilní server - Čistý text + Čistý text OTR OpenPGP OMEMO diff --git a/src/main/res/values-de/strings.xml b/src/main/res/values-de/strings.xml index 178738ea8..ccb8f703e 100644 --- a/src/main/res/values-de/strings.xml +++ b/src/main/res/values-de/strings.xml @@ -76,7 +76,7 @@ Nachrichten löschen Diese Unterhaltung danach beenden Ressource des Kontakts auswählen - Normal schreiben… + Normal schreiben… OTR-verschlüsselt schreiben… OMEMO-verschlüsselt schreiben… OpenPGP-verschlüsselt schreiben… @@ -150,7 +150,7 @@ Der Server unterstützt keine Registrierung Sicherheitsfehler Inkompatibler Server - Klartext + Klartext OTR OpenPGP OMEMO diff --git a/src/main/res/values-el/strings.xml b/src/main/res/values-el/strings.xml index b9fc352ce..54c6b07ee 100644 --- a/src/main/res/values-el/strings.xml +++ b/src/main/res/values-el/strings.xml @@ -76,7 +76,7 @@ Διαγραφή μηνυμάτων Τερματισμός αυτής της συζήτησης αμέσως μετά Επιλέξτε παρουσία για επικοινωνία - Αποστολή απλού μηνύματος κειμένου + Αποστολή απλού μηνύματος κειμένου Αποστολή κρυπτογραφημένου μηνύματος OTR Αποστολή κρυπτογραφημένου μηνύματος OpenPGP Το ψευδώνυμό σας έχει αλλάξει @@ -147,7 +147,7 @@ Ο διακομιστής δεν υποστηρίζει εγγραφή Σφάλμα ασφάλειας Μη συμβατός διακομιστής - Απλό κείμενο + Απλό κείμενο OTR OpenPGP Επεξεργασία λογαριασμού diff --git a/src/main/res/values-es/strings.xml b/src/main/res/values-es/strings.xml index 56b7c2e0d..50f7974c1 100644 --- a/src/main/res/values-es/strings.xml +++ b/src/main/res/values-es/strings.xml @@ -76,7 +76,7 @@ Borrar mensajes Además, terminar esta conversación Selecciona recurso del contacto - Enviar mensaje de texto + Enviar mensaje de texto Enviar mensaje cifrado con OTR Enviar mensaje cifrado con OMEMO Enviar mensaje cifrado con OpenPGP @@ -150,7 +150,7 @@ El servidor no soporta registros Error de seguridad Servidor incompatible - Texto plano + Texto plano OTR OpenPGP OMEMO diff --git a/src/main/res/values-eu/strings.xml b/src/main/res/values-eu/strings.xml index 75b6dc090..d870f78da 100644 --- a/src/main/res/values-eu/strings.xml +++ b/src/main/res/values-eu/strings.xml @@ -76,7 +76,7 @@ Mezuak ezabatu Elkarrizketa hau jarraian amaitu Hautatu agerpena kontaktuarentzat - Testu mezua bidali + Testu mezua bidali OTRz enkriptatutako mezua bidali OMEMOz enkriptatutako mezua bidali OpenPGPz enkriptatutako mezua bidali @@ -150,7 +150,7 @@ Zerbitzariak ez du erregistratzea onartzen Segurtasun akatsa Zerbitzari ez bateragarria - Testu laua + Testu laua OTR OpenPGP OMEMO diff --git a/src/main/res/values-fr/strings.xml b/src/main/res/values-fr/strings.xml index 646f54141..e2695988a 100644 --- a/src/main/res/values-fr/strings.xml +++ b/src/main/res/values-fr/strings.xml @@ -76,7 +76,7 @@ Supprimer les messages Terminer plus tard cette conversation Choisir le status de présence - Envoyer un message + Envoyer un message Envoyer un message sécurisé par OTR Envoyer un message sécurisé par OpenPGP Votre identifiant a été changé @@ -147,7 +147,7 @@ Le serveur ne permet pas l\'enregistrement Erreur de sécurité Serveur incompatible - Texte clair + Texte clair OTR OpenPGP Modifier le compte diff --git a/src/main/res/values-gl/strings.xml b/src/main/res/values-gl/strings.xml index 6a6b23c1d..c98a4ced1 100644 --- a/src/main/res/values-gl/strings.xml +++ b/src/main/res/values-gl/strings.xml @@ -44,7 +44,7 @@ Borrar mensaxes Terminar esta conversa máis tarde Selecciona recurso del contacto - Enviar mensaxe de texto + Enviar mensaxe de texto Enviar mensaxe cifrado con OTR Enviar mensaxe cifrado con OpenPGP Modificouse o teu apodo @@ -107,7 +107,7 @@ O identificador xa está en uso Rexistro completado O servidor non soporta rexistros - Texto plano + Texto plano OTR OpenPGP Editar conta diff --git a/src/main/res/values-id/strings.xml b/src/main/res/values-id/strings.xml index f859bde1a..fe5056716 100644 --- a/src/main/res/values-id/strings.xml +++ b/src/main/res/values-id/strings.xml @@ -76,7 +76,7 @@ Hapus pesan Akhiri percakapan setelahnya Pilih kehadiran untuk kontak - Kirim pesan teks biasa + Kirim pesan teks biasa Kirim pesan terenskripsi OTR Kirim pesan terenskripsi OpenPGP Nick kamu telah dirubah @@ -147,7 +147,7 @@ Server tidak mendukung pendaftaran akun. Kesalahan keamanan Server tidak cocok - Teks biasa + Teks biasa OTR OpenPGP Ubah akun diff --git a/src/main/res/values-it/strings.xml b/src/main/res/values-it/strings.xml index 4e61aca72..35acf7f09 100644 --- a/src/main/res/values-it/strings.xml +++ b/src/main/res/values-it/strings.xml @@ -76,7 +76,7 @@ Elimina messaggi Termina questa conversazione in seguito Choose presence to contact - Messaggio non cifrato + Messaggio non cifrato Messaggio OTR Messaggio OpenPGP Il tuo nome utente è stato cambiato @@ -147,7 +147,7 @@ Il Server non supporta la registrazione Errore di sicurezza Server non compatibile - Testo semplice + Testo semplice OTR OpenPGP Modifica utente diff --git a/src/main/res/values-iw/strings.xml b/src/main/res/values-iw/strings.xml index 8eeaab6b0..857d7c92a 100644 --- a/src/main/res/values-iw/strings.xml +++ b/src/main/res/values-iw/strings.xml @@ -62,7 +62,7 @@ מחק הודעות סיים את דיון זה לאחר מכן בחר נוכחות לאיש קשר - שלח הודעת טקסט גלוי + שלח הודעת טקסט גלוי שלח הודעה מוצפנת OTR שלח הודעה מוצפנת OpenPGP שם כינוי שלך השתנה @@ -130,7 +130,7 @@ שם משתמש כבר מצוי בשימוש הרשמה הושלמה שרת לא תומך הרשמה - טקסט גלוי + טקסט גלוי OTR OpenPGP ערוך חשבון diff --git a/src/main/res/values-ja/strings.xml b/src/main/res/values-ja/strings.xml index bd65c7c76..743ddf9df 100644 --- a/src/main/res/values-ja/strings.xml +++ b/src/main/res/values-ja/strings.xml @@ -76,7 +76,7 @@ メッセージを削除 その後、この会話を終了 連絡する参加を選択 - プレーンテキストを送信 + プレーンテキストを送信 OTR 暗号化メッセージを送信 OMEMO 暗号化メッセージを送信 OpenPGP 暗号化メッセージを送信 @@ -150,7 +150,7 @@ サーバーが登録をサポートしていません セキュリティ エラー 互換性のないサーバー - プレーンテキスト + プレーンテキスト OTR OpenPGP OMEMO diff --git a/src/main/res/values-ko/strings.xml b/src/main/res/values-ko/strings.xml index a164dd101..023ba609b 100644 --- a/src/main/res/values-ko/strings.xml +++ b/src/main/res/values-ko/strings.xml @@ -76,7 +76,7 @@ 메세지 삭제 나중에 이 대화 끝내기 연락할 프레즌스 선택 - 평문 메세지 전송 + 평문 메세지 전송 OTR 암호화된 메세지 전송 OpenPGP 암호화된 메세지 전송 닉네임이 변경되었습니다 @@ -147,7 +147,7 @@ 서버가 등록을 지원하지 않습니다 보안 오류 호환되지 않는 서버 - 평문 + 평문 OTR OpenPGP 계정 편집 diff --git a/src/main/res/values-nl/strings.xml b/src/main/res/values-nl/strings.xml index d693f916c..d07a8f508 100644 --- a/src/main/res/values-nl/strings.xml +++ b/src/main/res/values-nl/strings.xml @@ -76,7 +76,7 @@ Berichten verwijderen Beëindig dit gesprek na afloop Kies aanwezigheid om te tonen aan contact - Verstuur onversleuteld bericht + Verstuur onversleuteld bericht Verstuur OTR-versleuteld bericht Verstuur OMEMO-versleuteld bericht Verstuur OpenPGP-versleuteld bericht @@ -150,7 +150,7 @@ Server ondersteunt geen registratie Fout bij beveiliging Incompatibele server - Onversleuteld + Onversleuteld OTR OpenPGP OMEMO diff --git a/src/main/res/values-pl/strings.xml b/src/main/res/values-pl/strings.xml index 1ace55a84..9a67aca2a 100644 --- a/src/main/res/values-pl/strings.xml +++ b/src/main/res/values-pl/strings.xml @@ -76,7 +76,7 @@ Usuń wiadomości Zakończ konwersację po usunięciu historii Wybierz widoczność dla kontaktu - Wyślij wiadomość jawną + Wyślij wiadomość jawną Wyślij zaszyfrowaną wiadomość (OTR) Wyślij zaszyfrowaną wiadomość (OpenPGP) Twoja nazwa została zmieniona @@ -147,7 +147,7 @@ Serwer nie umożliwia rejestracji Błąd zabezpieczeń Serwer niekompatybilny - Tekst jawny + Tekst jawny OTR OpenPGP Edytuj konto diff --git a/src/main/res/values-pt/strings.xml b/src/main/res/values-pt/strings.xml index 041b5e2dc..6f2c3c30d 100644 --- a/src/main/res/values-pt/strings.xml +++ b/src/main/res/values-pt/strings.xml @@ -74,7 +74,7 @@ Remover mensagens Finalizar essa conversa ao final Escolha a presença do contato - Enviar mensagem de texto puro + Enviar mensagem de texto puro Enviar mensagem criptografada com OTR Enviar mensagem criptografada com OpenPGP Seu apelido foi alterado @@ -137,7 +137,7 @@ O servidor não aceita o registro Erro de segurança Servidor incompatível - Texto puro + Texto puro OTR OpenPGP Editar conta diff --git a/src/main/res/values-ro-rRO/strings.xml b/src/main/res/values-ro-rRO/strings.xml index 9cbfcdbf3..61225013a 100644 --- a/src/main/res/values-ro-rRO/strings.xml +++ b/src/main/res/values-ro-rRO/strings.xml @@ -75,7 +75,7 @@ Sterge mesajele Termina conversatia aceasta dupa Alege prezenta pentru a contacta - Trimite text necriptat + Trimite text necriptat Trimite mesaj criptat cu OTR Trimite mesaj criptat cu OpenPGP Numele tau a fost schimbat diff --git a/src/main/res/values-ru/strings.xml b/src/main/res/values-ru/strings.xml index 053a675c9..e12b600c8 100644 --- a/src/main/res/values-ru/strings.xml +++ b/src/main/res/values-ru/strings.xml @@ -76,7 +76,7 @@ Удалить сообщения Завершить беседу Укажите статус для контакта - Отправить незашифрованное текстовое сообщение + Отправить незашифрованное текстовое сообщение Отправить OTR защифрованное сообщение Отправить OpenPGP защифрованное сообщение Ваш псевдоним был изменен @@ -147,7 +147,7 @@ Сервер не поддерживает регистрацию Ошибка безопасности Несовместимый сервер - Без шифрования + Без шифрования OTR OpenPGP Редактировать аккаунт diff --git a/src/main/res/values-sk/strings.xml b/src/main/res/values-sk/strings.xml index 5bcc1aa50..4ce6b1f75 100644 --- a/src/main/res/values-sk/strings.xml +++ b/src/main/res/values-sk/strings.xml @@ -76,7 +76,7 @@ Vymazať správy Následne ukončiť aj túto konverzáciu Vybrať aktualizáciu stavu pre kontakt - Poslať textovú správu + Poslať textovú správu Poslať OTR šifrovanú správu Poslať OpenPGP šifrovanú správu Prezývka sa zmenila @@ -147,7 +147,7 @@ Server nepodporuje registráciu Bezpečnostná chyba Nekompatibilný server - Čistý text + Čistý text OTR OpenPGP Upraviť účet diff --git a/src/main/res/values-sr/strings.xml b/src/main/res/values-sr/strings.xml index a8b2c8896..c385b776c 100644 --- a/src/main/res/values-sr/strings.xml +++ b/src/main/res/values-sr/strings.xml @@ -76,7 +76,7 @@ Обриши поруке Окончај ову преписку након тога Избор присутности за контакта - Пошаљи обичну текстуалну поруку + Пошаљи обичну текстуалну поруку Пошаљи ОТР шифровану поруку Пошаљи ОМЕМО шифровану поруку Пошаљи ОпенПГП шифровану поруку @@ -150,7 +150,7 @@ Сервер не подржава регистрацију Безбедносна грешка Некомпатибилан сервер - Обичан текст + Обичан текст ОТР ОпенПГП ОМЕМО diff --git a/src/main/res/values-sv/strings.xml b/src/main/res/values-sv/strings.xml index c40625883..a90c1ef75 100644 --- a/src/main/res/values-sv/strings.xml +++ b/src/main/res/values-sv/strings.xml @@ -76,7 +76,7 @@ Ta bort meddelanden Avsluta sedan denna konversation Välj tillgänglighet till kontakt - Skicka meddelande i klartext + Skicka meddelande i klartext Skicka OTR-krypterat meddelande Skicka OMEMO-krypterat meddelande Skicka OpenPGP-krypterat meddelande @@ -150,7 +150,7 @@ Servern stödjer inte registrering Säkerhetsfel Inkompatibel server - Klartext + Klartext OTR OpenPGP OMEMO diff --git a/src/main/res/values-zh-rCN/strings.xml b/src/main/res/values-zh-rCN/strings.xml index 7a67ffdd0..0b6a9a77b 100644 --- a/src/main/res/values-zh-rCN/strings.xml +++ b/src/main/res/values-zh-rCN/strings.xml @@ -76,7 +76,7 @@ 删除消息 之后结束该会话 添加在线用户至联系人 - 发送纯文本信息 + 发送纯文本信息 发送 OTR 加密信息 发送 OpenPGP 加密信息 昵称修改成功 @@ -147,7 +147,7 @@ 服务器不支持注册 安全错误 服务器不兼容 - 纯文本内容 + 纯文本内容 OTR OpenPGP 编辑账号 diff --git a/src/main/res/values-zh-rTW/strings.xml b/src/main/res/values-zh-rTW/strings.xml index 8a4d3539e..9a38dcaa7 100644 --- a/src/main/res/values-zh-rTW/strings.xml +++ b/src/main/res/values-zh-rTW/strings.xml @@ -60,7 +60,7 @@ 刪除訊息 之後結束這對話 選擇狀態訊息 - 發送純文字訊息 + 發送純文字訊息 發送 OTR 加密訊息 發送 OpenPGP 加密訊息 用戶名稱修改成功 @@ -129,7 +129,7 @@ 該用戶名稱已被使用 註冊完成 伺服器不支持註冊 - 純文字內容 + 純文字內容 OTR OpenPGP 編輯帳戶 diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 6abc17b13..0ee8676d3 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -78,7 +78,7 @@ Delete messages End this conversations afterwards Choose presence to contact - Send plain text message + Send unencrypted message Send OTR encrypted message Send OMEMO encrypted message Send OpenPGP encrypted message @@ -152,7 +152,7 @@ Server does not support registration Security error Incompatible server - Plain text + Unencrypted OTR OpenPGP OMEMO -- cgit v1.2.3 From 98e7d9c74ea6f3c3ae4243efa14b1655432c2a02 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 24 Aug 2015 21:24:48 +0200 Subject: pulled translations from transifex --- src/main/res/values-ar-rEG/strings.xml | 2 -- src/main/res/values-bg/strings.xml | 2 -- src/main/res/values-ca/strings.xml | 2 -- src/main/res/values-cs/strings.xml | 2 -- src/main/res/values-de/strings.xml | 6 ++++-- src/main/res/values-el/strings.xml | 2 -- src/main/res/values-es/strings.xml | 2 -- src/main/res/values-eu/strings.xml | 2 -- src/main/res/values-fr/strings.xml | 2 -- src/main/res/values-gl/strings.xml | 2 -- src/main/res/values-id/strings.xml | 16 ++++++++++++++-- src/main/res/values-it/strings.xml | 2 -- src/main/res/values-iw/strings.xml | 2 -- src/main/res/values-ja/strings.xml | 2 -- src/main/res/values-ko/strings.xml | 2 -- src/main/res/values-nl/strings.xml | 2 -- src/main/res/values-pl/strings.xml | 2 -- src/main/res/values-pt/strings.xml | 2 -- src/main/res/values-ro-rRO/strings.xml | 1 - src/main/res/values-ru/strings.xml | 2 -- src/main/res/values-sk/strings.xml | 2 -- src/main/res/values-sr/strings.xml | 2 -- src/main/res/values-sv/strings.xml | 2 -- src/main/res/values-zh-rCN/strings.xml | 2 -- src/main/res/values-zh-rTW/strings.xml | 2 -- 25 files changed, 18 insertions(+), 49 deletions(-) (limited to 'src') diff --git a/src/main/res/values-ar-rEG/strings.xml b/src/main/res/values-ar-rEG/strings.xml index 2c347f13b..b8a18cde1 100644 --- a/src/main/res/values-ar-rEG/strings.xml +++ b/src/main/res/values-ar-rEG/strings.xml @@ -76,7 +76,6 @@ حذف الرسائل انهاء هذه المحادثة بعد الكلمات اختيار ظهورك لجهات الإتصال - ارسال رسالة غير مشفّرة OTRارساله رساله مشفره عبر OpenPGPارساله رساله مشفره عبر تم تغيير لقبك بنجاح @@ -128,7 +127,6 @@ اسم المستخدم مستخدم من قبل تم تسجيل حسابك بنجاح تسجيل الحسابات غير متاح على هذا السرفر - رساله عادية OTRرسالة مشفرة عبر OpenPGPرسالة مشفرة عبر تعديل الحساب diff --git a/src/main/res/values-bg/strings.xml b/src/main/res/values-bg/strings.xml index c1064c193..ff5c090ae 100644 --- a/src/main/res/values-bg/strings.xml +++ b/src/main/res/values-bg/strings.xml @@ -76,7 +76,6 @@ Изтриване на съобщенията Този разговор да приключи след това Изберете присъствие за контакта - Изпр. на обикновено текстово съобщение Изпр. на съобщение, шифр. чрез OTP Изпр. на съобщение, шифр. чрез OMEMO Изпр. на съобщение, шифр. чрез OpenPGP @@ -150,7 +149,6 @@ Сървърът не поддържа регистриране Грешка в сигурността Несъвместим сървър - Обикновен текст OTR OpenPGP OMEMO diff --git a/src/main/res/values-ca/strings.xml b/src/main/res/values-ca/strings.xml index 2e508219a..83720cb4f 100644 --- a/src/main/res/values-ca/strings.xml +++ b/src/main/res/values-ca/strings.xml @@ -76,7 +76,6 @@ Esborrar missatges Finalitzar aquesta conversa més tard Selecciona recurs del contacte - Enviar missatge de text Enviar missatge xifrat amb OTR Enviar missatge xifrat amb OpenPGP El teu sobrenom s\'ha modificat @@ -147,7 +146,6 @@ El servidor no admet el registre Error de seguretat Servidor incompatible - Text pla OTR OpenPGP Edita compte diff --git a/src/main/res/values-cs/strings.xml b/src/main/res/values-cs/strings.xml index 8fb7babb6..9dfd80f37 100644 --- a/src/main/res/values-cs/strings.xml +++ b/src/main/res/values-cs/strings.xml @@ -76,7 +76,6 @@ Smazat zprávy Poté ukončit i tuto konverzaci Vybrat aktualizaci stavu pro kontakt - Poslat textovou zprávu Poslat OTR šifrovanou zprávu Poslat OMEMO šifrovanou zprávu Poslat OpenPGP šifrovanou zprávu @@ -150,7 +149,6 @@ Server nepodporuje registrace Bezpečnostní chyba Nekompatibilní server - Čistý text OTR OpenPGP OMEMO diff --git a/src/main/res/values-de/strings.xml b/src/main/res/values-de/strings.xml index ccb8f703e..ad793a6d0 100644 --- a/src/main/res/values-de/strings.xml +++ b/src/main/res/values-de/strings.xml @@ -76,7 +76,7 @@ Nachrichten löschen Diese Unterhaltung danach beenden Ressource des Kontakts auswählen - Normal schreiben… + Sende unverschlüsselte Nachricht OTR-verschlüsselt schreiben… OMEMO-verschlüsselt schreiben… OpenPGP-verschlüsselt schreiben… @@ -150,7 +150,7 @@ Der Server unterstützt keine Registrierung Sicherheitsfehler Inkompatibler Server - Klartext + Unverschlüsselt OTR OpenPGP OMEMO @@ -189,6 +189,7 @@ XEP-0237: Roster Versioning XEP-0198: Stream Management XEP-0163: PEP (Avatare) + XEP-xxxx: HTTP File Upload ja nein Öffentlicher Schlüssel fehlt @@ -368,6 +369,7 @@ Schlüssel löschen Soll dieser Schlüssel gelöscht werden? Dieser Vorgang kann nicht rückgängig gemacht werden und es kann nie wieder eine Verbindung mit diesem Schlüssel hergestellt werden. + Fehler Lade Chatverlauf… Keine weiteren Nachrichten vorhanden Aktualisiere… diff --git a/src/main/res/values-el/strings.xml b/src/main/res/values-el/strings.xml index 54c6b07ee..84b9d3b92 100644 --- a/src/main/res/values-el/strings.xml +++ b/src/main/res/values-el/strings.xml @@ -76,7 +76,6 @@ Διαγραφή μηνυμάτων Τερματισμός αυτής της συζήτησης αμέσως μετά Επιλέξτε παρουσία για επικοινωνία - Αποστολή απλού μηνύματος κειμένου Αποστολή κρυπτογραφημένου μηνύματος OTR Αποστολή κρυπτογραφημένου μηνύματος OpenPGP Το ψευδώνυμό σας έχει αλλάξει @@ -147,7 +146,6 @@ Ο διακομιστής δεν υποστηρίζει εγγραφή Σφάλμα ασφάλειας Μη συμβατός διακομιστής - Απλό κείμενο OTR OpenPGP Επεξεργασία λογαριασμού diff --git a/src/main/res/values-es/strings.xml b/src/main/res/values-es/strings.xml index 50f7974c1..9d6b9da67 100644 --- a/src/main/res/values-es/strings.xml +++ b/src/main/res/values-es/strings.xml @@ -76,7 +76,6 @@ Borrar mensajes Además, terminar esta conversación Selecciona recurso del contacto - Enviar mensaje de texto Enviar mensaje cifrado con OTR Enviar mensaje cifrado con OMEMO Enviar mensaje cifrado con OpenPGP @@ -150,7 +149,6 @@ El servidor no soporta registros Error de seguridad Servidor incompatible - Texto plano OTR OpenPGP OMEMO diff --git a/src/main/res/values-eu/strings.xml b/src/main/res/values-eu/strings.xml index d870f78da..c0bfc10b3 100644 --- a/src/main/res/values-eu/strings.xml +++ b/src/main/res/values-eu/strings.xml @@ -76,7 +76,6 @@ Mezuak ezabatu Elkarrizketa hau jarraian amaitu Hautatu agerpena kontaktuarentzat - Testu mezua bidali OTRz enkriptatutako mezua bidali OMEMOz enkriptatutako mezua bidali OpenPGPz enkriptatutako mezua bidali @@ -150,7 +149,6 @@ Zerbitzariak ez du erregistratzea onartzen Segurtasun akatsa Zerbitzari ez bateragarria - Testu laua OTR OpenPGP OMEMO diff --git a/src/main/res/values-fr/strings.xml b/src/main/res/values-fr/strings.xml index e2695988a..43500d6ff 100644 --- a/src/main/res/values-fr/strings.xml +++ b/src/main/res/values-fr/strings.xml @@ -76,7 +76,6 @@ Supprimer les messages Terminer plus tard cette conversation Choisir le status de présence - Envoyer un message Envoyer un message sécurisé par OTR Envoyer un message sécurisé par OpenPGP Votre identifiant a été changé @@ -147,7 +146,6 @@ Le serveur ne permet pas l\'enregistrement Erreur de sécurité Serveur incompatible - Texte clair OTR OpenPGP Modifier le compte diff --git a/src/main/res/values-gl/strings.xml b/src/main/res/values-gl/strings.xml index c98a4ced1..972a7bfea 100644 --- a/src/main/res/values-gl/strings.xml +++ b/src/main/res/values-gl/strings.xml @@ -44,7 +44,6 @@ Borrar mensaxes Terminar esta conversa máis tarde Selecciona recurso del contacto - Enviar mensaxe de texto Enviar mensaxe cifrado con OTR Enviar mensaxe cifrado con OpenPGP Modificouse o teu apodo @@ -107,7 +106,6 @@ O identificador xa está en uso Rexistro completado O servidor non soporta rexistros - Texto plano OTR OpenPGP Editar conta diff --git a/src/main/res/values-id/strings.xml b/src/main/res/values-id/strings.xml index fe5056716..bffee018b 100644 --- a/src/main/res/values-id/strings.xml +++ b/src/main/res/values-id/strings.xml @@ -76,7 +76,6 @@ Hapus pesan Akhiri percakapan setelahnya Pilih kehadiran untuk kontak - Kirim pesan teks biasa Kirim pesan terenskripsi OTR Kirim pesan terenskripsi OpenPGP Nick kamu telah dirubah @@ -147,7 +146,6 @@ Server tidak mendukung pendaftaran akun. Kesalahan keamanan Server tidak cocok - Teks biasa OTR OpenPGP Ubah akun @@ -202,6 +200,8 @@ Penerimaan gagal Fingerprint Anda OTR fingerprint + Perangkat lainnya + Selesai Verifikasi Deskripsi Conferences @@ -287,10 +287,12 @@ Anda telah ditendang dari conference ini menggunakan akun %s Anda tidak terhubung. Coba lagi nanti + Cek %s ukuran Opsi pesan Salin teks Salin URL asli Kirim lagi + URL Berkas Pesan teks URL disalin ke clipboard Pesan disalin ke clipboard @@ -345,6 +347,7 @@ Ulang Avatar akun Salin OTR fingerprint ke clipboard + Bersihkan perangkat Mengambil data dari server Tidak ada data lagi di server Merubah... @@ -441,4 +444,13 @@ Tak satupun Maling sering digunakan Pilih aksi cepat + Cari grup atau daftar kontak + Kirim pesan pribadi + %s meninggalkan conference! + Username + Username + Username ini tidak valid + Unduhan gagal: Server tidak ditemukan + Unduh gagal: Berkas tidak ditemukan + Unduhan gagal: Tidak dapat terhubung ke host diff --git a/src/main/res/values-it/strings.xml b/src/main/res/values-it/strings.xml index 35acf7f09..b20117bfc 100644 --- a/src/main/res/values-it/strings.xml +++ b/src/main/res/values-it/strings.xml @@ -76,7 +76,6 @@ Elimina messaggi Termina questa conversazione in seguito Choose presence to contact - Messaggio non cifrato Messaggio OTR Messaggio OpenPGP Il tuo nome utente è stato cambiato @@ -147,7 +146,6 @@ Il Server non supporta la registrazione Errore di sicurezza Server non compatibile - Testo semplice OTR OpenPGP Modifica utente diff --git a/src/main/res/values-iw/strings.xml b/src/main/res/values-iw/strings.xml index 857d7c92a..68daf846e 100644 --- a/src/main/res/values-iw/strings.xml +++ b/src/main/res/values-iw/strings.xml @@ -62,7 +62,6 @@ מחק הודעות סיים את דיון זה לאחר מכן בחר נוכחות לאיש קשר - שלח הודעת טקסט גלוי שלח הודעה מוצפנת OTR שלח הודעה מוצפנת OpenPGP שם כינוי שלך השתנה @@ -130,7 +129,6 @@ שם משתמש כבר מצוי בשימוש הרשמה הושלמה שרת לא תומך הרשמה - טקסט גלוי OTR OpenPGP ערוך חשבון diff --git a/src/main/res/values-ja/strings.xml b/src/main/res/values-ja/strings.xml index 743ddf9df..25970c3e7 100644 --- a/src/main/res/values-ja/strings.xml +++ b/src/main/res/values-ja/strings.xml @@ -76,7 +76,6 @@ メッセージを削除 その後、この会話を終了 連絡する参加を選択 - プレーンテキストを送信 OTR 暗号化メッセージを送信 OMEMO 暗号化メッセージを送信 OpenPGP 暗号化メッセージを送信 @@ -150,7 +149,6 @@ サーバーが登録をサポートしていません セキュリティ エラー 互換性のないサーバー - プレーンテキスト OTR OpenPGP OMEMO diff --git a/src/main/res/values-ko/strings.xml b/src/main/res/values-ko/strings.xml index 023ba609b..f95b43567 100644 --- a/src/main/res/values-ko/strings.xml +++ b/src/main/res/values-ko/strings.xml @@ -76,7 +76,6 @@ 메세지 삭제 나중에 이 대화 끝내기 연락할 프레즌스 선택 - 평문 메세지 전송 OTR 암호화된 메세지 전송 OpenPGP 암호화된 메세지 전송 닉네임이 변경되었습니다 @@ -147,7 +146,6 @@ 서버가 등록을 지원하지 않습니다 보안 오류 호환되지 않는 서버 - 평문 OTR OpenPGP 계정 편집 diff --git a/src/main/res/values-nl/strings.xml b/src/main/res/values-nl/strings.xml index d07a8f508..cbe5a6e7c 100644 --- a/src/main/res/values-nl/strings.xml +++ b/src/main/res/values-nl/strings.xml @@ -76,7 +76,6 @@ Berichten verwijderen Beëindig dit gesprek na afloop Kies aanwezigheid om te tonen aan contact - Verstuur onversleuteld bericht Verstuur OTR-versleuteld bericht Verstuur OMEMO-versleuteld bericht Verstuur OpenPGP-versleuteld bericht @@ -150,7 +149,6 @@ Server ondersteunt geen registratie Fout bij beveiliging Incompatibele server - Onversleuteld OTR OpenPGP OMEMO diff --git a/src/main/res/values-pl/strings.xml b/src/main/res/values-pl/strings.xml index 9a67aca2a..fc86b4b65 100644 --- a/src/main/res/values-pl/strings.xml +++ b/src/main/res/values-pl/strings.xml @@ -76,7 +76,6 @@ Usuń wiadomości Zakończ konwersację po usunięciu historii Wybierz widoczność dla kontaktu - Wyślij wiadomość jawną Wyślij zaszyfrowaną wiadomość (OTR) Wyślij zaszyfrowaną wiadomość (OpenPGP) Twoja nazwa została zmieniona @@ -147,7 +146,6 @@ Serwer nie umożliwia rejestracji Błąd zabezpieczeń Serwer niekompatybilny - Tekst jawny OTR OpenPGP Edytuj konto diff --git a/src/main/res/values-pt/strings.xml b/src/main/res/values-pt/strings.xml index 6f2c3c30d..f5e2750a8 100644 --- a/src/main/res/values-pt/strings.xml +++ b/src/main/res/values-pt/strings.xml @@ -74,7 +74,6 @@ Remover mensagens Finalizar essa conversa ao final Escolha a presença do contato - Enviar mensagem de texto puro Enviar mensagem criptografada com OTR Enviar mensagem criptografada com OpenPGP Seu apelido foi alterado @@ -137,7 +136,6 @@ O servidor não aceita o registro Erro de segurança Servidor incompatível - Texto puro OTR OpenPGP Editar conta diff --git a/src/main/res/values-ro-rRO/strings.xml b/src/main/res/values-ro-rRO/strings.xml index 61225013a..c70ce0520 100644 --- a/src/main/res/values-ro-rRO/strings.xml +++ b/src/main/res/values-ro-rRO/strings.xml @@ -75,7 +75,6 @@ Sterge mesajele Termina conversatia aceasta dupa Alege prezenta pentru a contacta - Trimite text necriptat Trimite mesaj criptat cu OTR Trimite mesaj criptat cu OpenPGP Numele tau a fost schimbat diff --git a/src/main/res/values-ru/strings.xml b/src/main/res/values-ru/strings.xml index e12b600c8..a18c34665 100644 --- a/src/main/res/values-ru/strings.xml +++ b/src/main/res/values-ru/strings.xml @@ -76,7 +76,6 @@ Удалить сообщения Завершить беседу Укажите статус для контакта - Отправить незашифрованное текстовое сообщение Отправить OTR защифрованное сообщение Отправить OpenPGP защифрованное сообщение Ваш псевдоним был изменен @@ -147,7 +146,6 @@ Сервер не поддерживает регистрацию Ошибка безопасности Несовместимый сервер - Без шифрования OTR OpenPGP Редактировать аккаунт diff --git a/src/main/res/values-sk/strings.xml b/src/main/res/values-sk/strings.xml index 4ce6b1f75..499ca6dd2 100644 --- a/src/main/res/values-sk/strings.xml +++ b/src/main/res/values-sk/strings.xml @@ -76,7 +76,6 @@ Vymazať správy Následne ukončiť aj túto konverzáciu Vybrať aktualizáciu stavu pre kontakt - Poslať textovú správu Poslať OTR šifrovanú správu Poslať OpenPGP šifrovanú správu Prezývka sa zmenila @@ -147,7 +146,6 @@ Server nepodporuje registráciu Bezpečnostná chyba Nekompatibilný server - Čistý text OTR OpenPGP Upraviť účet diff --git a/src/main/res/values-sr/strings.xml b/src/main/res/values-sr/strings.xml index c385b776c..5bf39f194 100644 --- a/src/main/res/values-sr/strings.xml +++ b/src/main/res/values-sr/strings.xml @@ -76,7 +76,6 @@ Обриши поруке Окончај ову преписку након тога Избор присутности за контакта - Пошаљи обичну текстуалну поруку Пошаљи ОТР шифровану поруку Пошаљи ОМЕМО шифровану поруку Пошаљи ОпенПГП шифровану поруку @@ -150,7 +149,6 @@ Сервер не подржава регистрацију Безбедносна грешка Некомпатибилан сервер - Обичан текст ОТР ОпенПГП ОМЕМО diff --git a/src/main/res/values-sv/strings.xml b/src/main/res/values-sv/strings.xml index a90c1ef75..d1e3265a5 100644 --- a/src/main/res/values-sv/strings.xml +++ b/src/main/res/values-sv/strings.xml @@ -76,7 +76,6 @@ Ta bort meddelanden Avsluta sedan denna konversation Välj tillgänglighet till kontakt - Skicka meddelande i klartext Skicka OTR-krypterat meddelande Skicka OMEMO-krypterat meddelande Skicka OpenPGP-krypterat meddelande @@ -150,7 +149,6 @@ Servern stödjer inte registrering Säkerhetsfel Inkompatibel server - Klartext OTR OpenPGP OMEMO diff --git a/src/main/res/values-zh-rCN/strings.xml b/src/main/res/values-zh-rCN/strings.xml index 0b6a9a77b..a77a177fb 100644 --- a/src/main/res/values-zh-rCN/strings.xml +++ b/src/main/res/values-zh-rCN/strings.xml @@ -76,7 +76,6 @@ 删除消息 之后结束该会话 添加在线用户至联系人 - 发送纯文本信息 发送 OTR 加密信息 发送 OpenPGP 加密信息 昵称修改成功 @@ -147,7 +146,6 @@ 服务器不支持注册 安全错误 服务器不兼容 - 纯文本内容 OTR OpenPGP 编辑账号 diff --git a/src/main/res/values-zh-rTW/strings.xml b/src/main/res/values-zh-rTW/strings.xml index 9a38dcaa7..495e427fd 100644 --- a/src/main/res/values-zh-rTW/strings.xml +++ b/src/main/res/values-zh-rTW/strings.xml @@ -60,7 +60,6 @@ 刪除訊息 之後結束這對話 選擇狀態訊息 - 發送純文字訊息 發送 OTR 加密訊息 發送 OpenPGP 加密訊息 用戶名稱修改成功 @@ -129,7 +128,6 @@ 該用戶名稱已被使用 註冊完成 伺服器不支持註冊 - 純文字內容 OTR OpenPGP 編輯帳戶 -- cgit v1.2.3 From f6374f466b52d7d6465449ce3bd8e50128f9878e Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 24 Aug 2015 21:25:04 +0200 Subject: increased carbon grace period to 90s --- src/main/java/eu/siacs/conversations/Config.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/main/java/eu/siacs/conversations/Config.java b/src/main/java/eu/siacs/conversations/Config.java index f3cbffe68..2b84e75e6 100644 --- a/src/main/java/eu/siacs/conversations/Config.java +++ b/src/main/java/eu/siacs/conversations/Config.java @@ -18,7 +18,7 @@ public final class Config { public static final int PING_TIMEOUT = 10; public static final int SOCKET_TIMEOUT = 15; public static final int CONNECT_TIMEOUT = 90; - public static final int CARBON_GRACE_PERIOD = 60; + public static final int CARBON_GRACE_PERIOD = 90; public static final int MINI_GRACE_PERIOD = 750; public static final int AVATAR_SIZE = 192; -- cgit v1.2.3 From 476db24c10180c0100bbd9a2cfbc34b672464b74 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Tue, 25 Aug 2015 11:11:32 +0200 Subject: fixed session time --- src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java index ddc3158ce..6a94a5f3e 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java @@ -318,7 +318,6 @@ public class XmppConnection implements Runnable { Log.d(Config.LOGTAG, account.getJid().toBareJid().toString() + ": stream management(" + smVersion + ") enabled"); } - this.lastSessionStarted = SystemClock.elapsedRealtime(); this.stanzasReceived = 0; final RequestPacket r = new RequestPacket(smVersion); tagWriter.writeStanzaAsync(r); @@ -784,6 +783,7 @@ public class XmppConnection implements Runnable { sendServiceDiscoveryInfo(account.getJid().toBareJid()); sendServiceDiscoveryItems(account.getServer()); Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": online with resource " + account.getResource()); + this.lastSessionStarted = SystemClock.elapsedRealtime(); changeStatus(Account.State.ONLINE); if (bindListener != null) { bindListener.onBind(account); @@ -1100,12 +1100,7 @@ public class XmppConnection implements Runnable { } public long getLastSessionEstablished() { - final long diff; - if (this.lastSessionStarted == 0) { - diff = SystemClock.elapsedRealtime() - this.lastConnect; - } else { - diff = SystemClock.elapsedRealtime() - this.lastSessionStarted; - } + final long diff = SystemClock.elapsedRealtime() - this.lastSessionStarted; return System.currentTimeMillis() - diff; } -- cgit v1.2.3 From 7617a19280d7d7c6d716ce366419db5993cc3254 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Tue, 25 Aug 2015 11:11:53 +0200 Subject: additonal null checks in file backend --- src/main/java/eu/siacs/conversations/persistance/FileBackend.java | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src') diff --git a/src/main/java/eu/siacs/conversations/persistance/FileBackend.java b/src/main/java/eu/siacs/conversations/persistance/FileBackend.java index 9381ba1d8..628f56303 100644 --- a/src/main/java/eu/siacs/conversations/persistance/FileBackend.java +++ b/src/main/java/eu/siacs/conversations/persistance/FileBackend.java @@ -137,6 +137,9 @@ public class FileBackend { options.inJustDecodeBounds = true; try { BitmapFactory.decodeStream(mXmppConnectionService.getContentResolver().openInputStream(uri), null, options); + if (options == null || options.outMimeType == null) { + return false; + } return (options.outWidth <= Config.IMAGE_SIZE && options.outHeight <= Config.IMAGE_SIZE && options.outMimeType.contains(Config.IMAGE_FORMAT.name().toLowerCase())); } catch (FileNotFoundException e) { return false; -- cgit v1.2.3 From 25c49d5e34a842ddbe0a7430c87ea46065468245 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Tue, 25 Aug 2015 11:12:10 +0200 Subject: catch some db query exceptions --- src/main/java/eu/siacs/conversations/utils/FileUtils.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/main/java/eu/siacs/conversations/utils/FileUtils.java b/src/main/java/eu/siacs/conversations/utils/FileUtils.java index a13300d43..c29841112 100644 --- a/src/main/java/eu/siacs/conversations/utils/FileUtils.java +++ b/src/main/java/eu/siacs/conversations/utils/FileUtils.java @@ -104,15 +104,17 @@ public class FileUtils { }; try { - cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, - null); + cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs,null); if (cursor != null && cursor.moveToFirst()) { final int column_index = cursor.getColumnIndexOrThrow(column); return cursor.getString(column_index); } + } catch(Exception e) { + return null; } finally { - if (cursor != null) + if (cursor != null) { cursor.close(); + } } return null; } -- cgit v1.2.3 From 5eae1e52d264ac78f5e902fc647009cde5337946 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Tue, 25 Aug 2015 11:43:10 +0200 Subject: cleared up some error messages in axolotl service and execute publishOwnDevicesWhenNeeded() only if processing our own jid --- .../eu/siacs/conversations/crypto/axolotl/AxolotlService.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java b/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java index d700b644b..21b49b10b 100644 --- a/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java +++ b/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java @@ -282,7 +282,9 @@ public class AxolotlService { XmppAxolotlSession.Trust.UNTRUSTED); this.deviceIds.put(jid, deviceIds); mXmppConnectionService.keyStatusUpdated(); - publishOwnDeviceIdIfNeeded(); + if (account.getJid().toBareJid().equals(jid.toBareJid())) { + publishOwnDeviceIdIfNeeded(); + } } public void wipeOtherPepDevices() { @@ -320,12 +322,14 @@ public class AxolotlService { mXmppConnectionService.sendIqPacket(account, publish, new OnIqPacketReceived() { @Override public void onIqPacketReceived(Account account, IqPacket packet) { - // TODO: implement this! + if (packet.getType() != IqPacket.TYPE.RESULT) { + Log.d(Config.LOGTAG, getLogprefix(account)+ "Error received while publishing own device id" + packet.findChild("error")); + } } }); } } else { - Log.d(Config.LOGTAG, getLogprefix(account) + "Error received while publishing device ID:" + packet.findChild("error")); + Log.d(Config.LOGTAG, getLogprefix(account) + "Error received while retrieving Device Ids" + packet.findChild("error")); } } }); -- cgit v1.2.3 From b84fecf51abd0f6e02d49307827622b5aa6f4044 Mon Sep 17 00:00:00 2001 From: Andreas Straub Date: Tue, 25 Aug 2015 12:17:09 +0200 Subject: Pass through device IDs when updating own list --- .../crypto/axolotl/AxolotlService.java | 34 +++++++++++----------- 1 file changed, 17 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java b/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java index 21b49b10b..816264eae 100644 --- a/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java +++ b/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java @@ -257,6 +257,8 @@ public class AxolotlService { if (jid.toBareJid().equals(account.getJid().toBareJid())) { if (deviceIds.contains(getOwnDeviceId())) { deviceIds.remove(getOwnDeviceId()); + } else { + publishOwnDeviceId(deviceIds); } for (Integer deviceId : deviceIds) { AxolotlAddress ownDeviceAddress = new AxolotlAddress(jid.toBareJid().toString(), deviceId); @@ -282,9 +284,6 @@ public class AxolotlService { XmppAxolotlSession.Trust.UNTRUSTED); this.deviceIds.put(jid, deviceIds); mXmppConnectionService.keyStatusUpdated(); - if (account.getJid().toBareJid().equals(jid.toBareJid())) { - publishOwnDeviceIdIfNeeded(); - } } public void wipeOtherPepDevices() { @@ -312,21 +311,8 @@ public class AxolotlService { if (packet.getType() == IqPacket.TYPE.RESULT) { Element item = mXmppConnectionService.getIqParser().getItem(packet); Set deviceIds = mXmppConnectionService.getIqParser().deviceIds(item); - if (deviceIds == null) { - deviceIds = new HashSet(); - } if (!deviceIds.contains(getOwnDeviceId())) { - deviceIds.add(getOwnDeviceId()); - IqPacket publish = mXmppConnectionService.getIqGenerator().publishDeviceIds(deviceIds); - Log.d(Config.LOGTAG, AxolotlService.getLogprefix(account) + "Own device " + getOwnDeviceId() + " not in PEP devicelist. Publishing: " + publish); - mXmppConnectionService.sendIqPacket(account, publish, new OnIqPacketReceived() { - @Override - public void onIqPacketReceived(Account account, IqPacket packet) { - if (packet.getType() != IqPacket.TYPE.RESULT) { - Log.d(Config.LOGTAG, getLogprefix(account)+ "Error received while publishing own device id" + packet.findChild("error")); - } - } - }); + publishOwnDeviceId(deviceIds); } } else { Log.d(Config.LOGTAG, getLogprefix(account) + "Error received while retrieving Device Ids" + packet.findChild("error")); @@ -335,6 +321,20 @@ public class AxolotlService { }); } + public void publishOwnDeviceId(Set deviceIds) { + deviceIds.add(getOwnDeviceId()); + IqPacket publish = mXmppConnectionService.getIqGenerator().publishDeviceIds(deviceIds); + Log.d(Config.LOGTAG, AxolotlService.getLogprefix(account) + "Own device " + getOwnDeviceId() + " not in PEP devicelist. Publishing: " + publish); + mXmppConnectionService.sendIqPacket(account, publish, new OnIqPacketReceived() { + @Override + public void onIqPacketReceived(Account account, IqPacket packet) { + if (packet.getType() != IqPacket.TYPE.RESULT) { + Log.d(Config.LOGTAG, getLogprefix(account) + "Error received while publishing own device id" + packet.findChild("error")); + } + } + }); + } + public void publishBundlesIfNeeded() { IqPacket packet = mXmppConnectionService.getIqGenerator().retrieveBundlesForDevice(account.getJid().toBareJid(), getOwnDeviceId()); mXmppConnectionService.sendIqPacket(account, packet, new OnIqPacketReceived() { -- cgit v1.2.3 From ae9de26f597b63733e584e65e51adbfd1df755ad Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 25 Aug 2015 12:40:22 +0200 Subject: remove unused imports. --- .../conversations/persistance/FileBackend.java | 2 -- .../services/XmppConnectionService.java | 2 +- .../conversations/ui/adapter/MessageAdapter.java | 1 - .../conversations/xmpp/jingle/JingleTransport.java | 26 ---------------------- 4 files changed, 1 insertion(+), 30 deletions(-) (limited to 'src') diff --git a/src/main/java/eu/siacs/conversations/persistance/FileBackend.java b/src/main/java/eu/siacs/conversations/persistance/FileBackend.java index 628f56303..d5e4645ea 100644 --- a/src/main/java/eu/siacs/conversations/persistance/FileBackend.java +++ b/src/main/java/eu/siacs/conversations/persistance/FileBackend.java @@ -1,6 +1,5 @@ package eu.siacs.conversations.persistance; -import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; @@ -8,7 +7,6 @@ import android.graphics.Matrix; import android.graphics.RectF; import android.net.Uri; import android.os.Environment; -import android.provider.MediaStore; import android.util.Base64; import android.util.Base64OutputStream; import android.util.Log; diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index b08a71bfa..ef0c84d54 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -84,9 +84,9 @@ import eu.siacs.conversations.xml.Element; import eu.siacs.conversations.xmpp.OnBindListener; import eu.siacs.conversations.xmpp.OnContactStatusChanged; import eu.siacs.conversations.xmpp.OnIqPacketReceived; +import eu.siacs.conversations.xmpp.OnKeyStatusUpdated; import eu.siacs.conversations.xmpp.OnMessageAcknowledged; import eu.siacs.conversations.xmpp.OnMessagePacketReceived; -import eu.siacs.conversations.xmpp.OnKeyStatusUpdated; import eu.siacs.conversations.xmpp.OnPresencePacketReceived; import eu.siacs.conversations.xmpp.OnStatusChanged; import eu.siacs.conversations.xmpp.OnUpdateBlocklist; diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java index 8cdcb585f..d20761b22 100644 --- a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java +++ b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java @@ -3,7 +3,6 @@ package eu.siacs.conversations.ui.adapter; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; -import android.graphics.Color; import android.graphics.Typeface; import android.net.Uri; import android.text.Spannable; diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleTransport.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleTransport.java index b32111584..e832d3f58 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleTransport.java +++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleTransport.java @@ -1,31 +1,5 @@ package eu.siacs.conversations.xmpp.jingle; -import android.util.Log; -import android.util.Pair; - -import org.bouncycastle.crypto.engines.AESEngine; -import org.bouncycastle.crypto.modes.AEADBlockCipher; -import org.bouncycastle.crypto.modes.GCMBlockCipher; -import org.bouncycastle.crypto.params.AEADParameters; -import org.bouncycastle.crypto.params.KeyParameter; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.InputStream; -import java.io.OutputStream; -import java.security.InvalidAlgorithmParameterException; -import java.security.InvalidKeyException; -import java.security.NoSuchAlgorithmException; - -import javax.crypto.Cipher; -import javax.crypto.CipherInputStream; -import javax.crypto.CipherOutputStream; -import javax.crypto.NoSuchPaddingException; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.SecretKeySpec; - -import eu.siacs.conversations.Config; import eu.siacs.conversations.entities.DownloadableFile; public abstract class JingleTransport { -- cgit v1.2.3 From eafcf38ec9efc635ce81b8dd7d867eba67072873 Mon Sep 17 00:00:00 2001 From: Andreas Straub Date: Tue, 25 Aug 2015 18:41:30 +0200 Subject: Limit number of PEP publish tries If PEP publish tries are repeatedly triggered by empty PEP updates, stop attempting to publish after 3 tries. This should work around broken PEP implementations in older ejabberd and OpenFire versions. --- .../crypto/axolotl/AxolotlService.java | 51 ++++++++++++++++++---- 1 file changed, 42 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java b/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java index 816264eae..a724429dd 100644 --- a/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java +++ b/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java @@ -50,6 +50,7 @@ public class AxolotlService { public static final String LOGPREFIX = "AxolotlService"; public static final int NUM_KEYS_TO_PUBLISH = 100; + public static final int publishTriesThreshold = 3; private final Account account; private final XmppConnectionService mXmppConnectionService; @@ -59,6 +60,8 @@ public class AxolotlService { private final Map messageCache; private final FetchStatusMap fetchStatusMap; private final SerialSingleThreadExecutor executor; + private int numPublishTriesOnEmptyPep = 0; + private boolean pepBroken = false; private static class AxolotlAddressMap { protected Map> map; @@ -255,6 +258,10 @@ public class AxolotlService { public void registerDevices(final Jid jid, @NonNull final Set deviceIds) { if (jid.toBareJid().equals(account.getJid().toBareJid())) { + if (!deviceIds.isEmpty()) { + pepBroken = false; + numPublishTriesOnEmptyPep = 0; + } if (deviceIds.contains(getOwnDeviceId())) { deviceIds.remove(getOwnDeviceId()); } else { @@ -287,6 +294,10 @@ public class AxolotlService { } public void wipeOtherPepDevices() { + if (pepBroken) { + Log.d(Config.LOGTAG, getLogprefix(account) + "wipeOtherPepDevices called, but PEP is broken. Ignoring... "); + return; + } Set deviceIds = new HashSet<>(); deviceIds.add(getOwnDeviceId()); IqPacket publish = mXmppConnectionService.getIqGenerator().publishDeviceIds(deviceIds); @@ -304,6 +315,10 @@ public class AxolotlService { } public void publishOwnDeviceIdIfNeeded() { + if (pepBroken) { + Log.d(Config.LOGTAG, getLogprefix(account) + "publishOwnDeviceIdIfNeeded called, but PEP is broken. Ignoring... "); + return; + } IqPacket packet = mXmppConnectionService.getIqGenerator().retrieveDeviceIds(account.getJid().toBareJid()); mXmppConnectionService.sendIqPacket(account, packet, new OnIqPacketReceived() { @Override @@ -322,20 +337,38 @@ public class AxolotlService { } public void publishOwnDeviceId(Set deviceIds) { - deviceIds.add(getOwnDeviceId()); - IqPacket publish = mXmppConnectionService.getIqGenerator().publishDeviceIds(deviceIds); - Log.d(Config.LOGTAG, AxolotlService.getLogprefix(account) + "Own device " + getOwnDeviceId() + " not in PEP devicelist. Publishing: " + publish); - mXmppConnectionService.sendIqPacket(account, publish, new OnIqPacketReceived() { - @Override - public void onIqPacketReceived(Account account, IqPacket packet) { - if (packet.getType() != IqPacket.TYPE.RESULT) { - Log.d(Config.LOGTAG, getLogprefix(account) + "Error received while publishing own device id" + packet.findChild("error")); + if (!deviceIds.contains(getOwnDeviceId())) { + Log.d(Config.LOGTAG, AxolotlService.getLogprefix(account) + "Own device " + getOwnDeviceId() + " not in PEP devicelist."); + if (deviceIds.isEmpty()) { + if (numPublishTriesOnEmptyPep >= publishTriesThreshold) { + Log.w(Config.LOGTAG, getLogprefix(account) + "Own device publish attempt threshold exceeded, aborting..."); + pepBroken = true; + return; + } else { + numPublishTriesOnEmptyPep++; + Log.w(Config.LOGTAG, getLogprefix(account) + "Own device list empty, attempting to publish (try " + numPublishTriesOnEmptyPep + ")"); } + } else { + numPublishTriesOnEmptyPep = 0; } - }); + deviceIds.add(getOwnDeviceId()); + IqPacket publish = mXmppConnectionService.getIqGenerator().publishDeviceIds(deviceIds); + mXmppConnectionService.sendIqPacket(account, publish, new OnIqPacketReceived() { + @Override + public void onIqPacketReceived(Account account, IqPacket packet) { + if (packet.getType() != IqPacket.TYPE.RESULT) { + Log.d(Config.LOGTAG, getLogprefix(account) + "Error received while publishing own device id" + packet.findChild("error")); + } + } + }); + } } public void publishBundlesIfNeeded() { + if (!pepBroken) { + Log.d(Config.LOGTAG, getLogprefix(account) + "publishBundlesIfNeeded called, but PEP is broken. Ignoring... "); + return; + } IqPacket packet = mXmppConnectionService.getIqGenerator().retrieveBundlesForDevice(account.getJid().toBareJid(), getOwnDeviceId()); mXmppConnectionService.sendIqPacket(account, packet, new OnIqPacketReceived() { @Override -- cgit v1.2.3 From 25a9d59412690528c86df6fb7d73a3bfba12825c Mon Sep 17 00:00:00 2001 From: Andreas Straub Date: Tue, 25 Aug 2015 18:52:36 +0200 Subject: Add more logging to pep attemp counter logic --- src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java b/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java index a724429dd..42e87494c 100644 --- a/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java +++ b/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java @@ -259,6 +259,7 @@ public class AxolotlService { public void registerDevices(final Jid jid, @NonNull final Set deviceIds) { if (jid.toBareJid().equals(account.getJid().toBareJid())) { if (!deviceIds.isEmpty()) { + Log.d(Config.LOGTAG, getLogprefix(account) + "Received non-empty own device list. Resetting publish attemps and pepBroken status."); pepBroken = false; numPublishTriesOnEmptyPep = 0; } -- cgit v1.2.3 From 0eeaccd974a123b656f5e0affde88dbbc3173821 Mon Sep 17 00:00:00 2001 From: Andreas Straub Date: Wed, 26 Aug 2015 00:27:39 +0200 Subject: Fix key publishing Remove invalid check for result code, which prevented publishing if the node was empty to begin with. Fix pepBroken check --- .../crypto/axolotl/AxolotlService.java | 140 ++++++++++----------- 1 file changed, 68 insertions(+), 72 deletions(-) (limited to 'src') diff --git a/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java b/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java index 42e87494c..4452fcc4c 100644 --- a/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java +++ b/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java @@ -366,7 +366,7 @@ public class AxolotlService { } public void publishBundlesIfNeeded() { - if (!pepBroken) { + if (pepBroken) { Log.d(Config.LOGTAG, getLogprefix(account) + "publishBundlesIfNeeded called, but PEP is broken. Ignoring... "); return; } @@ -374,92 +374,88 @@ public class AxolotlService { mXmppConnectionService.sendIqPacket(account, packet, new OnIqPacketReceived() { @Override public void onIqPacketReceived(Account account, IqPacket packet) { - if (packet.getType() == IqPacket.TYPE.RESULT) { - PreKeyBundle bundle = mXmppConnectionService.getIqParser().bundle(packet); - Map keys = mXmppConnectionService.getIqParser().preKeyPublics(packet); - boolean flush = false; - if (bundle == null) { - Log.w(Config.LOGTAG, AxolotlService.getLogprefix(account) + "Received invalid bundle:" + packet); - bundle = new PreKeyBundle(-1, -1, -1, null, -1, null, null, null); - flush = true; - } - if (keys == null) { - Log.w(Config.LOGTAG, AxolotlService.getLogprefix(account) + "Received invalid prekeys:" + packet); + PreKeyBundle bundle = mXmppConnectionService.getIqParser().bundle(packet); + Map keys = mXmppConnectionService.getIqParser().preKeyPublics(packet); + boolean flush = false; + if (bundle == null) { + Log.w(Config.LOGTAG, AxolotlService.getLogprefix(account) + "Received invalid bundle:" + packet); + bundle = new PreKeyBundle(-1, -1, -1, null, -1, null, null, null); + flush = true; + } + if (keys == null) { + Log.w(Config.LOGTAG, AxolotlService.getLogprefix(account) + "Received invalid prekeys:" + packet); + } + try { + boolean changed = false; + // Validate IdentityKey + IdentityKeyPair identityKeyPair = axolotlStore.getIdentityKeyPair(); + if (flush || !identityKeyPair.getPublicKey().equals(bundle.getIdentityKey())) { + Log.i(Config.LOGTAG, AxolotlService.getLogprefix(account) + "Adding own IdentityKey " + identityKeyPair.getPublicKey() + " to PEP."); + changed = true; } - try { - boolean changed = false; - // Validate IdentityKey - IdentityKeyPair identityKeyPair = axolotlStore.getIdentityKeyPair(); - if (flush || !identityKeyPair.getPublicKey().equals(bundle.getIdentityKey())) { - Log.i(Config.LOGTAG, AxolotlService.getLogprefix(account) + "Adding own IdentityKey " + identityKeyPair.getPublicKey() + " to PEP."); - changed = true; - } - // Validate signedPreKeyRecord + ID - SignedPreKeyRecord signedPreKeyRecord; - int numSignedPreKeys = axolotlStore.loadSignedPreKeys().size(); - try { - signedPreKeyRecord = axolotlStore.loadSignedPreKey(bundle.getSignedPreKeyId()); - if (flush - || !bundle.getSignedPreKey().equals(signedPreKeyRecord.getKeyPair().getPublicKey()) - || !Arrays.equals(bundle.getSignedPreKeySignature(), signedPreKeyRecord.getSignature())) { - Log.i(Config.LOGTAG, AxolotlService.getLogprefix(account) + "Adding new signedPreKey with ID " + (numSignedPreKeys + 1) + " to PEP."); - signedPreKeyRecord = KeyHelper.generateSignedPreKey(identityKeyPair, numSignedPreKeys + 1); - axolotlStore.storeSignedPreKey(signedPreKeyRecord.getId(), signedPreKeyRecord); - changed = true; - } - } catch (InvalidKeyIdException e) { + // Validate signedPreKeyRecord + ID + SignedPreKeyRecord signedPreKeyRecord; + int numSignedPreKeys = axolotlStore.loadSignedPreKeys().size(); + try { + signedPreKeyRecord = axolotlStore.loadSignedPreKey(bundle.getSignedPreKeyId()); + if (flush + || !bundle.getSignedPreKey().equals(signedPreKeyRecord.getKeyPair().getPublicKey()) + || !Arrays.equals(bundle.getSignedPreKeySignature(), signedPreKeyRecord.getSignature())) { Log.i(Config.LOGTAG, AxolotlService.getLogprefix(account) + "Adding new signedPreKey with ID " + (numSignedPreKeys + 1) + " to PEP."); signedPreKeyRecord = KeyHelper.generateSignedPreKey(identityKeyPair, numSignedPreKeys + 1); axolotlStore.storeSignedPreKey(signedPreKeyRecord.getId(), signedPreKeyRecord); changed = true; } + } catch (InvalidKeyIdException e) { + Log.i(Config.LOGTAG, AxolotlService.getLogprefix(account) + "Adding new signedPreKey with ID " + (numSignedPreKeys + 1) + " to PEP."); + signedPreKeyRecord = KeyHelper.generateSignedPreKey(identityKeyPair, numSignedPreKeys + 1); + axolotlStore.storeSignedPreKey(signedPreKeyRecord.getId(), signedPreKeyRecord); + changed = true; + } - // Validate PreKeys - Set preKeyRecords = new HashSet<>(); - if (keys != null) { - for (Integer id : keys.keySet()) { - try { - PreKeyRecord preKeyRecord = axolotlStore.loadPreKey(id); - if (preKeyRecord.getKeyPair().getPublicKey().equals(keys.get(id))) { - preKeyRecords.add(preKeyRecord); - } - } catch (InvalidKeyIdException ignored) { + // Validate PreKeys + Set preKeyRecords = new HashSet<>(); + if (keys != null) { + for (Integer id : keys.keySet()) { + try { + PreKeyRecord preKeyRecord = axolotlStore.loadPreKey(id); + if (preKeyRecord.getKeyPair().getPublicKey().equals(keys.get(id))) { + preKeyRecords.add(preKeyRecord); } + } catch (InvalidKeyIdException ignored) { } } - int newKeys = NUM_KEYS_TO_PUBLISH - preKeyRecords.size(); - if (newKeys > 0) { - List newRecords = KeyHelper.generatePreKeys( - axolotlStore.getCurrentPreKeyId() + 1, newKeys); - preKeyRecords.addAll(newRecords); - for (PreKeyRecord record : newRecords) { - axolotlStore.storePreKey(record.getId(), record); - } - changed = true; - Log.i(Config.LOGTAG, AxolotlService.getLogprefix(account) + "Adding " + newKeys + " new preKeys to PEP."); + } + int newKeys = NUM_KEYS_TO_PUBLISH - preKeyRecords.size(); + if (newKeys > 0) { + List newRecords = KeyHelper.generatePreKeys( + axolotlStore.getCurrentPreKeyId() + 1, newKeys); + preKeyRecords.addAll(newRecords); + for (PreKeyRecord record : newRecords) { + axolotlStore.storePreKey(record.getId(), record); } + changed = true; + Log.i(Config.LOGTAG, AxolotlService.getLogprefix(account) + "Adding " + newKeys + " new preKeys to PEP."); + } - if (changed) { - IqPacket publish = mXmppConnectionService.getIqGenerator().publishBundles( - signedPreKeyRecord, axolotlStore.getIdentityKeyPair().getPublicKey(), - preKeyRecords, getOwnDeviceId()); - Log.d(Config.LOGTAG, AxolotlService.getLogprefix(account) + ": Bundle " + getOwnDeviceId() + " in PEP not current. Publishing: " + publish); - mXmppConnectionService.sendIqPacket(account, publish, new OnIqPacketReceived() { - @Override - public void onIqPacketReceived(Account account, IqPacket packet) { - // TODO: implement this! - Log.d(Config.LOGTAG, AxolotlService.getLogprefix(account) + "Published bundle, got: " + packet); - } - }); - } - } catch (InvalidKeyException e) { - Log.e(Config.LOGTAG, AxolotlService.getLogprefix(account) + "Failed to publish bundle " + getOwnDeviceId() + ", reason: " + e.getMessage()); - return; + if (changed) { + IqPacket publish = mXmppConnectionService.getIqGenerator().publishBundles( + signedPreKeyRecord, axolotlStore.getIdentityKeyPair().getPublicKey(), + preKeyRecords, getOwnDeviceId()); + Log.d(Config.LOGTAG, AxolotlService.getLogprefix(account) + ": Bundle " + getOwnDeviceId() + " in PEP not current. Publishing: " + publish); + mXmppConnectionService.sendIqPacket(account, publish, new OnIqPacketReceived() { + @Override + public void onIqPacketReceived(Account account, IqPacket packet) { + // TODO: implement this! + Log.d(Config.LOGTAG, AxolotlService.getLogprefix(account) + "Published bundle, got: " + packet); + } + }); } - } else { - Log.d(Config.LOGTAG, getLogprefix(account) + "Error received while publishing Bundle:" + packet.findChild("error")); + } catch (InvalidKeyException e) { + Log.e(Config.LOGTAG, AxolotlService.getLogprefix(account) + "Failed to publish bundle " + getOwnDeviceId() + ", reason: " + e.getMessage()); + return; } } }); -- cgit v1.2.3 From 3e0636367a733285526c709138110ddb86899196 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Wed, 26 Aug 2015 11:39:18 +0200 Subject: Revert "improved compatibility with muc components that change the message id" This reverts commit df86b0fc47cb7af8e97826f97d0e202405cff414. --- src/main/java/eu/siacs/conversations/parser/MessageParser.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/main/java/eu/siacs/conversations/parser/MessageParser.java b/src/main/java/eu/siacs/conversations/parser/MessageParser.java index 025ed1e7e..ec900de4d 100644 --- a/src/main/java/eu/siacs/conversations/parser/MessageParser.java +++ b/src/main/java/eu/siacs/conversations/parser/MessageParser.java @@ -311,10 +311,9 @@ public class MessageParser extends AbstractParser implements status = Message.STATUS_SEND_RECEIVED; if (mXmppConnectionService.markMessage(conversation, remoteMsgId, status)) { return; - } else { - Message message = conversation.findSentMessageWithBody(body); + } else if (remoteMsgId == null) { + Message message = conversation.findSentMessageWithBody(packet.getBody()); if (message != null) { - message.setRemoteMsgId(remoteMsgId); mXmppConnectionService.markMessage(message, status); return; } -- cgit v1.2.3 From ea2ce78d6e0b37db21ebffd9f0f991ab25e17f1a Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Wed, 26 Aug 2015 12:11:12 +0200 Subject: be more restrictive about marking messages as sent_received in muc parser --- .../siacs/conversations/entities/Conversation.java | 21 ++++++++++++++++----- .../services/XmppConnectionService.java | 5 ++--- 2 files changed, 18 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/main/java/eu/siacs/conversations/entities/Conversation.java b/src/main/java/eu/siacs/conversations/entities/Conversation.java index 36d6b43b0..e6c044a1c 100644 --- a/src/main/java/eu/siacs/conversations/entities/Conversation.java +++ b/src/main/java/eu/siacs/conversations/entities/Conversation.java @@ -201,14 +201,25 @@ public class Conversation extends AbstractEntity implements Blockable { } } - public Message findSentMessageWithUuid(String uuid) { + public Message findSentMessageWithUuidOrRemoteId(String id) { synchronized (this.messages) { for (Message message : this.messages) { - if (uuid.equals(message.getUuid()) - || (message.getStatus() >= Message.STATUS_SEND && uuid - .equals(message.getRemoteMsgId()))) { + if (id.equals(message.getUuid()) + || (message.getStatus() >= Message.STATUS_SEND + && id.equals(message.getRemoteMsgId()))) { return message; - } + } + } + } + return null; + } + + public Message findSentMessageWithUuid(String id) { + synchronized (this.messages) { + for (Message message : this.messages) { + if (id.equals(message.getUuid())) { + return message; + } } } return null; diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index ef0c84d54..a2b101bbe 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -2216,7 +2216,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa } for (Conversation conversation : getConversations()) { if (conversation.getJid().toBareJid().equals(recipient) && conversation.getAccount() == account) { - final Message message = conversation.findSentMessageWithUuid(uuid); + final Message message = conversation.findSentMessageWithUuidOrRemoteId(uuid); if (message != null) { markMessage(message, status); } @@ -2226,8 +2226,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa return null; } - public boolean markMessage(Conversation conversation, String uuid, - int status) { + public boolean markMessage(Conversation conversation, String uuid, int status) { if (uuid == null) { return false; } else { -- cgit v1.2.3 From f6b7a25e290d3ddfa46a5e704b05abe0e6b50dd5 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Wed, 26 Aug 2015 14:01:37 +0200 Subject: moved actual iq callback out of synchronized find callback block --- src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java index 6a94a5f3e..bb0c3987b 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java @@ -472,29 +472,33 @@ public class XmppConnection implements Runnable { this.jingleListener.onJinglePacketReceived(account,(JinglePacket) packet); } } else { + OnIqPacketReceived callback = null; synchronized (this.packetCallbacks) { if (packetCallbacks.containsKey(packet.getId())) { final Pair packetCallbackDuple = packetCallbacks.get(packet.getId()); // Packets to the server should have responses from the server if (packetCallbackDuple.first.toServer(account)) { if (packet.fromServer(account)) { - packetCallbackDuple.second.onIqPacketReceived(account, packet); + callback = packetCallbackDuple.second; packetCallbacks.remove(packet.getId()); } else { Log.e(Config.LOGTAG, account.getJid().toBareJid().toString() + ": ignoring spoofed iq packet"); } } else { if (packet.getFrom().equals(packetCallbackDuple.first.getTo())) { - packetCallbackDuple.second.onIqPacketReceived(account, packet); + callback = packetCallbackDuple.second; packetCallbacks.remove(packet.getId()); } else { Log.e(Config.LOGTAG, account.getJid().toBareJid().toString() + ": ignoring spoofed iq packet"); } } } else if (packet.getType() == IqPacket.TYPE.GET || packet.getType() == IqPacket.TYPE.SET) { - this.unregisteredIqListener.onIqPacketReceived(account, packet); + callback = this.unregisteredIqListener; } } + if (callback != null) { + callback.onIqPacketReceived(account,packet); + } } } -- cgit v1.2.3 From c4a548ada00f5abd175e28ac1df5204f8bbc092f Mon Sep 17 00:00:00 2001 From: Andreas Straub Date: Wed, 26 Aug 2015 15:32:49 +0200 Subject: Only announce device after publishing bundle --- .../crypto/axolotl/AxolotlService.java | 24 ++++++++++++++++------ .../services/XmppConnectionService.java | 3 +-- 2 files changed, 19 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java b/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java index 4452fcc4c..17d911b44 100644 --- a/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java +++ b/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java @@ -231,8 +231,7 @@ public class AxolotlService { axolotlStore.regenerate(); sessions.clear(); fetchStatusMap.clear(); - publishBundlesIfNeeded(); - publishOwnDeviceIdIfNeeded(); + publishBundlesIfNeeded(true); } public int getOwnDeviceId() { @@ -365,7 +364,7 @@ public class AxolotlService { } } - public void publishBundlesIfNeeded() { + public void publishBundlesIfNeeded(final boolean announceAfter) { if (pepBroken) { Log.d(Config.LOGTAG, getLogprefix(account) + "publishBundlesIfNeeded called, but PEP is broken. Ignoring... "); return; @@ -448,10 +447,23 @@ public class AxolotlService { mXmppConnectionService.sendIqPacket(account, publish, new OnIqPacketReceived() { @Override public void onIqPacketReceived(Account account, IqPacket packet) { - // TODO: implement this! - Log.d(Config.LOGTAG, AxolotlService.getLogprefix(account) + "Published bundle, got: " + packet); + if (packet.getType() == IqPacket.TYPE.RESULT) { + Log.d(Config.LOGTAG, AxolotlService.getLogprefix(account) + "Successfully published bundle. "); + if (announceAfter) { + Log.d(Config.LOGTAG, getLogprefix(account) + "Announcing device " + getOwnDeviceId()); + publishOwnDeviceIdIfNeeded(); + } + } else { + Log.d(Config.LOGTAG, getLogprefix(account) + "Error received while publishing bundle: " + packet.findChild("error")); + } } }); + } else { + Log.d(Config.LOGTAG, getLogprefix(account) + "Bundle " + getOwnDeviceId() + " in PEP was current"); + if (announceAfter) { + Log.d(Config.LOGTAG, getLogprefix(account) + "Announcing device " + getOwnDeviceId()); + publishOwnDeviceIdIfNeeded(); + } } } catch (InvalidKeyException e) { Log.e(Config.LOGTAG, AxolotlService.getLogprefix(account) + "Failed to publish bundle " + getOwnDeviceId() + ", reason: " + e.getMessage()); @@ -733,7 +745,7 @@ public class AxolotlService { plaintextMessage = message.decrypt(session, getOwnDeviceId()); Integer preKeyId = session.getPreKeyId(); if (preKeyId != null) { - publishBundlesIfNeeded(); + publishBundlesIfNeeded(false); session.resetPreKeyId(); } } catch (CryptoFailedException e) { diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index a2b101bbe..4edaa324c 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -165,8 +165,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa mMessageArchiveService.executePendingQueries(account); mJingleConnectionManager.cancelInTransmission(); syncDirtyContacts(account); - account.getAxolotlService().publishOwnDeviceIdIfNeeded(); - account.getAxolotlService().publishBundlesIfNeeded(); + account.getAxolotlService().publishBundlesIfNeeded(true); } }; private final OnMessageAcknowledged mOnMessageAcknowledgedListener = new OnMessageAcknowledged() { -- cgit v1.2.3