diff --git a/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/DateTimeSerializer.kt b/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/DateTimeSerializer.kt
index 3d6f407e232ba2a82e3ca452d16ff4216ae03608..a0b0451e0bb8297562f5d5a6ad00e091a35b9954 100644
--- a/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/DateTimeSerializer.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/DateTimeSerializer.kt
@@ -64,12 +64,6 @@ object DateTimeSerializer : Serializer<Temporal> {
           .with(JulianFields.JULIAN_DAY, julianDay)
           .with(ChronoField.MILLI_OF_DAY, milliOfDay)
           .toInstant()
-      TimeSpec.OffsetFromUTC ->
-        Instant.EPOCH.atOffset(
-          ZoneOffset.ofTotalSeconds(IntSerializer.deserialize(buffer, features)))
-          .with(JulianFields.JULIAN_DAY, julianDay)
-          .with(ChronoField.MILLI_OF_DAY, milliOfDay)
-          .toInstant()
       else                   ->
         Instant.EPOCH.atOffset(ZoneOffset.UTC)
           .with(JulianFields.JULIAN_DAY, julianDay)
diff --git a/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/StringSerializer.kt b/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/StringSerializer.kt
index d893b2d44e4cc665728864f6f76c3b86d5c4f0ed..86a270e1cac506ff74f8d8ec80cb18a13c1acdf6 100644
--- a/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/StringSerializer.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/StringSerializer.kt
@@ -89,7 +89,7 @@ abstract class StringSerializer(
       null
     } else {
       val limit = buffer.limit()
-      buffer.limit(buffer.position() + len - trailingNullBytes)
+      buffer.limit(buffer.position() + Math.max(0, len - trailingNullBytes))
       val charBuffer = charBuffer(len)
       decoder.reset()
       decoder.decode(buffer, charBuffer, true)
diff --git a/lib/src/main/java/de/kuschku/libquassel/session/CoreConnection.kt b/lib/src/main/java/de/kuschku/libquassel/session/CoreConnection.kt
index 73ca50adbb5e600f5c54e07aabd8dece15a2eb05..398a9f30f63994e129b1cdf502d43728e8f088b7 100644
--- a/lib/src/main/java/de/kuschku/libquassel/session/CoreConnection.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/session/CoreConnection.kt
@@ -14,6 +14,7 @@ import de.kuschku.libquassel.util.compatibility.HandlerService
 import de.kuschku.libquassel.util.compatibility.LoggingHandler.LogLevel.*
 import de.kuschku.libquassel.util.compatibility.log
 import de.kuschku.libquassel.util.hasFlag
+import de.kuschku.libquassel.util.helpers.hexDump
 import de.kuschku.libquassel.util.helpers.write
 import de.kuschku.libquassel.util.nio.ChainedByteBuffer
 import de.kuschku.libquassel.util.nio.WrappedChannel
@@ -191,10 +192,12 @@ class CoreConnection(
           session.handle(msg)
         } catch (e: Throwable) {
           log(WARN, TAG, "Error encountered while handling sigproxy message", e)
+          log(WARN, TAG, msg.toString())
         }
       }
     } catch (e: Throwable) {
       log(WARN, TAG, "Error encountered while parsing sigproxy message", e)
+      dataBuffer.hexDump()
     }
   }
 
@@ -207,9 +210,11 @@ class CoreConnection(
         session.handle(msg)
       } catch (e: Throwable) {
         log(WARN, TAG, "Error encountered while handling handshake message", e)
+        log(WARN, TAG, msg.toString())
       }
     } catch (e: Throwable) {
       log(WARN, TAG, "Error encountered while parsing handshake message", e)
+      dataBuffer.hexDump()
     }
   }
 }
diff --git a/lib/src/main/java/de/kuschku/libquassel/util/helpers/ArrayHelper.kt b/lib/src/main/java/de/kuschku/libquassel/util/helpers/ArrayHelper.kt
new file mode 100644
index 0000000000000000000000000000000000000000..0acd30bec89225b35892adfff98b5087161782b6
--- /dev/null
+++ b/lib/src/main/java/de/kuschku/libquassel/util/helpers/ArrayHelper.kt
@@ -0,0 +1,14 @@
+package de.kuschku.libquassel.util.helpers
+
+import de.kuschku.libquassel.util.compatibility.LoggingHandler.LogLevel.WARN
+import de.kuschku.libquassel.util.compatibility.log
+
+fun ByteArray.hexDump() {
+  for (i in 0 until this.size step 33) {
+    log(WARN, "HexDump",
+        (0 until 33).map { it + i }.filter { it < this.size }.joinToString(" ") {
+          String.format("%02x", this[it])
+        }
+    )
+  }
+}
diff --git a/lib/src/main/java/de/kuschku/libquassel/util/helpers/ByteBufferHelper.kt b/lib/src/main/java/de/kuschku/libquassel/util/helpers/ByteBufferHelper.kt
index 0401092c787417e54da64f19e8b19c477104bbd1..209c4343efecbf697485deab2ae5ea98bface9d4 100644
--- a/lib/src/main/java/de/kuschku/libquassel/util/helpers/ByteBufferHelper.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/util/helpers/ByteBufferHelper.kt
@@ -15,3 +15,10 @@ fun ByteBuffer?.deserializeString(serializer: StringSerializer) = if (this == nu
 } else {
   serializer.deserializeAll(this)
 }
+
+fun ByteBuffer.hexDump() {
+  val target = ByteBuffer.allocate(this.capacity())
+  this.clear()
+  this.copyTo(target)
+  target.array().hexDump()
+}