[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#781474: marked as done (unblock: rtmpdump/2.4+20150115.gita107cef-1)



Your message dated Mon, 06 Apr 2015 09:30:03 +0200
with message-id <552235FB.4010903@thykier.net>
and subject line Re: Bug#781474: unblock: rtmpdump/2.4+20150115.gita107cef-1
has caused the Debian Bug report #781474,
regarding unblock: rtmpdump/2.4+20150115.gita107cef-1
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
781474: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=781474
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

Please unblock package rtmpdump. In jessie streaming to YouTube over RTMP is
broken with timestamps longer thant 24 bits. Also authenticating to Wozwa
servers is broken. These two issues have been fixed upstream.

The fixes are rather small and I'd like to get them included into jessie. Full
debdiff is attached. The changelog is:

rtmpdump (2.4+20150115.gita107cef-1) unstable; urgency=medium

  * Team upload.
  * New upstream snapshot fixing multiple issues when streaming to YouTube and
    Wowza:
    - Fix RTMP streams with timestamps longer than 24 bits.
    - Fix authentication with Wowza 4.x servers.
  * debian/patches/03_suppress_warning.diff: Suppress warning about 24-bit
    timestamps. Thanks to William King.

 -- Sebastian Ramacher <sramacher@debian.org>  Sun, 29 Mar 2015 18:27:52 +0200

unblock rtmpdump/2.4+20150115.gita107cef-1

Cheers
-- 
Sebastian Ramacher
diff -Nru rtmpdump-2.4+20131018.git79459a2/debian/changelog rtmpdump-2.4+20150115.gita107cef/debian/changelog
--- rtmpdump-2.4+20131018.git79459a2/debian/changelog	2014-11-11 15:56:13.000000000 +0100
+++ rtmpdump-2.4+20150115.gita107cef/debian/changelog	2015-03-29 18:29:14.000000000 +0200
@@ -1,3 +1,15 @@
+rtmpdump (2.4+20150115.gita107cef-1) unstable; urgency=medium
+
+  * Team upload.
+  * New upstream snapshot fixing multiple issues when streaming to YouTube and
+    Wowza:
+    - Fix RTMP streams with timestamps longer than 24 bits.
+    - Fix authentication with Wowza 4.x servers.
+  * debian/patches/03_suppress_warning.diff: Suppress warning about 24-bit
+    timestamps. Thanks to William King.
+
+ -- Sebastian Ramacher <sramacher@debian.org>  Sun, 29 Mar 2015 18:27:52 +0200
+
 rtmpdump (2.4+20131018.git79459a2-5) unstable; urgency=medium
 
   * Team upload.
diff -Nru rtmpdump-2.4+20131018.git79459a2/debian/patches/03_suppress_warning.diff rtmpdump-2.4+20150115.gita107cef/debian/patches/03_suppress_warning.diff
--- rtmpdump-2.4+20131018.git79459a2/debian/patches/03_suppress_warning.diff	1970-01-01 01:00:00.000000000 +0100
+++ rtmpdump-2.4+20150115.gita107cef/debian/patches/03_suppress_warning.diff	2015-03-29 15:38:38.000000000 +0200
@@ -0,0 +1,14 @@
+Description: Suppress warning
+Author: William King <william.ling@quentustech.com>
+Last-Update: 2015-03-29
+
+--- rtmpdump-2.4+20150115.gita107cef.orig/librtmp/rtmp.c
++++ rtmpdump-2.4+20150115.gita107cef/librtmp/rtmp.c
+@@ -3969,7 +3969,6 @@ RTMP_SendPacket(RTMP *r, RTMPPacket *pac
+     {
+       header -= 4;
+       hSize += 4;
+-      RTMP_Log(RTMP_LOGWARNING, "Larger timestamp than 24-bit: 0x%x", t);
+     }
+ 
+   hptr = header;
diff -Nru rtmpdump-2.4+20131018.git79459a2/debian/patches/series rtmpdump-2.4+20150115.gita107cef/debian/patches/series
--- rtmpdump-2.4+20131018.git79459a2/debian/patches/series	2014-10-24 00:49:28.000000000 +0200
+++ rtmpdump-2.4+20150115.gita107cef/debian/patches/series	2015-03-29 15:38:53.000000000 +0200
@@ -1,2 +1,3 @@
 01_unbreak_makefile.diff
 02_gnutls_requires.private.diff
+03_suppress_warning.diff
diff -Nru rtmpdump-2.4+20131018.git79459a2/librtmp/rtmp.c rtmpdump-2.4+20150115.gita107cef/librtmp/rtmp.c
--- rtmpdump-2.4+20131018.git79459a2/librtmp/rtmp.c	2014-04-08 02:56:09.000000000 +0200
+++ rtmpdump-2.4+20150115.gita107cef/librtmp/rtmp.c	2015-01-15 09:24:28.000000000 +0100
@@ -142,6 +142,8 @@
 static int HTTP_Post(RTMP *r, RTMPTCmd cmd, const char *buf, int len);
 static int HTTP_read(RTMP *r, int fill);
 
+static void CloseInternal(RTMP *r, int reconnect);
+
 #ifndef _WIN32
 static int clk_tck;
 #endif
@@ -2538,7 +2540,6 @@
         {
             if (strstr(r->Link.app.av_val, av_authmod_adobe.av_val) != NULL) {
               RTMP_Log(RTMP_LOGERROR, "%s, wrong pubUser & pubPasswd for publisher auth", __FUNCTION__);
-              r->Link.pFlags |= RTMP_PUB_CLEAN;
               return 0;
             } else if(r->Link.pubUser.av_len && r->Link.pubPasswd.av_len) {
               pubToken.av_val = malloc(r->Link.pubUser.av_len + av_authmod_adobe.av_len + 8);
@@ -2546,10 +2547,8 @@
                       av_authmod_adobe.av_val,
                       r->Link.pubUser.av_val);
               RTMP_Log(RTMP_LOGDEBUG, "%s, pubToken1: %s", __FUNCTION__, pubToken.av_val);
-              r->Link.pFlags |= RTMP_PUB_NAME;
             } else {
               RTMP_Log(RTMP_LOGERROR, "%s, need to set pubUser & pubPasswd for publisher auth", __FUNCTION__);
-              r->Link.pFlags |= RTMP_PUB_CLEAN;
               return 0;
             }
         }
@@ -2639,25 +2638,21 @@
                     opaque.av_len ? opaque.av_val : "");
             RTMP_Log(RTMP_LOGDEBUG, "%s, pubToken2: %s", __FUNCTION__, pubToken.av_val);
             free(orig_ptr);
