Added HTTP OPTIONS support:
authorAndrew Canaday <andrew.canaday@nytimes.com>
Sat, 5 Jul 2014 02:04:19 +0000 (10:04 +0800)
committerAndy Green <andy.green@linaro.org>
Sun, 6 Jul 2014 01:36:43 +0000 (09:36 +0800)
     - added options to minilex.c
     - regenerated lextable.h
     - added WSI_TOKEN_OPTIONS_URI to libwebsockets.h
     - tweaked parsers.c to accommodate OPTIONS token
     - tweaked server.c to set uri_ptr and uri_len for HTTP callback on OPTIONS as well

lib/lextable.h
lib/libwebsockets.h
lib/minilex.c
lib/parsers.c
lib/server.c

index f747282..9d86577 100644 (file)
 /* pos 0000:   0 */    0x67 /* 'g' */, 0x25, 0x00  /* (to 0x0025 state   1) */,
                        0x70 /* 'p' */, 0x27, 0x00  /* (to 0x002A state   5) */,
-                       0x68 /* 'h' */, 0x30, 0x00  /* (to 0x0036 state  10) */,
-                       0x63 /* 'c' */, 0x39, 0x00  /* (to 0x0042 state  15) */,
-                       0x73 /* 's' */, 0x54, 0x00  /* (to 0x0060 state  26) */,
-                       0x75 /* 'u' */, 0x93, 0x00  /* (to 0x00A2 state  56) */,
-                       0x6F /* 'o' */, 0x99, 0x00  /* (to 0x00AB state  64) */,
-                       0x0D /* '.' */, 0xA5, 0x00  /* (to 0x00BA state  77) */,
-                       0x61 /* 'a' */, 0xDC, 0x00  /* (to 0x00F4 state 127) */,
-                       0x69 /* 'i' */, 0x0F, 0x01  /* (to 0x012A state 161) */,
-                       0x64 /* 'd' */, 0x8E, 0x01  /* (to 0x01AC state 263) */,
-                       0x72 /* 'r' */, 0x91, 0x01  /* (to 0x01B2 state 268) */,
+                       0x6F /* 'o' */, 0x30, 0x00  /* (to 0x0036 state  10) */,
+                       0x68 /* 'h' */, 0x3C, 0x00  /* (to 0x0045 state  18) */,
+                       0x63 /* 'c' */, 0x45, 0x00  /* (to 0x0051 state  23) */,
+                       0x73 /* 's' */, 0x60, 0x00  /* (to 0x006F state  34) */,
+                       0x75 /* 'u' */, 0x9F, 0x00  /* (to 0x00B1 state  64) */,
+                       0x0D /* '.' */, 0xB3, 0x00  /* (to 0x00C8 state  84) */,
+                       0x61 /* 'a' */, 0xEA, 0x00  /* (to 0x0102 state 134) */,
+                       0x69 /* 'i' */, 0x1D, 0x01  /* (to 0x0138 state 168) */,
+                       0x64 /* 'd' */, 0x9C, 0x01  /* (to 0x01BA state 270) */,
+                       0x72 /* 'r' */, 0x9F, 0x01  /* (to 0x01C0 state 275) */,
                        0x08, /* fail */
 /* pos 0025:   1 */    0xE5 /* 'e' -> */,
 /* pos 0026:   2 */    0xF4 /* 't' -> */,
 /* pos 0027:   3 */    0xA0 /* ' ' -> */,
 /* pos 0028:   4 */    0x00, 0x00                  /* - terminal marker  0 - */,
 /* pos 002a:   5 */    0x6F /* 'o' */, 0x07, 0x00  /* (to 0x0031 state   6) */,
-                       0x72 /* 'r' */, 0x3D, 0x01  /* (to 0x016A state 209) */,
+                       0x72 /* 'r' */, 0x4B, 0x01  /* (to 0x0178 state 216) */,
                        0x08, /* fail */
 /* pos 0031:   6 */    0xF3 /* 's' -> */,
 /* pos 0032:   7 */    0xF4 /* 't' -> */,
 /* pos 0033:   8 */    0xA0 /* ' ' -> */,
 /* pos 0034:   9 */    0x00, 0x01                  /* - terminal marker  1 - */,
-/* pos 0036:  10 */    0x6F /* 'o' */, 0x07, 0x00  /* (to 0x003D state  11) */,
-                       0x74 /* 't' */, 0xB2, 0x00  /* (to 0x00EB state 119) */,
+/* pos 0036:  10 */    0x70 /* 'p' */, 0x07, 0x00  /* (to 0x003D state  11) */,
+                       0x72 /* 'r' */, 0x81, 0x00  /* (to 0x00BA state  72) */,
                        0x08, /* fail */
-/* pos 003d:  11 */    0xF3 /* 's' -> */,
-/* pos 003e:  12 */    0xF4 /* 't' -> */,
-/* pos 003f:  13 */    0xBA /* ':' -> */,
-/* pos 0040:  14 */    0x00, 0x02                  /* - terminal marker  2 - */,
-/* pos 0042:  15 */    0x6F /* 'o' */, 0x07, 0x00  /* (to 0x0049 state  16) */,
-                       0x61 /* 'a' */, 0x2C, 0x01  /* (to 0x0171 state 215) */,
+/* pos 003d:  11 */    0xF4 /* 't' -> */,
+/* pos 003e:  12 */    0xE9 /* 'i' -> */,
+/* pos 003f:  13 */    0xEF /* 'o' -> */,
+/* pos 0040:  14 */    0xEE /* 'n' -> */,
+/* pos 0041:  15 */    0xF3 /* 's' -> */,
+/* pos 0042:  16 */    0xA0 /* ' ' -> */,
+/* pos 0043:  17 */    0x00, 0x02                  /* - terminal marker  2 - */,
+/* pos 0045:  18 */    0x6F /* 'o' */, 0x07, 0x00  /* (to 0x004C state  19) */,
+                       0x74 /* 't' */, 0xB1, 0x00  /* (to 0x00F9 state 126) */,
                        0x08, /* fail */
-/* pos 0049:  16 */    0x6E /* 'n' */, 0x07, 0x00  /* (to 0x0050 state  17) */,
-                       0x6F /* 'o' */, 0x41, 0x01  /* (to 0x018D state 241) */,
+/* pos 004c:  19 */    0xF3 /* 's' -> */,
+/* pos 004d:  20 */    0xF4 /* 't' -> */,
+/* pos 004e:  21 */    0xBA /* ':' -> */,
+/* pos 004f:  22 */    0x00, 0x03                  /* - terminal marker  3 - */,
+/* pos 0051:  23 */    0x6F /* 'o' */, 0x07, 0x00  /* (to 0x0058 state  24) */,
+                       0x61 /* 'a' */, 0x2B, 0x01  /* (to 0x017F state 222) */,
                        0x08, /* fail */
-/* pos 0050:  17 */    0x6E /* 'n' */, 0x07, 0x00  /* (to 0x0057 state  18) */,
-                       0x74 /* 't' */, 0x40, 0x01  /* (to 0x0193 state 246) */,
+/* pos 0058:  24 */    0x6E /* 'n' */, 0x07, 0x00  /* (to 0x005F state  25) */,
+                       0x6F /* 'o' */, 0x40, 0x01  /* (to 0x019B state 248) */,
                        0x08, /* fail */
