diff --git a/resources/releasedocs/changelog.html b/resources/releasedocs/changelog.html
index 7e189a858..b844e1e00 100644
--- a/resources/releasedocs/changelog.html
+++ b/resources/releasedocs/changelog.html
@@ -141,6 +141,26 @@ hr {
+
4.1.7 -- 2016-04-14
+
+
Bug
+
+
+- [SMACK-712] - XMPPTCPConnection's setEnabledSSL(Protocols|Ciphers) has no effect
+
+- [SMACK-716] - EntityTimeManager.getTime() does not set the recipients JID
+
+- [SMACK-719] - XMPPError should use Locale.US in toUpperCase()
+
+
+
+
Improvement
+
+
+- [SMACK-715] - Add Roster.setRosterLoadedAtLoginDefault(boolean)
+
+
+
4.1.6 -- 2016-01-23
Bug
diff --git a/smack-core/src/main/java/org/jivesoftware/smack/filter/StanzaTypeFilter.java b/smack-core/src/main/java/org/jivesoftware/smack/filter/StanzaTypeFilter.java
index 799edb010..8b8971cda 100644
--- a/smack-core/src/main/java/org/jivesoftware/smack/filter/StanzaTypeFilter.java
+++ b/smack-core/src/main/java/org/jivesoftware/smack/filter/StanzaTypeFilter.java
@@ -57,6 +57,6 @@ public final class StanzaTypeFilter implements StanzaFilter {
@Override
public String toString() {
- return getClass().getSimpleName() + ": " + packetType.getName();
+ return getClass().getSimpleName() + ": " + packetType.getSimpleName();
}
}
diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/XMPPError.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/XMPPError.java
index a36350312..7aafca4d9 100644
--- a/smack-core/src/main/java/org/jivesoftware/smack/packet/XMPPError.java
+++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/XMPPError.java
@@ -19,6 +19,7 @@ package org.jivesoftware.smack.packet;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.logging.Logger;
@@ -361,13 +362,11 @@ public class XMPPError extends AbstractError {
@Override
public String toString() {
- // Locale.US not required, since Type consists only of ASCII chars
- return name().toLowerCase();
+ return name().toLowerCase(Locale.US);
}
public static Type fromString(String string) {
- // Locale.US not required, since Type consists only of ASCII chars
- string = string.toUpperCase();
+ string = string.toUpperCase(Locale.US);
return Type.valueOf(string);
}
}
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/time/EntityTimeManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/time/EntityTimeManager.java
index 587d3a678..06f614c34 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/time/EntityTimeManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/time/EntityTimeManager.java
@@ -108,6 +108,8 @@ public final class EntityTimeManager extends Manager {
return null;
Time request = new Time();
+ // TODO Add Time(Jid) constructor and use this constructor instead
+ request.setTo(jid);
Time response = (Time) connection().createPacketCollectorAndSend(request).nextResultOrThrow();
return response;
}
diff --git a/smack-im/src/main/java/org/jivesoftware/smack/roster/Roster.java b/smack-im/src/main/java/org/jivesoftware/smack/roster/Roster.java
index 66f5ed4a0..23b81cdb1 100644
--- a/smack-im/src/main/java/org/jivesoftware/smack/roster/Roster.java
+++ b/smack-im/src/main/java/org/jivesoftware/smack/roster/Roster.java
@@ -1061,6 +1061,18 @@ public final class Roster extends Manager {
}
}
+ /**
+ * Sets if the roster will be loaded from the server when logging in for newly created instances
+ * of {@link Roster}.
+ *
+ * @param rosterLoadedAtLoginDefault if the roster will be loaded from the server when logging in.
+ * @see #setRosterLoadedAtLogin(boolean)
+ * @since 4.1.7
+ */
+ public static void setRosterLoadedAtLoginDefault(boolean rosterLoadedAtLoginDefault) {
+ Roster.rosterLoadedAtLoginDefault = rosterLoadedAtLoginDefault;
+ }
+
/**
* Sets if the roster will be loaded from the server when logging in. This
* is the common behaviour for clients but sometimes clients may want to differ this
diff --git a/smack-resolver-minidns/src/main/java/org/jivesoftware/smack/util/dns/minidns/MiniDnsResolver.java b/smack-resolver-minidns/src/main/java/org/jivesoftware/smack/util/dns/minidns/MiniDnsResolver.java
index 36a04620d..6b2b78d36 100644
--- a/smack-resolver-minidns/src/main/java/org/jivesoftware/smack/util/dns/minidns/MiniDnsResolver.java
+++ b/smack-resolver-minidns/src/main/java/org/jivesoftware/smack/util/dns/minidns/MiniDnsResolver.java
@@ -1,6 +1,6 @@
/**
*
- * Copyright 2014 Florian Schmaus
+ * Copyright 2014-2016 Florian Schmaus
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -32,6 +32,7 @@ import de.measite.minidns.Question;
import de.measite.minidns.Record;
import de.measite.minidns.Record.CLASS;
import de.measite.minidns.Record.TYPE;
+import de.measite.minidns.record.Data;
import de.measite.minidns.record.SRV;
@@ -81,7 +82,11 @@ public class MiniDnsResolver implements SmackInitializer, DNSResolver {
return res;
}
for (Record record : message.getAnswers()) {
- SRV srv = (SRV) record.getPayload();
+ Data data = record.getPayload();
+ if (!(data instanceof SRV)) {
+ continue;
+ }
+ SRV srv = (SRV) data;
res.add(new SRVRecord(srv.getName(), srv.getPort(), srv.getPriority(), srv.getWeight()));
}
return res;
diff --git a/smack-tcp/src/main/java/org/jivesoftware/smack/tcp/XMPPTCPConnection.java b/smack-tcp/src/main/java/org/jivesoftware/smack/tcp/XMPPTCPConnection.java
index 963a2bac6..b0ad9a506 100644
--- a/smack-tcp/src/main/java/org/jivesoftware/smack/tcp/XMPPTCPConnection.java
+++ b/smack-tcp/src/main/java/org/jivesoftware/smack/tcp/XMPPTCPConnection.java
@@ -741,12 +741,16 @@ public class XMPPTCPConnection extends AbstractXMPPConnection {
// Secure the plain connection
socket = context.getSocketFactory().createSocket(plain,
host, plain.getPort(), true);
- // Initialize the reader and writer with the new secured version
- initReaderAndWriter();
final SSLSocket sslSocket = (SSLSocket) socket;
+ // Immediately set the enabled SSL protocols and ciphers. See SMACK-712 why this is
+ // important (at least on certain platforms) and it seems to be a good idea anyways to
+ // prevent an accidental implicit handshake.
TLSUtils.setEnabledProtocolsAndCiphers(sslSocket, config.getEnabledSSLProtocols(), config.getEnabledSSLCiphers());
+ // Initialize the reader and writer with the new secured version
+ initReaderAndWriter();
+
// Proceed to do the handshake
sslSocket.startHandshake();