-            r->Link.pFlags |= RTMP_PUB_RESP|RTMP_PUB_CLATE;
         }
       else if(strstr(description->av_val, "?reason=authfailed") != NULL)
         {
           RTMP_Log(RTMP_LOGERROR, "%s, Authentication failed: wrong password", __FUNCTION__);
-          r->Link.pFlags |= RTMP_PUB_CLEAN;
           return 0;
         }
       else if(strstr(description->av_val, "?reason=nosuchuser") != NULL)
         {
           RTMP_Log(RTMP_LOGERROR, "%s, Authentication failed: no such user", __FUNCTION__);
-          r->Link.pFlags |= RTMP_PUB_CLEAN;
           return 0;
         }
       else
         {
           RTMP_Log(RTMP_LOGERROR, "%s, Authentication failed: unknown auth mode: %s",
                   __FUNCTION__, description->av_val);
-          r->Link.pFlags |= RTMP_PUB_CLEAN;
           return 0;
         }
 
@@ -2665,7 +2660,7 @@
       strncpy(ptr, r->Link.app.av_val, r->Link.app.av_len);
       strncpy(ptr + r->Link.app.av_len, pubToken.av_val, pubToken.av_len);
       r->Link.app.av_len += pubToken.av_len;
-      if(r->Link.pFlags & RTMP_PUB_ALLOC)
+      if(r->Link.lFlags & RTMP_LF_FAPU)
           free(r->Link.app.av_val);
       r->Link.app.av_val = ptr;
 
@@ -2673,12 +2668,12 @@
       strncpy(ptr, r->Link.tcUrl.av_val, r->Link.tcUrl.av_len);
       strncpy(ptr + r->Link.tcUrl.av_len, pubToken.av_val, pubToken.av_len);
       r->Link.tcUrl.av_len += pubToken.av_len;