-/* pos 0057:  18 */    0xE5 /* 'e' -> */,
-/* pos 0058:  19 */    0xE3 /* 'c' -> */,
-/* pos 0059:  20 */    0xF4 /* 't' -> */,
-/* pos 005a:  21 */    0xE9 /* 'i' -> */,
-/* pos 005b:  22 */    0xEF /* 'o' -> */,
-/* pos 005c:  23 */    0xEE /* 'n' -> */,
-/* pos 005d:  24 */    0xBA /* ':' -> */,
-/* pos 005e:  25 */    0x00, 0x03                  /* - terminal marker  3 - */,
-/* pos 0060:  26 */    0xE5 /* 'e' -> */,
-/* pos 0061:  27 */    0xE3 /* 'c' -> */,
-/* pos 0062:  28 */    0xAD /* '-' -> */,
-/* pos 0063:  29 */    0xF7 /* 'w' -> */,
-/* pos 0064:  30 */    0xE5 /* 'e' -> */,
-/* pos 0065:  31 */    0xE2 /* 'b' -> */,
-/* pos 0066:  32 */    0xF3 /* 's' -> */,
-/* pos 0067:  33 */    0xEF /* 'o' -> */,
-/* pos 0068:  34 */    0xE3 /* 'c' -> */,
-/* pos 0069:  35 */    0xEB /* 'k' -> */,
-/* pos 006a:  36 */    0xE5 /* 'e' -> */,
-/* pos 006b:  37 */    0xF4 /* 't' -> */,
-/* pos 006c:  38 */    0xAD /* '-' -> */,
-/* pos 006d:  39 */    0x6B /* 'k' */, 0x19, 0x00  /* (to 0x0086 state  40) */,
-                       0x70 /* 'p' */, 0x28, 0x00  /* (to 0x0098 state  47) */,
-                       0x64 /* 'd' */, 0x40, 0x00  /* (to 0x00B3 state  71) */,
-                       0x76 /* 'v' */, 0x49, 0x00  /* (to 0x00BF state  80) */,
-                       0x6F /* 'o' */, 0x4F, 0x00  /* (to 0x00C8 state  88) */,
-                       0x65 /* 'e' */, 0x54, 0x00  /* (to 0x00D0 state  95) */,
-                       0x61 /* 'a' */, 0x5D, 0x00  /* (to 0x00DC state 106) */,
-                       0x6E /* 'n' */, 0x62, 0x00  /* (to 0x00E4 state 113) */,
+/* pos 005f:  25 */    0x6E /* 'n' */, 0x07, 0x00  /* (to 0x0066 state  26) */,
+                       0x74 /* 't' */, 0x3F, 0x01  /* (to 0x01A1 state 253) */,
                        0x08, /* fail */
-/* pos 0086:  40 */    0xE5 /* 'e' -> */,
-/* pos 0087:  41 */    0xF9 /* 'y' -> */,
-/* pos 0088:  42 */    0x31 /* '1' */, 0x0A, 0x00  /* (to 0x0092 state  43) */,
-                       0x32 /* '2' */, 0x0A, 0x00  /* (to 0x0095 state  45) */,
-                       0x3A /* ':' */, 0x2F, 0x00  /* (to 0x00BD state  79) */,
+/* pos 0066:  26 */    0xE5 /* 'e' -> */,
+/* pos 0067:  27 */    0xE3 /* 'c' -> */,
+/* pos 0068:  28 */    0xF4 /* 't' -> */,
+/* pos 0069:  29 */    0xE9 /* 'i' -> */,
+/* pos 006a:  30 */    0xEF /* 'o' -> */,
+/* pos 006b:  31 */    0xEE /* 'n' -> */,
+/* pos 006c:  32 */    0xBA /* ':' -> */,
+/* pos 006d:  33 */    0x00, 0x04                  /* - terminal marker  4 - */,
+/* pos 006f:  34 */    0xE5 /* 'e' -> */,
+/* pos 0070:  35 */    0xE3 /* 'c' -> */,
+/* pos 0071:  36 */    0xAD /* '-' -> */,
+/* pos 0072:  37 */    0xF7 /* 'w' -> */,
+/* pos 0073:  38 */    0xE5 /* 'e' -> */,
+/* pos 0074:  39 */    0xE2 /* 'b' -> */,
+/* pos 0075:  40 */    0xF3 /* 's' -> */,
+/* pos 0076:  41 */    0xEF /* 'o' -> */,
+/* pos 0077:  42 */    0xE3 /* 'c' -> */,
+/* pos 0078:  43 */    0xEB /* 'k' -> */,
+/* pos 0079:  44 */    0xE5 /* 'e' -> */,
+/* pos 007a:  45 */    0xF4 /* 't' -> */,
+/* pos 007b:  46 */    0xAD /* '-' -> */,
+/* pos 007c:  47 */    0x6B /* 'k' */, 0x19, 0x00  /* (to 0x0095 state  48) */,
+                       0x70 /* 'p' */, 0x28, 0x00  /* (to 0x00A7 state  55) */,
+                       0x64 /* 'd' */, 0x3F, 0x00  /* (to 0x00C1 state  78) */,
+                       0x76 /* 'v' */, 0x48, 0x00  /* (to 0x00CD state  87) */,
+                       0x6F /* 'o' */, 0x4E, 0x00  /* (to 0x00D6 state  95) */,
+                       0x65 /* 'e' */, 0x53, 0x00  /* (to 0x00DE state 102) */,
+                       0x61 /* 'a' */, 0x5C, 0x00  /* (to 0x00EA state 113) */,
+                       0x6E /* 'n' */, 0x61, 0x00  /* (to 0x00F2 state 120) */,
                        0x08, /* fail */
