From: hyc Date: Sun, 28 Mar 2010 08:01:00 +0000 (+0000) Subject: Can't use URL coding for embedded spaces in SetupURL. Instead use TAB combos X-Git-Tag: v2.4~136 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=493fdc399d2fd4a3a9fac579dc4ad8864294fcae;p=rtmpdump 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 --- 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--;