[SCM] rtmpdump/upstream: Replace RTMP_PUB_ALLOC with RTMP_LF_FTCU and RTMP_LF_FAPU

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jul 20 00:29:39 UTC 2014


The following commit has been merged in the upstream branch:
commit a1900c3e152085406ecb87c1962c55ec9c6e4016
Author: Martin Storsjo <martin at martin.st>
Date:   Sun Jul 6 01:09:31 2014 +0300

    Replace RTMP_PUB_ALLOC with RTMP_LF_FTCU and RTMP_LF_FAPU
    
    This gets rid of the overlap between these two flags, shortening
    the code somewhat.

diff --git a/librtmp/rtmp.c b/librtmp/rtmp.c
index 32aaa29..60f251c 100644
--- a/librtmp/rtmp.c
+++ b/librtmp/rtmp.c
@@ -2534,18 +2534,6 @@ PublisherAuth(RTMP *r, AVal *description)
   char salted2[SALTED2_LEN];
   AVal pubToken;
 
-  // If tcUrl is allocated, set RTMP_PUB_ALLOC instead to simplify checks below.
-  if (r->Link.lFlags & RTMP_LF_FTCU && !(r->Link.pFlags & RTMP_PUB_ALLOC))
-    {
-      ptr = malloc(r->Link.app.av_len + 1);
-      strncpy(ptr, r->Link.app.av_val, r->Link.app.av_len);
-      ptr[r->Link.app.av_len] = '\0'; // We use strstr on this string below
-      r->Link.app.av_val = ptr;
-
-      r->Link.lFlags &= ~RTMP_LF_FTCU;
-      r->Link.pFlags |= RTMP_PUB_ALLOC;
-    }
-
   if (strstr(description->av_val, av_authmod_adobe.av_val) != NULL)
     {
       if(strstr(description->av_val, "code=403 need auth") != NULL)
@@ -2672,7 +2660,7 @@ PublisherAuth(RTMP *r, AVal *description)
       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;
 
@@ -2680,12 +2668,12 @@ PublisherAuth(RTMP *r, AVal *description)
       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,
@@ -2856,7 +2844,7 @@ PublisherAuth(RTMP *r, AVal *description)
       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 @@ PublisherAuth(RTMP *r, AVal *description)
       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,
@@ -4210,12 +4198,18 @@ CloseInternal(RTMP *r, int reconnect)
   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;
+    }
 
   if (!reconnect)
     {
@@ -4223,14 +4217,6 @@ CloseInternal(RTMP *r, int reconnect)
       r->Link.playpath0.av_val = NULL;
     }
 #ifdef CRYPTO
-  if ((r->Link.protocol & RTMP_FEATURE_WRITE) &&
-      (r->Link.pFlags & RTMP_PUB_ALLOC) && !reconnect)
-    {
-      free(r->Link.app.av_val);
-      r->Link.app.av_val = NULL;
-      free(r->Link.tcUrl.av_val);
-      r->Link.tcUrl.av_val = NULL;
-    }
   if (r->Link.dh)
     {
       MDH_free(r->Link.dh);
diff --git a/librtmp/rtmp.h b/librtmp/rtmp.h
index 1a080c1..0248913 100644
--- a/librtmp/rtmp.h
+++ b/librtmp/rtmp.h
@@ -171,6 +171,7 @@ extern "C"
 #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,8 +179,7 @@ extern "C"
     int protocol;
     int timeout;		/* connection timeout in seconds */
 
-#define RTMP_PUB_ALLOC  0x0004  /* allocated data for new tcUrl & app */
-    int pFlags;
+    int pFlags;			/* unused, but kept to avoid breaking ABI */
 
     unsigned short socksport;
     unsigned short port;

-- 
rtmpdump packaging



More information about the pkg-multimedia-commits mailing list