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