]> granicus.if.org Git - rtmpdump/commitdiff
Replace RTMP_PUB_ALLOC with RTMP_LF_FTCU and RTMP_LF_FAPU
authorMartin Storsjo <martin@martin.st>
Sat, 5 Jul 2014 22:09:31 +0000 (01:09 +0300)
committerMartin Storsjo <martin@martin.st>
Mon, 7 Jul 2014 07:15:59 +0000 (10:15 +0300)
This gets rid of the overlap between these two flags, shortening
the code somewhat.

librtmp/rtmp.c
librtmp/rtmp.h

index 32aaa297fd22056481a398b088ed93a392898c68..60f251c6583f82fff27d308ad96e2209d5feae7e 100644 (file)
@@ -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);
index 1a080c1ebf5745a713b7d5a5ade0f0800af21a62..0248913848a1d066cb825ab89c5ff63e003a71e7 100644 (file)
@@ -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;