[rtmpdump] [PATCH] Fix socks support for SetupURL
Matthew Garrett
mjg59 at srcf.ucam.org
Sun Jul 8 22:26:14 CEST 2012
SetupURL assigns sockshost but never parses the data. This patch factors
the code out from SetupStream into a common function and adds it to
SetupURL.
---
librtmp/rtmp.c | 48 ++++++++++++++++++++++++++++--------------------
1 file changed, 28 insertions(+), 20 deletions(-)
diff --git a/librtmp/rtmp.c b/librtmp/rtmp.c
index 52d0254..d31c61b 100644
--- a/librtmp/rtmp.c
+++ b/librtmp/rtmp.c
@@ -320,6 +320,31 @@ static const char DEFAULT_FLASH_VER[] = DEF_VERSTR;
const AVal RTMP_DefaultFlashVer =
{ (char *)DEFAULT_FLASH_VER, sizeof(DEFAULT_FLASH_VER) - 1 };
+static void
+SocksSetup(RTMP *r, AVal *sockshost)
+{
+ if (sockshost->av_len)
+ {
+ const char *socksport = strchr(sockshost->av_val, ':');
+ char *hostname = strdup(sockshost->av_val);
+
+ if (socksport)
+ hostname[socksport - sockshost->av_val] = '\0';
+ r->Link.sockshost.av_val = hostname;
+ r->Link.sockshost.av_len = strlen(hostname);
+
+ r->Link.socksport = socksport ? atoi(socksport + 1) : 1080;
+ RTMP_Log(RTMP_LOGDEBUG, "Connecting via SOCKS proxy: %s:%d", r->Link.sockshost.av_val,
+ r->Link.socksport);
+ }
+ else
+ {
+ r->Link.sockshost.av_val = NULL;
+ r->Link.sockshost.av_len = 0;
+ r->Link.socksport = 0;
+ }
+}
+
void
RTMP_SetupStream(RTMP *r,
int protocol,
@@ -384,26 +409,7 @@ RTMP_SetupStream(RTMP *r,
}
#endif
- if (sockshost->av_len)
- {
- const char *socksport = strchr(sockshost->av_val, ':');
- char *hostname = strdup(sockshost->av_val);
-
- if (socksport)
- hostname[socksport - sockshost->av_val] = '\0';
- r->Link.sockshost.av_val = hostname;
- r->Link.sockshost.av_len = strlen(hostname);
-
- r->Link.socksport = socksport ? atoi(socksport + 1) : 1080;
- RTMP_Log(RTMP_LOGDEBUG, "Connecting via SOCKS proxy: %s:%d", r->Link.sockshost.av_val,
- r->Link.socksport);
- }
- else
- {
- r->Link.sockshost.av_val = NULL;
- r->Link.sockshost.av_len = 0;
- r->Link.socksport = 0;
- }
+ SocksSetup(r, sockshost);
if (tcUrl && tcUrl->av_len)
r->Link.tcUrl = *tcUrl;
@@ -756,6 +762,8 @@ int RTMP_SetupURL(RTMP *r, char *url)
(unsigned char *)r->Link.SWFHash, r->Link.swfAge);
#endif
+ SocksSetup(r, &r->Link.sockshost);
+
if (r->Link.port == 0)
{
if (r->Link.protocol & RTMP_FEATURE_SSL)
--
1.7.10.4
More information about the rtmpdump
mailing list