-/* pos 0092:  43 */    0xBA /* ':' -> */,
-/* pos 0093:  44 */    0x00, 0x04                  /* - terminal marker  4 - */,
-/* pos 0095:  45 */    0xBA /* ':' -> */,
-/* pos 0096:  46 */    0x00, 0x05                  /* - terminal marker  5 - */,
-/* pos 0098:  47 */    0xF2 /* 'r' -> */,
-/* pos 0099:  48 */    0xEF /* 'o' -> */,
-/* pos 009a:  49 */    0xF4 /* 't' -> */,
-/* pos 009b:  50 */    0xEF /* 'o' -> */,
-/* pos 009c:  51 */    0xE3 /* 'c' -> */,
-/* pos 009d:  52 */    0xEF /* 'o' -> */,
-/* pos 009e:  53 */    0xEC /* 'l' -> */,
-/* pos 009f:  54 */    0xBA /* ':' -> */,
-/* pos 00a0:  55 */    0x00, 0x06                  /* - terminal marker  6 - */,
-/* pos 00a2:  56 */    0xF0 /* 'p' -> */,
-/* pos 00a3:  57 */    0xE7 /* 'g' -> */,
-/* pos 00a4:  58 */    0xF2 /* 'r' -> */,
-/* pos 00a5:  59 */    0xE1 /* 'a' -> */,
-/* pos 00a6:  60 */    0xE4 /* 'd' -> */,
-/* pos 00a7:  61 */    0xE5 /* 'e' -> */,
-/* pos 00a8:  62 */    0xBA /* ':' -> */,
-/* pos 00a9:  63 */    0x00, 0x07                  /* - terminal marker  7 - */,
-/* pos 00ab:  64 */    0xF2 /* 'r' -> */,
-/* pos 00ac:  65 */    0xE9 /* 'i' -> */,
-/* pos 00ad:  66 */    0xE7 /* 'g' -> */,
-/* pos 00ae:  67 */    0xE9 /* 'i' -> */,
-/* pos 00af:  68 */    0xEE /* 'n' -> */,
-/* pos 00b0:  69 */    0xBA /* ':' -> */,
-/* pos 00b1:  70 */    0x00, 0x08                  /* - terminal marker  8 - */,
-/* pos 00b3:  71 */    0xF2 /* 'r' -> */,
-/* pos 00b4:  72 */    0xE1 /* 'a' -> */,
-/* pos 00b5:  73 */    0xE6 /* 'f' -> */,
-/* pos 00b6:  74 */    0xF4 /* 't' -> */,
-/* pos 00b7:  75 */    0xBA /* ':' -> */,
-/* pos 00b8:  76 */    0x00, 0x09                  /* - terminal marker  9 - */,
-/* pos 00ba:  77 */    0x8A /* '.' -> */,
-/* pos 00bb:  78 */    0x00, 0x0A                  /* - terminal marker 10 - */,
-/* pos 00bd:  79 */    0x00, 0x0B                  /* - terminal marker 11 - */,
-/* pos 00bf:  80 */    0xE5 /* 'e' -> */,
-/* pos 00c0:  81 */    0xF2 /* 'r' -> */,
-/* pos 00c1:  82 */    0xF3 /* 's' -> */,
-/* pos 00c2:  83 */    0xE9 /* 'i' -> */,
-/* pos 00c3:  84 */    0xEF /* 'o' -> */,
-/* pos 00c4:  85 */    0xEE /* 'n' -> */,
-/* pos 00c5:  86 */    0xBA /* ':' -> */,
-/* pos 00c6:  87 */    0x00, 0x0C                  /* - terminal marker 12 - */,
-/* pos 00c8:  88 */    0xF2 /* 'r' -> */,
-/* pos 00c9:  89 */    0xE9 /* 'i' -> */,
-/* pos 00ca:  90 */    0xE7 /* 'g' -> */,
-/* pos 00cb:  91 */    0xE9 /* 'i' -> */,
-/* pos 00cc:  92 */    0xEE /* 'n' -> */,
-/* pos 00cd:  93 */    0xBA /* ':' -> */,
-/* pos 00ce:  94 */    0x00, 0x0D                  /* - terminal marker 13 - */,
-/* pos 00d0:  95 */    0xF8 /* 'x' -> */,
-/* pos 00d1:  96 */    0xF4 /* 't' -> */,
-/* pos 00d2:  97 */    0xE5 /* 'e' -> */,
-/* pos 00d3:  98 */    0xEE /* 'n' -> */,
-/* pos 00d4:  99 */    0xF3 /* 's' -> */,
-/* pos 00d5: 100 */    0xE9 /* 'i' -> */,
-/* pos 00d6: 101 */    0xEF /* 'o' -> */,
-/* pos 00d7: 102 */    0xEE /* 'n' -> */,
-/* pos 00d8: 103 */    0xF3 /* 's' -> */,
-/* pos 00d9: 104 */    0xBA /* ':' -> */,
-/* pos 00da: 105 */    0x00, 0x0E                  /* - terminal marker 14 - */,
-/* pos 00dc: 106 */    0xE3 /* 'c' -> */,
-/* pos 00dd: 107 */    0xE3 /* 'c' -> */,
-/* pos 00de: 108 */    0xE5 /* 'e' -> */,
-/* pos 00df: 109 */    0xF0 /* 'p' -> */,
-/* pos 00e0: 110 */    0xF4 /* 't' -> */,
-/* pos 00e1: 111 */    0xBA /* ':' -> */,
-/* pos 00e2: 112 */    0x00, 0x0F                  /* - terminal marker 15 - */,
-/* pos 00e4: 113 */    0xEF /* 'o' -> */,
-/* pos 00e5: 114 */    0xEE /* 'n' -> */,
-/* pos 00e6: 115 */    0xE3 /* 'c' -> */,
-/* pos 00e7: 116 */    0xE5 /* 'e' -> */,
-/* pos 00e8: 117 */    0xBA /* ':' -> */,
-/* pos 00e9: 118 */    0x00, 0x10                  /* - terminal marker 16 - */,
-/* pos 00eb: 119 */    0xF4 /* 't' -> */,
-/* pos 00ec: 120 */    0xF0 /* 'p' -> */,
-/* pos 00ed: 121 */    0xAF /* '/' -> */,
-/* pos 00ee: 122 */    0xB1 /* '1' -> */,
-/* pos 00ef: 123 */    0xAE /* '.' -> */,
-/* pos 00f0: 124 */    0xB1 /* '1' -> */,
-/* pos 00f1: 125 */    0xA0 /* ' ' -> */,
-/* pos 00f2: 126 */    0x00, 0x11                  /* - terminal marker 17 - */,
-/* pos 00f4: 127 */    0x63 /* 'c' */, 0x07, 0x00  /* (to 0x00FB state 128) */,
-                       0x75 /* 'u' */, 0x88, 0x00  /* (to 0x017F state 228) */,
+/* pos 0095:  48 */    0xE5 /* 'e' -> */,
+/* pos 0096:  49 */    0xF9 /* 'y' -> */,
+/* pos 0097:  50 */    0x31 /* '1' */, 0x0A, 0x00  /* (to 0x00A1 state  51) */,
+                       0x32 /* '2' */, 0x0A, 0x00  /* (to 0x00A4 state  53) */,
+                       0x3A /* ':' */, 0x2E, 0x00  /* (to 0x00CB state  86) */,
                        0x08, /* fail */
