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 ---
- To: Debian Bug Tracking System <submit@bugs.debian.org>
- Subject: unblock: rtmpdump/2.4+20150115.gita107cef-1
- From: Sebastian Ramacher <sramacher@debian.org>
- Date: Sun, 29 Mar 2015 20:26:13 +0200
- Message-id: <20150329182613.GA19144@ramacher.at>
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 Ramacherdiff -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 ---
- To: Sebastian Ramacher <sramacher@debian.org>, 781474-done@bugs.debian.org
- Subject: Re: Bug#781474: unblock: rtmpdump/2.4+20150115.gita107cef-1
- From: Niels Thykier <niels@thykier.net>
- Date: Mon, 06 Apr 2015 09:30:03 +0200
- Message-id: <552235FB.4010903@thykier.net>
- In-reply-to: <20150329182613.GA19144@ramacher.at>
- References: <20150329182613.GA19144@ramacher.at>
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 ---