]> granicus.if.org Git - rtmpdump/commitdiff
Don't require 144 bytes to be buffered before proceeding with HTTP_read
authorMartin Storsjo <martin@martin.st>
Mon, 21 May 2012 15:17:31 +0000 (18:17 +0300)
committerHoward Chu <hyc@highlandsun.com>
Tue, 30 Oct 2012 16:01:34 +0000 (09:01 -0700)
This makes the code more flexible, if servers were to use
smaller headers.

librtmp/rtmp.c

index 0d286660ab664d85a24c7c20b4f6430a765a4102..21e2c1886dad05f5bbdc5435804c4283c98cc3c5 100644 (file)
@@ -3849,11 +3849,20 @@ HTTP_read(RTMP *r, int fill)
 restart:
   if (fill)
     RTMPSockBuf_Fill(&r->m_sb);
-  if (r->m_sb.sb_size < 144)
+  if (r->m_sb.sb_size < 13) {
+    if (fill)
+      goto restart;
     return -2;
+  }
   if (strncmp(r->m_sb.sb_start, "HTTP/1.1 200 ", 13))
     return -1;
   r->m_sb.sb_start[r->m_sb.sb_size] = '\0';
+  if (!strstr(r->m_sb.sb_start, "\r\n\r\n")) {
+    if (fill)
+      goto restart;
+    return -2;
+  }
+
   ptr = r->m_sb.sb_start + sizeof("HTTP/1.1 200");
   while ((ptr = strstr(ptr, "Content-"))) {
     if (!strncasecmp(ptr+8, "length:", 7)) break;