File tree Expand file tree Collapse file tree 1 file changed +13
-10
lines changed
src/include/grpc_transcoding Expand file tree Collapse file tree 1 file changed +13
-10
lines changed Original file line number Diff line number Diff line change @@ -224,20 +224,23 @@ inline int hex_digit_to_int(char c) {
224
224
// also return what character is escaped.
225
225
bool GetEscapedChar (const std::string& src, size_t i,
226
226
UrlUnescapeSpec unescape_spec, char * out) {
227
- const bool unescape_slash_char =
228
- unescape_spec == UrlUnescapeSpec::kAllCharacters ;
229
- const bool unescape_reserved_chars =
230
- (unescape_spec == UrlUnescapeSpec::kAllCharacters ) ||
231
- (unescape_spec == UrlUnescapeSpec::kAllCharactersExceptSlash );
232
227
if (i + 2 < src.size () && src[i] == ' %' ) {
233
228
if (ascii_isxdigit (src[i + 1 ]) && ascii_isxdigit (src[i + 2 ])) {
234
229
char c =
235
230
(hex_digit_to_int (src[i + 1 ]) << 4 ) | hex_digit_to_int (src[i + 2 ]);
236
- if (!unescape_slash_char && c == ' /' ) {
237
- return false ;
238
- }
239
- if (!unescape_reserved_chars && c != ' /' && IsReservedChar (c)) {
240
- return false ;
231
+ switch (unescape_spec) {
232
+ case UrlUnescapeSpec::kAllCharactersExceptReserved :
233
+ if (IsReservedChar (c)) {
234
+ return false ;
235
+ }
236
+ break ;
237
+ case UrlUnescapeSpec::kAllCharactersExceptSlash :
238
+ if (c == ' /' ) {
239
+ return false ;
240
+ }
241
+ break ;
242
+ case UrlUnescapeSpec::kAllCharacters :
243
+ break ;
241
244
}
242
245
*out = c;
243
246
return true ;
You can’t perform that action at this time.
0 commit comments