diff --git a/media/libstagefright/HTTPDataSource.cpp b/media/libstagefright/HTTPDataSource.cpp
index 00af8a3..61ffa8d 100644
--- a/media/libstagefright/HTTPDataSource.cpp
+++ b/media/libstagefright/HTTPDataSource.cpp
@@ -385,7 +385,8 @@
 
     ssize_t num_bytes_received = mHttp->receive(mBuffer, contentLength);
 
-    if (num_bytes_received < 0) {
+    if (num_bytes_received < 0
+            || (mContentLengthValid && num_bytes_received < contentLength)) {
         if (mNumRetriesLeft-- > 0) {
             disconnect();
             if (connect() == OK) {
diff --git a/media/libstagefright/HTTPStream.cpp b/media/libstagefright/HTTPStream.cpp
index 3aad72c..1e06f03 100644
--- a/media/libstagefright/HTTPStream.cpp
+++ b/media/libstagefright/HTTPStream.cpp
@@ -14,6 +14,10 @@
  * limitations under the License.
  */
 
+//#define LOG_NDEBUG 0
+#define LOG_TAG "HTTPStream"
+#include <utils/Log.h>
+
 #include "include/HTTPStream.h"
 
 #include <sys/socket.h>
@@ -146,6 +150,30 @@
     return send(data, strlen(data));
 }
 
+static ssize_t recvWithTimeout(
+        int s, void *data, size_t size) {
+    fd_set rs, es;
+    FD_ZERO(&rs);
+    FD_ZERO(&es);
+    FD_SET(s, &rs);
+    FD_SET(s, &es);
+
+    struct timeval tv;
+    tv.tv_sec = 5;  // 5 sec timeout
+    tv.tv_usec = 0;
+
+    int res = select(s + 1, &rs, NULL, &es, &tv);
+
+    if (res < 0) {
+        return -1;
+    } else if (res == 0) {
+        errno = ETIMEDOUT;
+        return -1;
+    }
+
+    return recv(s, data, size, 0);
+}
+
 // A certain application spawns a local webserver that sends invalid responses,
 // specifically it terminates header line with only a newline instead of the
 // CRLF (carriage-return followed by newline) required by the HTTP specs.
@@ -164,7 +192,7 @@
 
     for (;;) {
         char c;
-        ssize_t n = recv(mSocket, &c, 1, 0);
+        ssize_t n = recvWithTimeout(mSocket, &c, 1);
         if (n < 0) {
             if (errno == EINTR) {
                 continue;
@@ -282,7 +310,8 @@
 ssize_t HTTPStream::receive(void *data, size_t size) {
     size_t total = 0;
     while (total < size) {
-        ssize_t n = recv(mSocket, (char *)data + total, size - total, 0);
+        ssize_t n = recvWithTimeout(
+                mSocket, (char *)data + total, size - total);
 
         if (n < 0) {
             if (errno == EINTR) {
@@ -296,7 +325,8 @@
         } else if (n == 0) {
             disconnect();
 
-            LOGE("recv failed, server is gone");
+            LOGE("recv failed, server is gone, total received: %d bytes",
+                 total);
 
             return total == 0 ? (ssize_t)ERROR_CONNECTION_LOST : total;
         }