-      if(r->Link.pFlags & RTMP_PUB_ALLOC)
+      if(r->Link.lFlags & RTMP_LF_FTCU)
           free(r->Link.tcUrl.av_val);
       r->Link.tcUrl.av_val = ptr;
 
       free(pubToken.av_val);
-      r->Link.pFlags |= RTMP_PUB_ALLOC;
+      r->Link.lFlags |= RTMP_LF_FTCU | RTMP_LF_FAPU;
 
       RTMP_Log(RTMP_LOGDEBUG, "%s, new app: %.*s tcUrl: %.*s playpath: %s", __FUNCTION__,
               r->Link.app.av_len, r->Link.app.av_val,
@@ -2693,7 +2688,6 @@
 
             if (strstr(r->Link.app.av_val, av_authmod_llnw.av_val) != NULL) {
               RTMP_Log(RTMP_LOGERROR, "%s, wrong pubUser & pubPasswd for publisher auth", __FUNCTION__);
-              r->Link.pFlags |= RTMP_PUB_CLEAN;
               return 0;
             } else if(r->Link.pubUser.av_len && r->Link.pubPasswd.av_len) {
               pubToken.av_val = malloc(r->Link.pubUser.av_len + av_authmod_llnw.av_len + 8);
@@ -2701,10 +2695,8 @@
                       av_authmod_llnw.av_val,
                       r->Link.pubUser.av_val);
               RTMP_Log(RTMP_LOGDEBUG, "%s, pubToken1: %s", __FUNCTION__, pubToken.av_val);
-              r->Link.pFlags |= RTMP_PUB_NAME;
             } else {
               RTMP_Log(RTMP_LOGERROR, "%s, need to set pubUser & pubPasswd for publisher auth", __FUNCTION__);
-              r->Link.pFlags |= RTMP_PUB_CLEAN;
               return 0;
             }
         }
@@ -2828,27 +2820,23 @@
                   nonce.av_val, cnonce, nchex, hash3);
           pubToken.av_len = strlen(pubToken.av_val);
           RTMP_Log(RTMP_LOGDEBUG, "%s, pubToken2: %s", __FUNCTION__, pubToken.av_val);
-          r->Link.pFlags |= RTMP_PUB_RESP|RTMP_PUB_CLATE;
 
           free(orig_ptr);
         }
       else if(strstr(description->av_val, "?reason=authfail") != NULL)
         {
           RTMP_Log(RTMP_LOGERROR, "%s, Authentication failed", __FUNCTION__);
-          r->Link.pFlags |= RTMP_PUB_CLEAN;
           return 0;
         }
       else if(strstr(description->av_val, "?reason=nosuchuser") != NULL)
         {
           RTMP_Log(RTMP_LOGERROR, "%s, Authentication failed: no such user", __FUNCTION__);
-          r->Link.pFlags |= RTMP_PUB_CLEAN;
           return 0;
         }
       else
         {
           RTMP_Log(RTMP_LOGERROR, "%s, Authentication failed: unknown auth mode: %s",
                   __FUNCTION__, description->av_val);
-          r->Link.pFlags |= RTMP_PUB_CLEAN;
           return 0;
         }
 
@@ -2856,7 +2844,7 @@
       strncpy(ptr, r->Link.app.av_val, r->Link.app.av_len);
       strncpy(ptr + r->Link.app.av_len, pubToken.av_val, pubToken.av_len);
       r->Link.app.av_len += pubToken.av_len;
-      if(r->Link.pFlags & RTMP_PUB_ALLOC)
+      if(r->Link.lFlags & RTMP_LF_FAPU)
           free(r->Link.app.av_val);
       r->Link.app.av_val = ptr;
 
@@ -2864,12 +2852,12 @@
       strncpy(ptr, r->Link.tcUrl.av_val, r->Link.tcUrl.av_len);
       strncpy(ptr + r->Link.tcUrl.av_len, pubToken.av_val, pubToken.av_len);
       r->Link.tcUrl.av_len += pubToken.av_len;
-      if(r->Link.pFlags & RTMP_PUB_ALLOC)
+      if(r->Link.lFlags & RTMP_LF_FTCU)
           free(r->Link.tcUrl.av_val);
       r->Link.tcUrl.av_val = ptr;
 
       free(pubToken.av_val);
