From 27c642f87019ced36c7ff6f16b4940499e631c70 Mon Sep 17 00:00:00 2001
From: Matus Uzak <matus.uzak@gmail.com>
Date: Wed, 8 Apr 2015 13:28:18 +0200
Subject: [PATCH 2/2] ServePacket: Support set chunk size before connect
 command. Tested with Wowza push publish plugin.

---
 rtmpsuck.c |   19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/rtmpsuck.c b/rtmpsuck.c
index 38afb70..1da48e4 100644
--- a/rtmpsuck.c
+++ b/rtmpsuck.c
@@ -736,6 +736,7 @@ TFTYPE doServe(void *arg)	// server socket and state (our listening socket)
   unsigned int buflen = 131072;
   int paused = FALSE;
   int sockfd = server->socket;
+  int connect_cmd_processed = FALSE;
 
   // timeout for http requests
   fd_set rfds;
@@ -773,9 +774,23 @@ TFTYPE doServe(void *arg)	// server socket and state (our listening socket)
     {
       if (!RTMPPacket_IsReady(&ps))
         continue;
-      ServePacket(server, 0, &ps);
+      /* Client can set chunk_size before the connect command */
+      if (ps.m_packetType == RTMP_PACKET_TYPE_CHUNK_SIZE)
+        {
+          if (ps.m_nBodySize >= 4)
+            {
+              server->rs.m_inChunkSize = AMF_DecodeInt32(ps.m_body);
+              RTMP_Log(RTMP_LOGDEBUG, "%s, client: chunk size change to %d", __FUNCTION__,
+                       server->rs.m_inChunkSize);
+            }
+        }
+      else
+        {
+          ServePacket(server, 0, &ps);
+          connect_cmd_processed = TRUE;
+        }
       RTMPPacket_Free(&ps);
-      if (RTMP_IsConnected(&server->rc))
+      if (connect_cmd_processed && RTMP_IsConnected(&server->rc))
         break;
     }
 
-- 
1.7.9.5