-/* pos 00fb: 128 */    0xE3 /* 'c' -> */,
-/* pos 00fc: 129 */    0xE5 /* 'e' -> */,
-/* pos 00fd: 130 */    0x70 /* 'p' */, 0x07, 0x00  /* (to 0x0104 state 131) */,
-                       0x73 /* 's' */, 0x0E, 0x00  /* (to 0x010E state 134) */,
+/* pos 00a1:  51 */    0xBA /* ':' -> */,
+/* pos 00a2:  52 */    0x00, 0x05                  /* - terminal marker  5 - */,
+/* pos 00a4:  53 */    0xBA /* ':' -> */,
+/* pos 00a5:  54 */    0x00, 0x06                  /* - terminal marker  6 - */,
+/* pos 00a7:  55 */    0xF2 /* 'r' -> */,
+/* pos 00a8:  56 */    0xEF /* 'o' -> */,
+/* pos 00a9:  57 */    0xF4 /* 't' -> */,
+/* pos 00aa:  58 */    0xEF /* 'o' -> */,
+/* pos 00ab:  59 */    0xE3 /* 'c' -> */,
+/* pos 00ac:  60 */    0xEF /* 'o' -> */,
+/* pos 00ad:  61 */    0xEC /* 'l' -> */,
+/* pos 00ae:  62 */    0xBA /* ':' -> */,
+/* pos 00af:  63 */    0x00, 0x07                  /* - terminal marker  7 - */,
+/* pos 00b1:  64 */    0xF0 /* 'p' -> */,
+/* pos 00b2:  65 */    0xE7 /* 'g' -> */,
+/* pos 00b3:  66 */    0xF2 /* 'r' -> */,
+/* pos 00b4:  67 */    0xE1 /* 'a' -> */,
+/* pos 00b5:  68 */    0xE4 /* 'd' -> */,
+/* pos 00b6:  69 */    0xE5 /* 'e' -> */,
+/* pos 00b7:  70 */    0xBA /* ':' -> */,
+/* pos 00b8:  71 */    0x00, 0x08                  /* - terminal marker  8 - */,
+/* pos 00ba:  72 */    0xE9 /* 'i' -> */,
+/* pos 00bb:  73 */    0xE7 /* 'g' -> */,
+/* pos 00bc:  74 */    0xE9 /* 'i' -> */,
+/* pos 00bd:  75 */    0xEE /* 'n' -> */,
+/* pos 00be:  76 */    0xBA /* ':' -> */,
+/* pos 00bf:  77 */    0x00, 0x09                  /* - terminal marker  9 - */,
+/* pos 00c1:  78 */    0xF2 /* 'r' -> */,
+/* pos 00c2:  79 */    0xE1 /* 'a' -> */,
+/* pos 00c3:  80 */    0xE6 /* 'f' -> */,
+/* pos 00c4:  81 */    0xF4 /* 't' -> */,
+/* pos 00c5:  82 */    0xBA /* ':' -> */,
+/* pos 00c6:  83 */    0x00, 0x0A                  /* - terminal marker 10 - */,
+/* pos 00c8:  84 */    0x8A /* '.' -> */,
+/* pos 00c9:  85 */    0x00, 0x0B                  /* - terminal marker 11 - */,
+/* pos 00cb:  86 */    0x00, 0x0C                  /* - terminal marker 12 - */,
+/* pos 00cd:  87 */    0xE5 /* 'e' -> */,
+/* pos 00ce:  88 */    0xF2 /* 'r' -> */,
+/* pos 00cf:  89 */    0xF3 /* 's' -> */,
+/* pos 00d0:  90 */    0xE9 /* 'i' -> */,
+/* pos 00d1:  91 */    0xEF /* 'o' -> */,
+/* pos 00d2:  92 */    0xEE /* 'n' -> */,
+/* pos 00d3:  93 */    0xBA /* ':' -> */,
+/* pos 00d4:  94 */    0x00, 0x0D                  /* - terminal marker 13 - */,
+/* pos 00d6:  95 */    0xF2 /* 'r' -> */,
+/* pos 00d7:  96 */    0xE9 /* 'i' -> */,
+/* pos 00d8:  97 */    0xE7 /* 'g' -> */,
+/* pos 00d9:  98 */    0xE9 /* 'i' -> */,
+/* pos 00da:  99 */    0xEE /* 'n' -> */,
+/* pos 00db: 100 */    0xBA /* ':' -> */,
+/* pos 00dc: 101 */    0x00, 0x0E                  /* - terminal marker 14 - */,
+/* pos 00de: 102 */    0xF8 /* 'x' -> */,
+/* pos 00df: 103 */    0xF4 /* 't' -> */,
+/* pos 00e0: 104 */    0xE5 /* 'e' -> */,
+/* pos 00e1: 105 */    0xEE /* 'n' -> */,
+/* pos 00e2: 106 */    0xF3 /* 's' -> */,
+/* pos 00e3: 107 */    0xE9 /* 'i' -> */,
+/* pos 00e4: 108 */    0xEF /* 'o' -> */,
+/* pos 00e5: 109 */    0xEE /* 'n' -> */,
+/* pos 00e6: 110 */    0xF3 /* 's' -> */,
+/* pos 00e7: 111 */    0xBA /* ':' -> */,
+/* pos 00e8: 112 */    0x00, 0x0F                  /* - terminal marker 15 - */,
+/* pos 00ea: 113 */    0xE3 /* 'c' -> */,
+/* pos 00eb: 114 */    0xE3 /* 'c' -> */,
+/* pos 00ec: 115 */    0xE5 /* 'e' -> */,
+/* pos 00ed: 116 */    0xF0 /* 'p' -> */,
+/* pos 00ee: 117 */    0xF4 /* 't' -> */,
+/* pos 00ef: 118 */    0xBA /* ':' -> */,
+/* pos 00f0: 119 */    0x00, 0x10                  /* - terminal marker 16 - */,
+/* pos 00f2: 120 */    0xEF /* 'o' -> */,
+/* pos 00f3: 121 */    0xEE /* 'n' -> */,
+/* pos 00f4: 122 */    0xE3 /* 'c' -> */,
+/* pos 00f5: 123 */    0xE5 /* 'e' -> */,
+/* pos 00f6: 124 */    0xBA /* ':' -> */,
+/* pos 00f7: 125 */    0x00, 0x11                  /* - terminal marker 17 - */,
+/* pos 00f9: 126 */    0xF4 /* 't' -> */,
+/* pos 00fa: 127 */    0xF0 /* 'p' -> */,
+/* pos 00fb: 128 */    0xAF /* '/' -> */,
+/* pos 00fc: 129 */    0xB1 /* '1' -> */,
+/* pos 00fd: 130 */    0xAE /* '.' -> */,
+/* pos 00fe: 131 */    0xB1 /* '1' -> */,
+/* pos 00ff: 132 */    0xA0 /* ' ' -> */,
+/* pos 0100: 133 */    0x00, 0x12                  /* - terminal marker 18 - */,
+/* pos 0102: 134 */    0x63 /* 'c' */, 0x07, 0x00  /* (to 0x0109 state 135) */,
+                       0x75 /* 'u' */, 0x88, 0x00  /* (to 0x018D state 235) */,
                        0x08, /* fail */
-/* pos 0104: 131 */    0xF4 /* 't' -> */,
-/* pos 0105: 132 */    0x3A /* ':' */, 0x07, 0x00  /* (to 0x010C state 133) */,
-                       0x2D /* '-' */, 0x47, 0x00  /* (to 0x014F state 190) */,
+/* pos 0109: 135 */    0xE3 /* 'c' -> */,
+/* pos 010a: 136 */    0xE5 /* 'e' -> */,
+/* pos 010b: 137 */    0x70 /* 'p' */, 0x07, 0x00  /* (to 0x0112 state 138) */,
+                       0x73 /* 's' */, 0x0E, 0x00  /* (to 0x011C state 141) */,
                        0x08, /* fail */