-      r->Link.pFlags |= RTMP_PUB_ALLOC;
+      r->Link.lFlags |= RTMP_LF_FTCU | RTMP_LF_FAPU;
 
       RTMP_Log(RTMP_LOGDEBUG, "%s, new app: %.*s tcUrl: %.*s playpath: %s", __FUNCTION__,
               r->Link.app.av_len, r->Link.app.av_val,
@@ -3091,7 +3079,12 @@
               AMFProp_GetString(AMF_GetProp(&obj2, &av_description, -1), &description);
               RTMP_Log(RTMP_LOGDEBUG, "%s, error description: %s", __FUNCTION__, description.av_val);
               /* if PublisherAuth returns 1, then reconnect */
-              PublisherAuth(r, &description);
+              if (PublisherAuth(r, &description) == 1)
+              {
+                CloseInternal(r, 1);
+                if (!RTMP_Connect(r, NULL) || !RTMP_ConnectStream(r, 0))
+                  goto leave;
+              }
             }
         }
       else
@@ -3107,22 +3100,6 @@
     {
       RTMP_Log(RTMP_LOGERROR, "rtmp server requested close");
       RTMP_Close(r);
-#ifdef CRYPTO
-      if ((r->Link.protocol & RTMP_FEATURE_WRITE) &&
-              !(r->Link.pFlags & RTMP_PUB_CLEAN) &&
-              (  !(r->Link.pFlags & RTMP_PUB_NAME) ||
-                 !(r->Link.pFlags & RTMP_PUB_RESP) ||
-                 (r->Link.pFlags & RTMP_PUB_CLATE) ) )
-        {
-          /* clean later */
-          if(r->Link.pFlags & RTMP_PUB_CLATE)
-              r->Link.pFlags |= RTMP_PUB_CLEAN;
-          RTMP_Log(RTMP_LOGERROR, "authenticating publisher");
-
-          if (!RTMP_Connect(r, NULL) || !RTMP_ConnectStream(r, 0))
-              goto leave;
-       }
-#endif
     }
   else if (AVMATCH(&method, &av_onStatus))
     {
@@ -3988,10 +3965,11 @@
       hSize += cSize;
     }
 
-  if (nSize > 1 && t >= 0xffffff)
+  if (t >= 0xffffff)
     {
       header -= 4;
       hSize += 4;
+      RTMP_Log(RTMP_LOGWARNING, "Larger timestamp than 24-bit: 0x%x", t);
     }
 
   hptr = header;
@@ -4030,7 +4008,7 @@
   if (nSize > 8)
     hptr += EncodeInt32LE(hptr, packet->m_nInfoField2);
 
-  if (nSize > 1 && t >= 0xffffff)
+  if (t >= 0xffffff)
     hptr = AMF_EncodeInt32(hptr, hend, t);
 
   nSize = packet->m_nBodySize;
@@ -4085,6 +4063,11 @@
 	      header -= cSize;
 	      hSize += cSize;
 	    }
+          if (t >= 0xffffff)
+            {
+              header -= 4;
+              hSize += 4;
+            }
 	  *header = (0xc0 | c);
 	  if (cSize)
 	    {
@@ -4093,6 +4076,11 @@
 	      if (cSize == 2)
 		header[2] = tmp >> 8;
 	    }
+          if (t >= 0xffffff)
+            {
+              char* extendedTimestamp = header + 1 + cSize;
+              AMF_EncodeInt32(extendedTimestamp, extendedTimestamp + 4, t);
+            }
 	}
     }
   if (tbuf)
