diff --git a/lib/http_parser.cpp b/lib/http_parser.cpp
index 2ceda241..6b2da389 100644
--- a/lib/http_parser.cpp
+++ b/lib/http_parser.cpp
@@ -324,7 +324,7 @@ void HTTP::Parser::SetVar(std::string i, std::string v) {
 /// \return True if a whole request or response was read, false otherwise.
 bool HTTP::Parser::Read(Socket::Connection & conn) {
   //Make sure the received data ends in a newline (\n).
-  while ((!seenHeaders || (getChunks && !doingChunk)) && *(conn.Received().get().rbegin()) != '\n') {
+  while ((!seenHeaders || (getChunks && !doingChunk)) && conn.Received().get().size() && *(conn.Received().get().rbegin()) != '\n') {
     if (conn.Received().size() > 1) {
       //make a copy of the first part
       std::string tmp = conn.Received().get();