-/* pos 010c: 133 */    0x00, 0x12                  /* - terminal marker 18 - */,
-/* pos 010e: 134 */    0xF3 /* 's' -> */,
-/* pos 010f: 135 */    0xAD /* '-' -> */,
-/* pos 0110: 136 */    0xE3 /* 'c' -> */,
-/* pos 0111: 137 */    0xEF /* 'o' -> */,
-/* pos 0112: 138 */    0xEE /* 'n' -> */,
-/* pos 0113: 139 */    0xF4 /* 't' -> */,
-/* pos 0114: 140 */    0xF2 /* 'r' -> */,
-/* pos 0115: 141 */    0xEF /* 'o' -> */,
-/* pos 0116: 142 */    0xEC /* 'l' -> */,
-/* pos 0117: 143 */    0xAD /* '-' -> */,
-/* pos 0118: 144 */    0xF2 /* 'r' -> */,
-/* pos 0119: 145 */    0xE5 /* 'e' -> */,
-/* pos 011a: 146 */    0xF1 /* 'q' -> */,
-/* pos 011b: 147 */    0xF5 /* 'u' -> */,
-/* pos 011c: 148 */    0xE5 /* 'e' -> */,
-/* pos 011d: 149 */    0xF3 /* 's' -> */,
-/* pos 011e: 150 */    0xF4 /* 't' -> */,
-/* pos 011f: 151 */    0xAD /* '-' -> */,
-/* pos 0120: 152 */    0xE8 /* 'h' -> */,
-/* pos 0121: 153 */    0xE5 /* 'e' -> */,
-/* pos 0122: 154 */    0xE1 /* 'a' -> */,
-/* pos 0123: 155 */    0xE4 /* 'd' -> */,
-/* pos 0124: 156 */    0xE5 /* 'e' -> */,
-/* pos 0125: 157 */    0xF2 /* 'r' -> */,
-/* pos 0126: 158 */    0xF3 /* 's' -> */,
-/* pos 0127: 159 */    0xBA /* ':' -> */,
-/* pos 0128: 160 */    0x00, 0x13                  /* - terminal marker 19 - */,
-/* pos 012a: 161 */    0xE6 /* 'f' -> */,
-/* pos 012b: 162 */    0xAD /* '-' -> */,
-/* pos 012c: 163 */    0x6D /* 'm' */, 0x07, 0x00  /* (to 0x0133 state 164) */,
-                       0x6E /* 'n' */, 0x14, 0x00  /* (to 0x0143 state 179) */,
+/* pos 0112: 138 */    0xF4 /* 't' -> */,
+/* pos 0113: 139 */    0x3A /* ':' */, 0x07, 0x00  /* (to 0x011A state 140) */,
+                       0x2D /* '-' */, 0x47, 0x00  /* (to 0x015D state 197) */,
                        0x08, /* fail */
-/* pos 0133: 164 */    0xEF /* 'o' -> */,
-/* pos 0134: 165 */    0xE4 /* 'd' -> */,
-/* pos 0135: 166 */    0xE9 /* 'i' -> */,
-/* pos 0136: 167 */    0xE6 /* 'f' -> */,
-/* pos 0137: 168 */    0xE9 /* 'i' -> */,
-/* pos 0138: 169 */    0xE5 /* 'e' -> */,
-/* pos 0139: 170 */    0xE4 /* 'd' -> */,
-/* pos 013a: 171 */    0xAD /* '-' -> */,
-/* pos 013b: 172 */    0xF3 /* 's' -> */,
-/* pos 013c: 173 */    0xE9 /* 'i' -> */,
-/* pos 013d: 174 */    0xEE /* 'n' -> */,
-/* pos 013e: 175 */    0xE3 /* 'c' -> */,
-/* pos 013f: 176 */    0xE5 /* 'e' -> */,
-/* pos 0140: 177 */    0xBA /* ':' -> */,
-/* pos 0141: 178 */    0x00, 0x14                  /* - terminal marker 20 - */,
-/* pos 0143: 179 */    0xEF /* 'o' -> */,
-/* pos 0144: 180 */    0xEE /* 'n' -> */,
-/* pos 0145: 181 */    0xE5 /* 'e' -> */,
-/* pos 0146: 182 */    0xAD /* '-' -> */,
-/* pos 0147: 183 */    0xED /* 'm' -> */,
-/* pos 0148: 184 */    0xE1 /* 'a' -> */,
-/* pos 0149: 185 */    0xF4 /* 't' -> */,
-/* pos 014a: 186 */    0xE3 /* 'c' -> */,
-/* pos 014b: 187 */    0xE8 /* 'h' -> */,
-/* pos 014c: 188 */    0xBA /* ':' -> */,
-/* pos 014d: 189 */    0x00, 0x15                  /* - terminal marker 21 - */,
-/* pos 014f: 190 */    0x65 /* 'e' */, 0x07, 0x00  /* (to 0x0156 state 191) */,
-                       0x6C /* 'l' */, 0x0E, 0x00  /* (to 0x0160 state 200) */,
+/* pos 011a: 140 */    0x00, 0x13                  /* - terminal marker 19 - */,
+/* pos 011c: 141 */    0xF3 /* 's' -> */,
+/* pos 011d: 142 */    0xAD /* '-' -> */,
+/* pos 011e: 143 */    0xE3 /* 'c' -> */,
+/* pos 011f: 144 */    0xEF /* 'o' -> */,
+/* pos 0120: 145 */    0xEE /* 'n' -> */,
+/* pos 0121: 146 */    0xF4 /* 't' -> */,
+/* pos 0122: 147 */    0xF2 /* 'r' -> */,
+/* pos 0123: 148 */    0xEF /* 'o' -> */,
+/* pos 0124: 149 */    0xEC /* 'l' -> */,
+/* pos 0125: 150 */    0xAD /* '-' -> */,
+/* pos 0126: 151 */    0xF2 /* 'r' -> */,
+/* pos 0127: 152 */    0xE5 /* 'e' -> */,
+/* pos 0128: 153 */    0xF1 /* 'q' -> */,
+/* pos 0129: 154 */    0xF5 /* 'u' -> */,
+/* pos 012a: 155 */    0xE5 /* 'e' -> */,
+/* pos 012b: 156 */    0xF3 /* 's' -> */,
+/* pos 012c: 157 */    0xF4 /* 't' -> */,
+/* pos 012d: 158 */    0xAD /* '-' -> */,
+/* pos 012e: 159 */    0xE8 /* 'h' -> */,
+/* pos 012f: 160 */    0xE5 /* 'e' -> */,
+/* pos 0130: 161 */    0xE1 /* 'a' -> */,
+/* pos 0131: 162 */    0xE4 /* 'd' -> */,
+/* pos 0132: 163 */    0xE5 /* 'e' -> */,
+/* pos 0133: 164 */    0xF2 /* 'r' -> */,
+/* pos 0134: 165 */    0xF3 /* 's' -> */,
+/* pos 0135: 166 */    0xBA /* ':' -> */,
+/* pos 0136: 167 */    0x00, 0x14                  /* - terminal marker 20 - */,
+/* pos 0138: 168 */    0xE6 /* 'f' -> */,
+/* pos 0139: 169 */    0xAD /* '-' -> */,
+/* pos 013a: 170 */    0x6D /* 'm' */, 0x07, 0x00  /* (to 0x0141 state 171) */,
+                       0x6E /* 'n' */, 0x14, 0x00  /* (to 0x0151 state 186) */,
                        0x08, /* fail */
-/* pos 0156: 191 */    0xEE /* 'n' -> */,
-/* pos 0157: 192 */    0xE3 /* 'c' -> */,
-/* pos 0158: 193 */    0xEF /* 'o' -> */,
-/* pos 0159: 194 */    0xE4 /* 'd' -> */,
-/* pos 015a: 195 */    0xE9 /* 'i' -> */,
-/* pos 015b: 196 */    0xEE /* 'n' -> */,
-/* pos 015c: 197 */    0xE7 /* 'g' -> */,
-/* pos 015d: 198 */    0xBA /* ':' -> */,
-/* pos 015e: 199 */    0x00, 0x16                  /* - terminal marker 22 - */,
-/* pos 0160: 200 */    0xE1 /* 'a' -> */,
-/* pos 0161: 201 */    0xEE /* 'n' -> */,
-/* pos 0162: 202 */    0xE7 /* 'g' -> */,
-/* pos 0163: 203 */    0xF5 /* 'u' -> */,
-/* pos 0164: 204 */    0xE1 /* 'a' -> */,
-/* pos 0165: 205 */    0xE7 /* 'g' -> */,
-/* pos 0166: 206 */    0xE5 /* 'e' -> */,
-/* pos 0167: 207 */    0xBA /* ':' -> */,
-/* pos 0168: 208 */    0x00, 0x17                  /* - terminal marker 23 - */,
-/* pos 016a: 209 */    0xE1 /* 'a' -> */,
-/* pos 016b: 210 */    0xE7 /* 'g' -> */,
-/* pos 016c: 211 */    0xED /* 'm' -> */,
-/* pos 016d: 212 */    0xE1 /* 'a' -> */,
-/* pos 016e: 213 */    0xBA /* ':' -> */,
-/* pos 016f: 214 */    0x00, 0x18                  /* - terminal marker 24 - */,
-/* pos 0171: 215 */    0xE3 /* 'c' -> */,
-/* pos 0172: 216 */    0xE8 /* 'h' -> */,
-/* pos 0173: 217 */    0xE5 /* 'e' -> */,
-/* pos 0174: 218 */    0xAD /* '-' -> */,
-/* pos 0175: 219 */    0xE3 /* 'c' -> */,
-/* pos 0176: 220 */    0xEF /* 'o' -> */,
-/* pos 0177: 221 */    0xEE /* 'n' -> */,
-/* pos 0178: 222 */    0xF4 /* 't' -> */,
-/* pos 0179: 223 */    0xF2 /* 'r' -> */,
-/* pos 017a: 224 */    0xEF /* 'o' -> */,
-/* pos 017b: 225 */    0xEC /* 'l' -> */,
-/* pos 017c: 226 */    0xBA /* ':' -> */,
-/* pos 017d: 227 */    0x00, 0x19                  /* - terminal marker 25 - */,
-/* pos 017f: 228 */    0xF4 /* 't' -> */,
-/* pos 0180: 229 */    0xE8 /* 'h' -> */,
-/* pos 0181: 230 */    0xEF /* 'o' -> */,
-/* pos 0182: 231 */    0xF2 /* 'r' -> */,
-/* pos 0183: 232 */    0xE9 /* 'i' -> */,
-/* pos 0184: 233 */    0xFA /* 'z' -> */,
-/* pos 0185: 234 */    0xE1 /* 'a' -> */,
-/* pos 0186: 235 */    0xF4 /* 't' -> */,
-/* pos 0187: 236 */    0xE9 /* 'i' -> */,
-/* pos 0188: 237 */    0xEF /* 'o' -> */,
-/* pos 0189: 238 */    0xEE /* 'n' -> */,
-/* pos 018a: 239 */    0xBA /* ':' -> */,
-/* pos 018b: 240 */    0x00, 0x1A                  /* - terminal marker 26 - */,
-/* pos 018d: 241 */    0xEB /* 'k' -> */,
-/* pos 018e: 242 */    0xE9 /* 'i' -> */,
-/* pos 018f: 243 */    0xE5 /* 'e' -> */,
-/* pos 0190: 244 */    0xBA /* ':' -> */,
-/* pos 0191: 245 */    0x00, 0x1B                  /* - terminal marker 27 - */,
-/* pos 0193: 246 */    0xE5 /* 'e' -> */,
-/* pos 0194: 247 */    0xEE /* 'n' -> */,
-/* pos 0195: 248 */    0xF4 /* 't' -> */,
-/* pos 0196: 249 */    0xAD /* '-' -> */,
-/* pos 0197: 250 */    0x6C /* 'l' */, 0x07, 0x00  /* (to 0x019E state 251) */,
-                       0x74 /* 't' */, 0x0C, 0x00  /* (to 0x01A6 state 258) */,
+/* pos 0141: 171 */    0xEF /* 'o' -> */,
+/* pos 0142: 172 */    0xE4 /* 'd' -> */,
+/* pos 0143: 173 */    0xE9 /* 'i' -> */,
+/* pos 0144: 174 */    0xE6 /* 'f' -> */,
+/* pos 0145: 175 */    0xE9 /* 'i' -> */,
+/* pos 0146: 176 */    0xE5 /* 'e' -> */,
+/* pos 0147: 177 */    0xE4 /* 'd' -> */,
+/* pos 0148: 178 */    0xAD /* '-' -> */,
+/* pos 0149: 179 */    0xF3 /* 's' -> */,
+/* pos 014a: 180 */    0xE9 /* 'i' -> */,
+/* pos 014b: 181 */    0xEE /* 'n' -> */,
+/* pos 014c: 182 */    0xE3 /* 'c' -> */,
+/* pos 014d: 183 */    0xE5 /* 'e' -> */,
+/* pos 014e: 184 */    0xBA /* ':' -> */,
+/* pos 014f: 185 */    0x00, 0x15                  /* - terminal marker 21 - */,
+/* pos 0151: 186 */    0xEF /* 'o' -> */,
+/* pos 0152: 187 */    0xEE /* 'n' -> */,
+/* pos 0153: 188 */    0xE5 /* 'e' -> */,
+/* pos 0154: 189 */    0xAD /* '-' -> */,
+/* pos 0155: 190 */    0xED /* 'm' -> */,
+/* pos 0156: 191 */    0xE1 /* 'a' -> */,
+/* pos 0157: 192 */    0xF4 /* 't' -> */,
+/* pos 0158: 193 */    0xE3 /* 'c' -> */,
+/* pos 0159: 194 */    0xE8 /* 'h' -> */,
+/* pos 015a: 195 */    0xBA /* ':' -> */,
+/* pos 015b: 196 */    0x00, 0x16                  /* - terminal marker 22 - */,
+/* pos 015d: 197 */    0x65 /* 'e' */, 0x07, 0x00  /* (to 0x0164 state 198) */,
+                       0x6C /* 'l' */, 0x0E, 0x00  /* (to 0x016E state 207) */,
                        0x08, /* fail */