@@ -4136,6 +4124,12 @@
 void
 RTMP_Close(RTMP *r)
 {
+  CloseInternal(r, 0);
+}
+
+static void
+CloseInternal(RTMP *r, int reconnect)
+{
   int i;
 
   if (RTMP_IsConnected(r))
@@ -4215,28 +4209,25 @@
   r->m_resplen = 0;
   r->m_unackd = 0;
 
-  if (r->Link.lFlags & RTMP_LF_FTCU)
+  if (r->Link.lFlags & RTMP_LF_FTCU && !reconnect)
     {
       free(r->Link.tcUrl.av_val);
       r->Link.tcUrl.av_val = NULL;
       r->Link.lFlags ^= RTMP_LF_FTCU;
     }
+  if (r->Link.lFlags & RTMP_LF_FAPU && !reconnect)
+    {
+      free(r->Link.app.av_val);
+      r->Link.app.av_val = NULL;
+      r->Link.lFlags ^= RTMP_LF_FAPU;
+    }
 
-#ifdef CRYPTO
-  if (!(r->Link.protocol & RTMP_FEATURE_WRITE) || (r->Link.pFlags & RTMP_PUB_CLEAN))
+  if (!reconnect)
     {
       free(r->Link.playpath0.av_val);
       r->Link.playpath0.av_val = NULL;
     }
-  if ((r->Link.protocol & RTMP_FEATURE_WRITE) &&
-      (r->Link.pFlags & RTMP_PUB_CLEAN) &&
-      (r->Link.pFlags & RTMP_PUB_ALLOC))
-    {
-      free(r->Link.app.av_val);
-      r->Link.app.av_val = NULL;
-      free(r->Link.tcUrl.av_val);
-      r->Link.tcUrl.av_val = NULL;
-    }
+#ifdef CRYPTO
   if (r->Link.dh)
     {
       MDH_free(r->Link.dh);
@@ -4252,9 +4243,6 @@
       RC4_free(r->Link.rc4keyOut);
       r->Link.rc4keyOut = NULL;
     }
-#else
-  free(r->Link.playpath0.av_val);
-  r->Link.playpath0.av_val = NULL;
 #endif
 }
 
diff -Nru rtmpdump-2.4+20131018.git79459a2/librtmp/rtmp.h rtmpdump-2.4+20150115.gita107cef/librtmp/rtmp.h
--- rtmpdump-2.4+20131018.git79459a2/librtmp/rtmp.h	2014-04-08 02:56:09.000000000 +0200
+++ rtmpdump-2.4+20150115.gita107cef/librtmp/rtmp.h	2015-01-15 09:24:28.000000000 +0100
@@ -171,6 +171,7 @@
 #define RTMP_LF_PLST	0x0008	/* send playlist before play */
 #define RTMP_LF_BUFX	0x0010	/* toggle stream on BufferEmpty msg */
 #define RTMP_LF_FTCU	0x0020	/* free tcUrl on close */
+#define RTMP_LF_FAPU	0x0040	/* free app on close */
     int lFlags;
 
     int swfAge;
@@ -178,12 +179,7 @@
     int protocol;
     int timeout;		/* connection timeout in seconds */
 
-#define RTMP_PUB_NAME   0x0001  /* send login to server */
-#define RTMP_PUB_RESP   0x0002  /* send salted password hash */
-#define RTMP_PUB_ALLOC  0x0004  /* allocated data for new tcUrl & app */
-#define RTMP_PUB_CLEAN  0x0008  /* need to free allocated data for newer tcUrl & app at exit */
-#define RTMP_PUB_CLATE  0x0010  /* late clean tcUrl & app at exit */
-    int pFlags;
+    int pFlags;			/* unused, but kept to avoid breaking ABI */
 
     unsigned short socksport;
     unsigned short port;

Attachment: signature.asc
Description: Digital signature


--- End Message ---
--- Begin Message ---
On 2015-03-29 20:26, Sebastian Ramacher wrote:
> Package: release.debian.org
> Severity: normal
> User: release.debian.org@packages.debian.org
> Usertags: unblock
> 
> Please unblock package rtmpdump. In jessie streaming to YouTube over RTMP is
> broken with timestamps longer than 24 bits. Also authenticating to Wozwa
> servers is broken. These two issues have been fixed upstream.
> 
> The fixes are rather small and I'd like to get them included into jessie. Full
> debdiff is attached. The changelog is:
> 
> rtmpdump (2.4+20150115.gita107cef-1) unstable; urgency=medium
> 
>   * Team upload.
>   * New upstream snapshot fixing multiple issues when streaming to YouTube and
>     Wowza:
>     - Fix RTMP streams with timestamps longer than 24 bits.
>     - Fix authentication with Wowza 4.x servers.
>   * debian/patches/03_suppress_warning.diff: Suppress warning about 24-bit
>     timestamps. Thanks to William King.
> 
>  -- Sebastian Ramacher <sramacher@debian.org>  Sun, 29 Mar 2015 18:27:52 +0200
> 
> unblock rtmpdump/2.4+20150115.gita107cef-1
> 
> Cheers
> 

Unblocked, thanks.

~Niels

--- End Message ---

Reply to: