From 493fdc399d2fd4a3a9fac579dc4ad8864294fcae Mon Sep 17 00:00:00 2001 From: hyc Date: Sun, 28 Mar 2010 08:01:00 +0000 Subject: [PATCH] Can't use URL coding for embedded spaces in SetupURL. Instead use TAB combos git-svn-id: svn://svn.mplayerhq.hu/rtmpdump/trunk@409 400ebc74-4327-4243-bc38-086b20814532 --- librtmp/rtmp.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/librtmp/rtmp.c b/librtmp/rtmp.c index 4e4d790..ffe32e8 100644 --- a/librtmp/rtmp.c +++ b/librtmp/rtmp.c @@ -645,15 +645,25 @@ bool RTMP_SetupURL(RTMP *r, char *url) arg.av_len = strlen(p2); } - /* urldecode */ + /* Decode embedded spaces. Spaces are encoded as TAB+Ctrl-A. + * TABs are encoded as TAB+Ctrl-B. For TAB+anything else the + * TAB is dropped. + */ port = arg.av_len; for (p1=p2; port >0;) { - if (*p1 == '%') { - int c; - sscanf(p1+1, "%02x", &c); - *p2++ = c; - port -= 3; - p1 += 3; + if (*p1 == 0x08) { + if (p1[1] == 0x01) { + *p2++ = ' '; + port -= 2; + p1 += 2; + } else if (p1[1] == 0x02) { + *p2++ = 0x08; + port -= 2; + p1 += 2; + } else { + p1++; + port--; + } } else { *p2++ = *p1++; port--; -- 2.40.0