-/* pos 019e: 251 */    0xE5 /* 'e' -> */,
-/* pos 019f: 252 */    0xEE /* 'n' -> */,
-/* pos 01a0: 253 */    0xE7 /* 'g' -> */,
-/* pos 01a1: 254 */    0xF4 /* 't' -> */,
-/* pos 01a2: 255 */    0xE8 /* 'h' -> */,
-/* pos 01a3: 256 */    0xBA /* ':' -> */,
-/* pos 01a4: 257 */    0x00, 0x1C                  /* - terminal marker 28 - */,
-/* pos 01a6: 258 */    0xF9 /* 'y' -> */,
-/* pos 01a7: 259 */    0xF0 /* 'p' -> */,
-/* pos 01a8: 260 */    0xE5 /* 'e' -> */,
-/* pos 01a9: 261 */    0xBA /* ':' -> */,
-/* pos 01aa: 262 */    0x00, 0x1D                  /* - terminal marker 29 - */,
-/* pos 01ac: 263 */    0xE1 /* 'a' -> */,
-/* pos 01ad: 264 */    0xF4 /* 't' -> */,
-/* pos 01ae: 265 */    0xE5 /* 'e' -> */,
-/* pos 01af: 266 */    0xBA /* ':' -> */,
-/* pos 01b0: 267 */    0x00, 0x1E                  /* - terminal marker 30 - */,
-/* pos 01b2: 268 */    0x61 /* 'a' */, 0x07, 0x00  /* (to 0x01B9 state 269) */,
-                       0x65 /* 'e' */, 0x0A, 0x00  /* (to 0x01BF state 274) */,
+/* pos 0164: 198 */    0xEE /* 'n' -> */,
+/* pos 0165: 199 */    0xE3 /* 'c' -> */,
+/* pos 0166: 200 */    0xEF /* 'o' -> */,
+/* pos 0167: 201 */    0xE4 /* 'd' -> */,
+/* pos 0168: 202 */    0xE9 /* 'i' -> */,
+/* pos 0169: 203 */    0xEE /* 'n' -> */,
+/* pos 016a: 204 */    0xE7 /* 'g' -> */,
+/* pos 016b: 205 */    0xBA /* ':' -> */,
+/* pos 016c: 206 */    0x00, 0x17                  /* - terminal marker 23 - */,
+/* pos 016e: 207 */    0xE1 /* 'a' -> */,
+/* pos 016f: 208 */    0xEE /* 'n' -> */,
+/* pos 0170: 209 */    0xE7 /* 'g' -> */,
+/* pos 0171: 210 */    0xF5 /* 'u' -> */,
+/* pos 0172: 211 */    0xE1 /* 'a' -> */,
+/* pos 0173: 212 */    0xE7 /* 'g' -> */,
+/* pos 0174: 213 */    0xE5 /* 'e' -> */,
+/* pos 0175: 214 */    0xBA /* ':' -> */,
+/* pos 0176: 215 */    0x00, 0x18                  /* - terminal marker 24 - */,
+/* pos 0178: 216 */    0xE1 /* 'a' -> */,
+/* pos 0179: 217 */    0xE7 /* 'g' -> */,
+/* pos 017a: 218 */    0xED /* 'm' -> */,
+/* pos 017b: 219 */    0xE1 /* 'a' -> */,
+/* pos 017c: 220 */    0xBA /* ':' -> */,
+/* pos 017d: 221 */    0x00, 0x19                  /* - terminal marker 25 - */,
+/* pos 017f: 222 */    0xE3 /* 'c' -> */,
+/* pos 0180: 223 */    0xE8 /* 'h' -> */,
+/* pos 0181: 224 */    0xE5 /* 'e' -> */,
+/* pos 0182: 225 */    0xAD /* '-' -> */,
+/* pos 0183: 226 */    0xE3 /* 'c' -> */,
+/* pos 0184: 227 */    0xEF /* 'o' -> */,
+/* pos 0185: 228 */    0xEE /* 'n' -> */,
+/* pos 0186: 229 */    0xF4 /* 't' -> */,
+/* pos 0187: 230 */    0xF2 /* 'r' -> */,
+/* pos 0188: 231 */    0xEF /* 'o' -> */,
+/* pos 0189: 232 */    0xEC /* 'l' -> */,
+/* pos 018a: 233 */    0xBA /* ':' -> */,
+/* pos 018b: 234 */    0x00, 0x1A                  /* - terminal marker 26 - */,
+/* pos 018d: 235 */    0xF4 /* 't' -> */,
+/* pos 018e: 236 */    0xE8 /* 'h' -> */,
+/* pos 018f: 237 */    0xEF /* 'o' -> */,
+/* pos 0190: 238 */    0xF2 /* 'r' -> */,
+/* pos 0191: 239 */    0xE9 /* 'i' -> */,
+/* pos 0192: 240 */    0xFA /* 'z' -> */,
+/* pos 0193: 241 */    0xE1 /* 'a' -> */,
+/* pos 0194: 242 */    0xF4 /* 't' -> */,
+/* pos 0195: 243 */    0xE9 /* 'i' -> */,
+/* pos 0196: 244 */    0xEF /* 'o' -> */,
+/* pos 0197: 245 */    0xEE /* 'n' -> */,
+/* pos 0198: 246 */    0xBA /* ':' -> */,
+/* pos 0199: 247 */    0x00, 0x1B                  /* - terminal marker 27 - */,
+/* pos 019b: 248 */    0xEB /* 'k' -> */,
+/* pos 019c: 249 */    0xE9 /* 'i' -> */,
+/* pos 019d: 250 */    0xE5 /* 'e' -> */,
+/* pos 019e: 251 */    0xBA /* ':' -> */,
+/* pos 019f: 252 */    0x00, 0x1C                  /* - terminal marker 28 - */,
+/* pos 01a1: 253 */    0xE5 /* 'e' -> */,
+/* pos 01a2: 254 */    0xEE /* 'n' -> */,
+/* pos 01a3: 255 */    0xF4 /* 't' -> */,
+/* pos 01a4: 256 */    0xAD /* '-' -> */,
+/* pos 01a5: 257 */    0x6C /* 'l' */, 0x07, 0x00  /* (to 0x01AC state 258) */,
+                       0x74 /* 't' */, 0x0C, 0x00  /* (to 0x01B4 state 265) */,
                        0x08, /* fail */
-/* pos 01b9: 269 */    0xEE /* 'n' -> */,
-/* pos 01ba: 270 */    0xE7 /* 'g' -> */,
-/* pos 01bb: 271 */    0xE5 /* 'e' -> */,
-/* pos 01bc: 272 */    0xBA /* ':' -> */,
-/* pos 01bd: 273 */    0x00, 0x1F                  /* - terminal marker 31 - */,
-/* pos 01bf: 274 */    0xE6 /* 'f' -> */,
-/* pos 01c0: 275 */    0xE5 /* 'e' -> */,
-/* pos 01c1: 276 */    0xF2 /* 'r' -> */,
-/* pos 01c2: 277 */    0xE5 /* 'e' -> */,
-/* pos 01c3: 278 */    0xF2 /* 'r' -> */,
-/* pos 01c4: 279 */    0xBA /* ':' -> */,
-/* pos 01c5: 280 */    0x00, 0x20                  /* - terminal marker 32 - */,
-/* total size 455 bytes */
+/* pos 01ac: 258 */    0xE5 /* 'e' -> */,
+/* pos 01ad: 259 */    0xEE /* 'n' -> */,
+/* pos 01ae: 260 */    0xE7 /* 'g' -> */,
+/* pos 01af: 261 */    0xF4 /* 't' -> */,
+/* pos 01b0: 262 */    0xE8 /* 'h' -> */,
+/* pos 01b1: 263 */    0xBA /* ':' -> */,
+/* pos 01b2: 264 */    0x00, 0x1D                  /* - terminal marker 29 - */,
+/* pos 01b4: 265 */    0xF9 /* 'y' -> */,
+/* pos 01b5: 266 */    0xF0 /* 'p' -> */,
+/* pos 01b6: 267 */    0xE5 /* 'e' -> */,
+/* pos 01b7: 268 */    0xBA /* ':' -> */,
+/* pos 01b8: 269 */    0x00, 0x1E                  /* - terminal marker 30 - */,
+/* pos 01ba: 270 */    0xE1 /* 'a' -> */,
+/* pos 01bb: 271 */    0xF4 /* 't' -> */,
+/* pos 01bc: 272 */    0xE5 /* 'e' -> */,
+/* pos 01bd: 273 */    0xBA /* ':' -> */,
+/* pos 01be: 274 */    0x00, 0x1F                  /* - terminal marker 31 - */,
+/* pos 01c0: 275 */    0x61 /* 'a' */, 0x07, 0x00  /* (to 0x01C7 state 276) */,
+                       0x65 /* 'e' */, 0x0A, 0x00  /* (to 0x01CD state 281) */,
+                       0x08, /* fail */
+/* pos 01c7: 276 */    0xEE /* 'n' -> */,
+/* pos 01c8: 277 */    0xE7 /* 'g' -> */,
+/* pos 01c9: 278 */    0xE5 /* 'e' -> */,
+/* pos 01ca: 279 */    0xBA /* ':' -> */,
+/* pos 01cb: 280 */    0x00, 0x20                  /* - terminal marker 32 - */,
+/* pos 01cd: 281 */    0xE6 /* 'f' -> */,
+/* pos 01ce: 282 */    0xE5 /* 'e' -> */,
+/* pos 01cf: 283 */    0xF2 /* 'r' -> */,
+/* pos 01d0: 284 */    0xE5 /* 'e' -> */,
+/* pos 01d1: 285 */    0xF2 /* 'r' -> */,
+/* pos 01d2: 286 */    0xBA /* ':' -> */,
+/* pos 01d3: 287 */    0x00, 0x21                  /* - terminal marker 33 - */,
+/* total size 469 bytes */
index 31cde77..147297b 100644 (file)
@@ -279,6 +279,7 @@ struct lws_tokens {
 enum lws_token_indexes {
        WSI_TOKEN_GET_URI,
        WSI_TOKEN_POST_URI,
+       WSI_TOKEN_OPTIONS_URI,
        WSI_TOKEN_HOST,
        WSI_TOKEN_CONNECTION,
        WSI_TOKEN_KEY1,
index dc2ed36..cdc500e 100644 (file)
@@ -21,6 +21,7 @@
 const char *set[] = {
        "get ",
        "post ",
+       "options ",
        "host:",
        "connection:",
        "sec-websocket-key1:",
index b71c63c..a8d0a5e 100644 (file)
@@ -194,6 +194,7 @@ int libwebsocket_parse(
        switch (wsi->u.hdr.parser_state) {
        case WSI_TOKEN_GET_URI:
        case WSI_TOKEN_POST_URI:
+       case WSI_TOKEN_OPTIONS_URI:
        case WSI_TOKEN_HOST:
        case WSI_TOKEN_CONNECTION:
        case WSI_TOKEN_KEY1:
@@ -235,7 +236,9 @@ int libwebsocket_parse(
                                      wsi->u.hdr.parser_state]].len && c == ' ')
                        break;
 
-               if ((wsi->u.hdr.parser_state != WSI_TOKEN_GET_URI) && (wsi->u.hdr.parser_state != WSI_TOKEN_POST_URI))
+               if ((wsi->u.hdr.parser_state != WSI_TOKEN_GET_URI) &&
+                       (wsi->u.hdr.parser_state != WSI_TOKEN_POST_URI) &&
+                       (wsi->u.hdr.parser_state != WSI_TOKEN_OPTIONS_URI))
                        goto check_eol;
 
                /* special URI processing... end at space */
@@ -417,8 +420,10 @@ swallow:
 
                if (wsi->u.hdr.lextable_pos < 0) {
                        /* this is not a header we know about */
-                       if (wsi->u.hdr.ah->frag_index[WSI_TOKEN_GET_URI] || wsi->u.hdr.ah->frag_index[WSI_TOKEN_POST_URI] ||
-                                   wsi->u.hdr.ah->frag_index[WSI_TOKEN_HTTP]) {
+                       if (wsi->u.hdr.ah->frag_index[WSI_TOKEN_GET_URI] ||
+                               wsi->u.hdr.ah->frag_index[WSI_TOKEN_POST_URI] ||
+                               wsi->u.hdr.ah->frag_index[WSI_TOKEN_OPTIONS_URI] ||
+                               wsi->u.hdr.ah->frag_index[WSI_TOKEN_HTTP]) {
                                /*
                                 * altready had the method, no idea what
                                 * this crap is, ignore
@@ -449,6 +454,10 @@ swallow:
                                wsi->u.hdr.ah->frag_index[WSI_TOKEN_POST_URI]) {
                                lwsl_warn("Duplicated POST\n");
                                return -1;
+                       } else if (n == WSI_TOKEN_OPTIONS_URI &&
+                               wsi->u.hdr.ah->frag_index[WSI_TOKEN_OPTIONS_URI]) {
+                               lwsl_warn("Duplicated OPTIONS\n");
+                               return -1;
                        }
 
                        /*
index 1e85186..6afd570 100644 (file)
@@ -200,13 +200,14 @@ int lws_handshake_server(struct libwebsocket_context *context,
                        /* it's not websocket.... shall we accept it as http? */
 
                        if (!lws_hdr_total_length(wsi, WSI_TOKEN_GET_URI) &&
-                           !lws_hdr_total_length(wsi, WSI_TOKEN_POST_URI)) {
+                               !lws_hdr_total_length(wsi, WSI_TOKEN_POST_URI) &&
+                               !lws_hdr_total_length(wsi, WSI_TOKEN_OPTIONS_URI)) {
                                lwsl_warn("Missing URI in HTTP request\n");
                                goto bail_nuke_ah;
                        }
 
                        if (lws_hdr_total_length(wsi, WSI_TOKEN_GET_URI) &&
-                           lws_hdr_total_length(wsi, WSI_TOKEN_POST_URI)) {
+                               lws_hdr_total_length(wsi, WSI_TOKEN_POST_URI)) {
                                lwsl_warn("GET and POST methods?\n");
                                goto bail_nuke_ah;
                        }
@@ -227,6 +228,12 @@ int lws_handshake_server(struct libwebsocket_context *context,
                                uri_ptr = lws_hdr_simple_ptr(wsi, WSI_TOKEN_POST_URI);
                                uri_len = lws_hdr_total_length(wsi, WSI_TOKEN_POST_URI);
                        }
+                       if (lws_hdr_total_length(wsi, WSI_TOKEN_OPTIONS_URI)) {
+                               lwsl_info("HTTP OPTIONS request for '%s'\n",
+                                  lws_hdr_simple_ptr(wsi, WSI_TOKEN_OPTIONS_URI));
+                               uri_ptr = lws_hdr_simple_ptr(wsi, WSI_TOKEN_OPTIONS_URI);
+                               uri_len = lws_hdr_total_length(wsi, WSI_TOKEN_OPTIONS_URI);
+                       }
 
                        /*
                         * Hm we still need the headers so the