@@ -332,6 +332,74 @@ const uint8_t C0_CONTROL_ENCODE_SET[32] = {
332332 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80
333333};
334334
335+ const uint8_t FRAGMENT_ENCODE_SET[32 ] = {
336+ // 00 01 02 03 04 05 06 07
337+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
338+ // 08 09 0A 0B 0C 0D 0E 0F
339+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
340+ // 10 11 12 13 14 15 16 17
341+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
342+ // 18 19 1A 1B 1C 1D 1E 1F
343+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
344+ // 20 21 22 23 24 25 26 27
345+ 0x01 | 0x00 | 0x04 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 ,
346+ // 28 29 2A 2B 2C 2D 2E 2F
347+ 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 ,
348+ // 30 31 32 33 34 35 36 37
349+ 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 ,
350+ // 38 39 3A 3B 3C 3D 3E 3F
351+ 0x00 | 0x00 | 0x00 | 0x00 | 0x10 | 0x00 | 0x40 | 0x00 ,
352+ // 40 41 42 43 44 45 46 47
353+ 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 ,
354+ // 48 49 4A 4B 4C 4D 4E 4F
355+ 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 ,
356+ // 50 51 52 53 54 55 56 57
357+ 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 ,
358+ // 58 59 5A 5B 5C 5D 5E 5F
359+ 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 ,
360+ // 60 61 62 63 64 65 66 67
361+ 0x01 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 ,
362+ // 68 69 6A 6B 6C 6D 6E 6F
363+ 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 ,
364+ // 70 71 72 73 74 75 76 77
365+ 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 ,
366+ // 78 79 7A 7B 7C 7D 7E 7F
367+ 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x80 ,
368+ // 80 81 82 83 84 85 86 87
369+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
370+ // 88 89 8A 8B 8C 8D 8E 8F
371+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
372+ // 90 91 92 93 94 95 96 97
373+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
374+ // 98 99 9A 9B 9C 9D 9E 9F
375+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
376+ // A0 A1 A2 A3 A4 A5 A6 A7
377+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
378+ // A8 A9 AA AB AC AD AE AF
379+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
380+ // B0 B1 B2 B3 B4 B5 B6 B7
381+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
382+ // B8 B9 BA BB BC BD BE BF
383+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
384+ // C0 C1 C2 C3 C4 C5 C6 C7
385+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
386+ // C8 C9 CA CB CC CD CE CF
387+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
388+ // D0 D1 D2 D3 D4 D5 D6 D7
389+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
390+ // D8 D9 DA DB DC DD DE DF
391+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
392+ // E0 E1 E2 E3 E4 E5 E6 E7
393+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
394+ // E8 E9 EA EB EC ED EE EF
395+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
396+ // F0 F1 F2 F3 F4 F5 F6 F7
397+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
398+ // F8 F9 FA FB FC FD FE FF
399+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80
400+ };
401+
402+
335403const uint8_t PATH_ENCODE_SET[32 ] = {
336404 // 00 01 02 03 04 05 06 07
337405 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
@@ -1896,7 +1964,7 @@ void URL::Parse(const char* input,
18961964 case 0 :
18971965 break ;
18981966 default :
1899- AppendOrEscape (&buffer, ch, C0_CONTROL_ENCODE_SET );
1967+ AppendOrEscape (&buffer, ch, FRAGMENT_ENCODE_SET );
19001968 }
19011969 break ;
19021970 default :
0 commit comments