diff --git a/build.gradle b/build.gradle
index aa7969c75..b4c0a2039 100644
--- a/build.gradle
+++ b/build.gradle
@@ -334,4 +334,4 @@ def getAndroidHome() {
def androidHome = new File(androidHomeEnv)
if (!androidHome.isDirectory()) throw new Exception("Environment variable ANDROID_HOME is not pointing to a directory")
return androidHome
-}
\ No newline at end of file
+}
diff --git a/resources/releasedocs/changelog.html b/resources/releasedocs/changelog.html
index e7ad391c7..e499364da 100644
--- a/resources/releasedocs/changelog.html
+++ b/resources/releasedocs/changelog.html
@@ -141,6 +141,17 @@ hr {
+
4.0.5 -- 2014-10-22
+
+
Bug
+
+
+- [SMACK-609] - PingManager.ping(String, long) does not respect timeout
+
+- [SMACK-613] - Parsing exception causes infinite loop if the exception is not thrown
+
+
+
4.0.4 -- 2014-09-05
Bug
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 95a95fa7a..404b7b8f2 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
@@ -1032,6 +1032,10 @@ public class XMPPTCPConnection extends AbstractXMPPConnection {
if (callback != null) {
callback.handleUnparsablePacket(message);
}
+ // The parser is now at the end tag of the unparsable stanza. We need to advance to the next
+ // start tag in order to avoid an exception which would again lead to the execution of the
+ // catch block becoming effectively an endless loop.
+ eventType = parser.next();
continue;
} finally {
clientHandledStanzasCount = SMUtils.incrementHeight(clientHandledStanzasCount);