ebb 0.0.4 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +53 -62
- data/benchmark/application.rb +3 -9
- data/benchmark/bench_results.rb +30 -17
- data/benchmark/server_test.rb +54 -12
- data/bin/ebb_rails +1 -76
- data/ruby_lib/ebb.rb +136 -107
- data/ruby_lib/ebb/runner.rb +135 -0
- data/ruby_lib/ebb/runner/rails.rb +34 -0
- data/ruby_lib/rack/adapter/rails.rb +2 -0
- data/src/ebb.c +174 -142
- data/src/ebb.h +14 -15
- data/src/ebb_ruby.c +120 -85
- data/src/parser.c +322 -410
- data/test/basic_test.rb +6 -170
- data/test/ebb_rails_test.rb +34 -0
- data/test/env_test.rb +8 -12
- data/test/helper.rb +86 -0
- metadata +21 -11
- data/VERSION +0 -1
- data/ruby_lib/daemonizable.rb +0 -98
- data/test/echo_server.rb +0 -16
- data/test/test.py +0 -15
data/src/ebb.h
CHANGED
@@ -4,20 +4,16 @@
|
|
4
4
|
*/
|
5
5
|
#ifndef ebb_h
|
6
6
|
#define ebb_h
|
7
|
-
|
7
|
+
#define EV_STANDALONE 1
|
8
|
+
#include <ev.h>
|
8
9
|
#include <sys/socket.h>
|
9
10
|
#include <netinet/in.h>
|
10
11
|
#include <glib.h>
|
11
|
-
|
12
|
-
#define EV_STANDALONE 1
|
13
|
-
#include <ev.h>
|
14
|
-
|
15
12
|
#include "parser.h"
|
16
13
|
|
17
|
-
|
18
14
|
typedef struct ebb_server ebb_server;
|
19
15
|
typedef struct ebb_client ebb_client;
|
20
|
-
|
16
|
+
#define EBB_VERSION "0.1.0"
|
21
17
|
#define EBB_BUFFERSIZE (1024 * (80 + 33))
|
22
18
|
#define EBB_MAX_CLIENTS 200
|
23
19
|
#define EBB_TIMEOUT 30.0
|
@@ -29,12 +25,13 @@ typedef struct ebb_client ebb_client;
|
|
29
25
|
|
30
26
|
/*** Ebb Client ***/
|
31
27
|
void ebb_client_close(ebb_client*);
|
28
|
+
/* user MUST call this function on each client passed by the request_cb */
|
29
|
+
void ebb_client_release(ebb_client*);
|
32
30
|
int ebb_client_read(ebb_client *client, char *buffer, int length);
|
33
31
|
void ebb_client_write_status(ebb_client*, int status, const char *human_status);
|
34
32
|
void ebb_client_write_header(ebb_client*, const char *field, const char *value);
|
35
33
|
void ebb_client_write(ebb_client*, const char *data, int length);
|
36
|
-
void
|
37
|
-
|
34
|
+
void ebb_client_begin_transmission( ebb_client *client);
|
38
35
|
|
39
36
|
struct ebb_env_item {
|
40
37
|
enum { EBB_FIELD_VALUE_PAIR
|
@@ -44,7 +41,6 @@ struct ebb_env_item {
|
|
44
41
|
, EBB_REQUEST_PATH
|
45
42
|
, EBB_QUERY_STRING
|
46
43
|
, EBB_HTTP_VERSION
|
47
|
-
, EBB_SERVER_NAME
|
48
44
|
, EBB_SERVER_PORT
|
49
45
|
, EBB_CONTENT_LENGTH
|
50
46
|
} type;
|
@@ -57,10 +53,12 @@ struct ebb_env_item {
|
|
57
53
|
struct ebb_client {
|
58
54
|
EBB_TCP_COMMON
|
59
55
|
|
56
|
+
unsigned int in_use : 1;
|
57
|
+
|
60
58
|
ebb_server *server;
|
61
59
|
http_parser parser;
|
62
60
|
|
63
|
-
char request_buffer
|
61
|
+
char *request_buffer;
|
64
62
|
ev_io read_watcher;
|
65
63
|
size_t read, nread_from_body;
|
66
64
|
|
@@ -75,9 +73,10 @@ struct ebb_client {
|
|
75
73
|
|
76
74
|
ev_timer timeout_watcher;
|
77
75
|
|
78
|
-
int
|
79
|
-
int
|
80
|
-
int
|
76
|
+
unsigned int status_written : 1;
|
77
|
+
unsigned int headers_written : 1;
|
78
|
+
unsigned int body_written : 1;
|
79
|
+
unsigned int began_transmission : 1;
|
81
80
|
|
82
81
|
/* the ENV structure */
|
83
82
|
int env_size;
|
@@ -110,4 +109,4 @@ struct ebb_server {
|
|
110
109
|
ebb_request_cb request_cb;
|
111
110
|
};
|
112
111
|
|
113
|
-
#endif
|
112
|
+
#endif
|
data/src/ebb_ruby.c
CHANGED
@@ -3,12 +3,13 @@
|
|
3
3
|
* License. See README file for details.
|
4
4
|
*/
|
5
5
|
#include <ruby.h>
|
6
|
+
#include <rubyio.h>
|
7
|
+
#include <rubysig.h>
|
6
8
|
#include <assert.h>
|
7
9
|
#include <fcntl.h>
|
8
10
|
#include <ebb.h>
|
9
11
|
#include <ev.h>
|
10
12
|
|
11
|
-
static VALUE cServer;
|
12
13
|
static VALUE cClient;
|
13
14
|
static VALUE global_http_prefix;
|
14
15
|
static VALUE global_request_method;
|
@@ -18,99 +19,102 @@ static VALUE global_request_path;
|
|
18
19
|
static VALUE global_query_string;
|
19
20
|
static VALUE global_http_version;
|
20
21
|
static VALUE global_request_body;
|
21
|
-
static VALUE global_server_name;
|
22
22
|
static VALUE global_server_port;
|
23
23
|
static VALUE global_path_info;
|
24
24
|
static VALUE global_content_length;
|
25
25
|
static VALUE global_http_host;
|
26
26
|
|
27
|
+
/* You don't want to run more than one server per Ruby VM. Really
|
28
|
+
* I'm making this explicit by not defining a Ebb::Server class but instead
|
29
|
+
* initializing a single server and single event loop on module load.
|
30
|
+
*/
|
31
|
+
static ebb_server *server;
|
32
|
+
struct ev_loop *loop;
|
33
|
+
struct ev_idle idle_watcher;
|
34
|
+
|
27
35
|
/* Variables with a leading underscore are C-level variables */
|
28
36
|
|
29
37
|
#define ASCII_UPPER(ch) ('a' <= ch && ch <= 'z' ? ch - 'a' + 'A' : ch)
|
38
|
+
#ifndef RSTRING_PTR
|
39
|
+
# define RSTRING_PTR(s) (RSTRING(s)->ptr)
|
40
|
+
# define RSTRING_LEN(s) (RSTRING(s)->len)
|
41
|
+
#endif
|
30
42
|
|
31
|
-
|
43
|
+
static void attach_idle_watcher()
|
32
44
|
{
|
33
|
-
|
34
|
-
|
45
|
+
if(!ev_is_active(&idle_watcher)) {
|
46
|
+
ev_idle_start (loop, &idle_watcher);
|
47
|
+
}
|
35
48
|
}
|
36
49
|
|
37
50
|
|
38
|
-
void
|
51
|
+
static void detach_idle_watcher()
|
39
52
|
{
|
40
|
-
|
41
|
-
VALUE waiting_clients;
|
42
|
-
VALUE client = client_new(_client);
|
43
|
-
|
44
|
-
waiting_clients = rb_iv_get(server, "@waiting_clients");
|
45
|
-
rb_ary_push(waiting_clients, client);
|
53
|
+
ev_idle_stop(loop, &idle_watcher);
|
46
54
|
}
|
47
55
|
|
48
|
-
|
49
|
-
VALUE server_alloc(VALUE self)
|
56
|
+
static int clients_in_use_p()
|
50
57
|
{
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
ebb_server_init(_server, loop, request_cb, (void*)server);
|
56
|
-
return server;
|
58
|
+
int i;
|
59
|
+
for(i = 0; i < EBB_MAX_CLIENTS; i++)
|
60
|
+
if(server->clients[i].in_use) return TRUE;
|
61
|
+
return FALSE;
|
57
62
|
}
|
58
63
|
|
59
|
-
|
60
|
-
VALUE server_listen_on_port(VALUE x, VALUE server, VALUE port)
|
64
|
+
void request_cb(ebb_client *client, void *data)
|
61
65
|
{
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
+
VALUE waiting_clients = (VALUE)data;
|
67
|
+
VALUE rb_client = Data_Wrap_Struct(cClient, 0, 0, client);
|
68
|
+
rb_ary_push(waiting_clients, rb_client);
|
69
|
+
attach_idle_watcher();
|
66
70
|
}
|
67
71
|
|
68
|
-
|
69
|
-
VALUE server_listen_on_socket(VALUE x, VALUE server, VALUE socketpath)
|
72
|
+
VALUE server_listen_on_port(VALUE _, VALUE port)
|
70
73
|
{
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
return r < 0 ? Qfalse : Qtrue;
|
74
|
+
if(ebb_server_listen_on_port(server, FIX2INT(port)) < 0)
|
75
|
+
rb_sys_fail("Problem listening on port");
|
76
|
+
return Qnil;
|
75
77
|
}
|
76
78
|
|
77
|
-
|
78
79
|
static void
|
79
|
-
|
80
|
-
|
80
|
+
idle_cb (struct ev_loop *loop, struct ev_idle *w, int revents) {
|
81
|
+
if(clients_in_use_p()) {
|
82
|
+
rb_thread_schedule();
|
83
|
+
} else if(!rb_thread_alone()) {
|
84
|
+
/* if you have another long running thread running besides the ones used
|
85
|
+
* for the webapp's requests you will run into performance problems in
|
86
|
+
* ruby 1.8.x because rb_thread_select is slow.
|
87
|
+
* (Don't worry - you're probably not doing this.)
|
88
|
+
*/
|
89
|
+
struct timeval select_timeout = { tv_sec: 0, tv_usec: 50000 };
|
90
|
+
fd_set server_fd_set;
|
91
|
+
FD_ZERO(&server_fd_set);
|
92
|
+
FD_SET(server->fd, &server_fd_set);
|
93
|
+
rb_thread_select(server->fd+1, &server_fd_set, 0, 0, &select_timeout);
|
94
|
+
} else {
|
95
|
+
detach_idle_watcher();
|
96
|
+
}
|
97
|
+
}
|
81
98
|
|
82
|
-
VALUE server_process_connections(VALUE
|
99
|
+
VALUE server_process_connections(VALUE _)
|
83
100
|
{
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
ev_timer timeout;
|
90
|
-
ev_timer_init (&timeout, oneshot_timeout, 0.5, 0.);
|
91
|
-
ev_timer_start (_server->loop, &timeout);
|
92
|
-
|
93
|
-
ev_loop(_server->loop, EVLOOP_ONESHOT);
|
94
|
-
/* XXX: Need way to know when the loop is finished...
|
95
|
-
* should return true or false */
|
96
|
-
|
97
|
-
ev_timer_stop(_server->loop, &timeout);
|
98
|
-
|
99
|
-
if(_server->open)
|
100
|
-
return Qtrue;
|
101
|
-
else
|
102
|
-
return Qfalse;
|
101
|
+
TRAP_BEG;
|
102
|
+
ev_loop(loop, EVLOOP_ONESHOT);
|
103
|
+
TRAP_END;
|
104
|
+
return Qnil;
|
103
105
|
}
|
104
106
|
|
105
107
|
|
106
|
-
VALUE server_unlisten(VALUE
|
108
|
+
VALUE server_unlisten(VALUE _)
|
107
109
|
{
|
108
|
-
|
109
|
-
Data_Get_Struct(server, ebb_server, _server);
|
110
|
-
ebb_server_unlisten(_server);
|
110
|
+
ebb_server_unlisten(server);
|
111
111
|
return Qnil;
|
112
112
|
}
|
113
113
|
|
114
|
+
VALUE server_open(VALUE _)
|
115
|
+
{
|
116
|
+
return server->open ? Qtrue : Qfalse;
|
117
|
+
}
|
114
118
|
|
115
119
|
VALUE env_field(struct ebb_env_item *item)
|
116
120
|
{
|
@@ -134,7 +138,6 @@ VALUE env_field(struct ebb_env_item *item)
|
|
134
138
|
case EBB_REQUEST_PATH: return global_request_path;
|
135
139
|
case EBB_QUERY_STRING: return global_query_string;
|
136
140
|
case EBB_HTTP_VERSION: return global_http_version;
|
137
|
-
case EBB_SERVER_NAME: return global_server_name;
|
138
141
|
case EBB_SERVER_PORT: return global_server_port;
|
139
142
|
case EBB_CONTENT_LENGTH: return global_content_length;
|
140
143
|
}
|
@@ -152,24 +155,26 @@ VALUE env_value(struct ebb_env_item *item)
|
|
152
155
|
}
|
153
156
|
|
154
157
|
|
155
|
-
VALUE client_env(VALUE
|
158
|
+
VALUE client_env(VALUE _, VALUE rb_client)
|
156
159
|
{
|
157
|
-
ebb_client *
|
158
|
-
VALUE hash = rb_hash_new();
|
159
|
-
int i;
|
160
|
-
Data_Get_Struct(client, ebb_client, _client);
|
160
|
+
ebb_client *client;
|
161
|
+
VALUE field, value, hash = rb_hash_new();
|
162
|
+
int i;
|
161
163
|
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
164
|
+
Data_Get_Struct(rb_client, ebb_client, client);
|
165
|
+
for(i=0; i < client->env_size; i++) {
|
166
|
+
field = env_field(&client->env[i]);
|
167
|
+
value = env_value(&client->env[i]);
|
168
|
+
rb_hash_aset(hash, field, value);
|
169
|
+
//printf("(%s, %s)\n", StringValuePtr(field), StringValuePtr(value));
|
166
170
|
}
|
171
|
+
//printf("\n\n");
|
167
172
|
rb_hash_aset(hash, global_path_info, rb_hash_aref(hash, global_request_path));
|
168
173
|
return hash;
|
169
174
|
}
|
170
175
|
|
171
176
|
|
172
|
-
VALUE client_read_input(VALUE
|
177
|
+
VALUE client_read_input(VALUE _, VALUE client, VALUE size)
|
173
178
|
{
|
174
179
|
ebb_client *_client;
|
175
180
|
GString *_string;
|
@@ -192,7 +197,7 @@ VALUE client_read_input(VALUE x, VALUE client, VALUE size)
|
|
192
197
|
return string;
|
193
198
|
}
|
194
199
|
|
195
|
-
VALUE client_write_status(VALUE
|
200
|
+
VALUE client_write_status(VALUE _, VALUE client, VALUE status, VALUE human_status)
|
196
201
|
{
|
197
202
|
ebb_client *_client;
|
198
203
|
Data_Get_Struct(client, ebb_client, _client);
|
@@ -200,7 +205,7 @@ VALUE client_write_status(VALUE x, VALUE client, VALUE status, VALUE human_statu
|
|
200
205
|
return Qnil;
|
201
206
|
}
|
202
207
|
|
203
|
-
VALUE client_write_header(VALUE
|
208
|
+
VALUE client_write_header(VALUE _, VALUE client, VALUE field, VALUE value)
|
204
209
|
{
|
205
210
|
ebb_client *_client;
|
206
211
|
Data_Get_Struct(client, ebb_client, _client);
|
@@ -208,7 +213,7 @@ VALUE client_write_header(VALUE x, VALUE client, VALUE field, VALUE value)
|
|
208
213
|
return Qnil;
|
209
214
|
}
|
210
215
|
|
211
|
-
VALUE client_write(VALUE
|
216
|
+
VALUE client_write(VALUE _, VALUE client, VALUE string)
|
212
217
|
{
|
213
218
|
ebb_client *_client;
|
214
219
|
Data_Get_Struct(client, ebb_client, _client);
|
@@ -217,20 +222,40 @@ VALUE client_write(VALUE x, VALUE client, VALUE string)
|
|
217
222
|
}
|
218
223
|
|
219
224
|
|
220
|
-
VALUE
|
225
|
+
VALUE client_begin_transmission(VALUE _, VALUE rb_client)
|
221
226
|
{
|
222
|
-
ebb_client *
|
223
|
-
Data_Get_Struct(
|
224
|
-
|
227
|
+
ebb_client *client;
|
228
|
+
Data_Get_Struct(rb_client, ebb_client, client);
|
229
|
+
client->status_written = TRUE;
|
230
|
+
client->headers_written = TRUE;
|
231
|
+
ebb_client_begin_transmission(client);
|
225
232
|
return Qnil;
|
226
233
|
}
|
227
234
|
|
235
|
+
VALUE client_release(VALUE _, VALUE rb_client)
|
236
|
+
{
|
237
|
+
ebb_client *client;
|
238
|
+
Data_Get_Struct(rb_client, ebb_client, client);
|
239
|
+
ebb_client_release(client);
|
240
|
+
return Qnil;
|
241
|
+
}
|
242
|
+
|
243
|
+
|
244
|
+
VALUE client_set_body_written(VALUE _, VALUE rb_client, VALUE v)
|
245
|
+
{
|
246
|
+
ebb_client *client;
|
247
|
+
Data_Get_Struct(rb_client, ebb_client, client);
|
248
|
+
client->body_written = RTEST(v);
|
249
|
+
return client->body_written ? Qtrue : Qfalse;
|
250
|
+
}
|
228
251
|
|
229
252
|
void Init_ebb_ext()
|
230
253
|
{
|
231
254
|
VALUE mEbb = rb_define_module("Ebb");
|
232
255
|
VALUE mFFI = rb_define_module_under(mEbb, "FFI");
|
233
256
|
|
257
|
+
rb_define_const(mEbb, "VERSION", rb_str_new2(EBB_VERSION));
|
258
|
+
|
234
259
|
/** Defines global strings in the init method. */
|
235
260
|
#define DEF_GLOBAL(N, val) global_##N = rb_obj_freeze(rb_str_new2(val)); rb_global_variable(&global_##N)
|
236
261
|
DEF_GLOBAL(http_prefix, "HTTP_");
|
@@ -241,24 +266,34 @@ void Init_ebb_ext()
|
|
241
266
|
DEF_GLOBAL(query_string, "QUERY_STRING");
|
242
267
|
DEF_GLOBAL(http_version, "HTTP_VERSION");
|
243
268
|
DEF_GLOBAL(request_body, "REQUEST_BODY");
|
244
|
-
DEF_GLOBAL(server_name, "SERVER_NAME");
|
245
269
|
DEF_GLOBAL(server_port, "SERVER_PORT");
|
246
270
|
DEF_GLOBAL(path_info, "PATH_INFO");
|
247
271
|
DEF_GLOBAL(content_length, "CONTENT_LENGTH");
|
248
272
|
DEF_GLOBAL(http_host, "HTTP_HOST");
|
249
273
|
|
250
|
-
|
251
|
-
|
252
|
-
rb_define_singleton_method(mFFI, "
|
253
|
-
rb_define_singleton_method(mFFI, "
|
254
|
-
rb_define_singleton_method(mFFI, "server_listen_on_socket", server_listen_on_socket, 2);
|
255
|
-
rb_define_singleton_method(mFFI, "server_unlisten", server_unlisten, 1);
|
274
|
+
rb_define_singleton_method(mFFI, "server_process_connections", server_process_connections, 0);
|
275
|
+
rb_define_singleton_method(mFFI, "server_listen_on_port", server_listen_on_port, 1);
|
276
|
+
rb_define_singleton_method(mFFI, "server_unlisten", server_unlisten, 0);
|
277
|
+
rb_define_singleton_method(mFFI, "server_open?", server_open, 0);
|
256
278
|
|
257
279
|
cClient = rb_define_class_under(mEbb, "Client", rb_cObject);
|
258
280
|
rb_define_singleton_method(mFFI, "client_read_input", client_read_input, 2);
|
259
281
|
rb_define_singleton_method(mFFI, "client_write_status", client_write_status, 3);
|
260
282
|
rb_define_singleton_method(mFFI, "client_write_header", client_write_header, 3);
|
261
283
|
rb_define_singleton_method(mFFI, "client_write", client_write, 2);
|
262
|
-
rb_define_singleton_method(mFFI, "
|
284
|
+
rb_define_singleton_method(mFFI, "client_begin_transmission", client_begin_transmission, 1);
|
285
|
+
rb_define_singleton_method(mFFI, "client_set_body_written", client_set_body_written, 2);
|
263
286
|
rb_define_singleton_method(mFFI, "client_env", client_env, 1);
|
287
|
+
rb_define_singleton_method(mFFI, "client_release", client_release, 1);
|
288
|
+
|
289
|
+
/* initialize ebb_server */
|
290
|
+
loop = ev_default_loop (0);
|
291
|
+
|
292
|
+
ev_idle_init (&idle_watcher, idle_cb);
|
293
|
+
attach_idle_watcher();
|
294
|
+
|
295
|
+
server = ebb_server_alloc();
|
296
|
+
VALUE waiting_clients = rb_ary_new();
|
297
|
+
rb_iv_set(mFFI, "@waiting_clients", waiting_clients);
|
298
|
+
ebb_server_init(server, loop, request_cb, (void*)waiting_clients);
|
264
299
|
}
|
data/src/parser.c
CHANGED
@@ -24,7 +24,7 @@
|
|
24
24
|
|
25
25
|
#line 26 "src/parser.c"
|
26
26
|
static const int http_parser_start = 1;
|
27
|
-
static const int http_parser_first_final =
|
27
|
+
static const int http_parser_first_final = 73;
|
28
28
|
static const int http_parser_error = 0;
|
29
29
|
|
30
30
|
static const int http_parser_en_main = 1;
|
@@ -108,17 +108,17 @@ case 2:
|
|
108
108
|
#line 109 "src/parser.c"
|
109
109
|
switch( (*p) ) {
|
110
110
|
case 32: goto tr2;
|
111
|
-
case 36: goto
|
112
|
-
case 95: goto
|
111
|
+
case 36: goto st54;
|
112
|
+
case 95: goto st54;
|
113
113
|
}
|
114
114
|
if ( (*p) < 48 ) {
|
115
115
|
if ( 45 <= (*p) && (*p) <= 46 )
|
116
|
-
goto
|
116
|
+
goto st54;
|
117
117
|
} else if ( (*p) > 57 ) {
|
118
118
|
if ( 65 <= (*p) && (*p) <= 90 )
|
119
|
-
goto
|
119
|
+
goto st54;
|
120
120
|
} else
|
121
|
-
goto
|
121
|
+
goto st54;
|
122
122
|
goto st0;
|
123
123
|
tr2:
|
124
124
|
#line 50 "src/parser.rl"
|
@@ -172,7 +172,7 @@ tr8:
|
|
172
172
|
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
173
173
|
}
|
174
174
|
goto st5;
|
175
|
-
|
175
|
+
tr50:
|
176
176
|
#line 22 "src/parser.rl"
|
177
177
|
{MARK(mark, p); }
|
178
178
|
#line 88 "src/parser.rl"
|
@@ -186,7 +186,7 @@ tr58:
|
|
186
186
|
parser->fragment(parser->data, PTR_TO(mark), LEN(mark, p));
|
187
187
|
}
|
188
188
|
goto st5;
|
189
|
-
|
189
|
+
tr53:
|
190
190
|
#line 88 "src/parser.rl"
|
191
191
|
{
|
192
192
|
/* Don't know if this length is specified somewhere or not */
|
@@ -198,7 +198,7 @@ tr61:
|
|
198
198
|
parser->fragment(parser->data, PTR_TO(mark), LEN(mark, p));
|
199
199
|
}
|
200
200
|
goto st5;
|
201
|
-
|
201
|
+
tr61:
|
202
202
|
#line 79 "src/parser.rl"
|
203
203
|
{
|
204
204
|
if(LEN(mark, p) > 1024) {
|
@@ -218,7 +218,7 @@ tr69:
|
|
218
218
|
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
219
219
|
}
|
220
220
|
goto st5;
|
221
|
-
|
221
|
+
tr72:
|
222
222
|
#line 64 "src/parser.rl"
|
223
223
|
{MARK(query_start, p); }
|
224
224
|
#line 65 "src/parser.rl"
|
@@ -240,7 +240,7 @@ tr80:
|
|
240
240
|
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
241
241
|
}
|
242
242
|
goto st5;
|
243
|
-
|
243
|
+
tr76:
|
244
244
|
#line 65 "src/parser.rl"
|
245
245
|
{
|
246
246
|
if(LEN(query_start, p) > 10 * 1024) {
|
@@ -434,18 +434,18 @@ tr23:
|
|
434
434
|
{
|
435
435
|
if(parser->nread > 1024 * (80 + 32)) {
|
436
436
|
parser->overflow_error = TRUE;
|
437
|
-
{p++; cs =
|
437
|
+
{p++; cs = 73; goto _out;}
|
438
438
|
}
|
439
439
|
parser->body_start = p - buffer + 1;
|
440
440
|
if(parser->header_done != NULL)
|
441
441
|
parser->header_done(parser->data, p + 1, pe - p - 1);
|
442
|
-
{p++; cs =
|
442
|
+
{p++; cs = 73; goto _out;}
|
443
443
|
}
|
444
|
-
goto
|
445
|
-
|
444
|
+
goto st73;
|
445
|
+
st73:
|
446
446
|
if ( ++p == pe )
|
447
|
-
goto
|
448
|
-
case
|
447
|
+
goto _test_eof73;
|
448
|
+
case 73:
|
449
449
|
#line 450 "src/parser.c"
|
450
450
|
goto st0;
|
451
451
|
tr21:
|
@@ -977,104 +977,25 @@ case 35:
|
|
977
977
|
if ( (*p) == 13 )
|
978
978
|
goto tr47;
|
979
979
|
if ( 48 <= (*p) && (*p) <= 57 )
|
980
|
-
goto
|
981
|
-
goto st19;
|
982
|
-
st36:
|
983
|
-
if ( ++p == pe )
|
984
|
-
goto _test_eof36;
|
985
|
-
case 36:
|
986
|
-
if ( (*p) == 13 )
|
987
|
-
goto tr47;
|
988
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
989
|
-
goto st37;
|
990
|
-
goto st19;
|
991
|
-
st37:
|
992
|
-
if ( ++p == pe )
|
993
|
-
goto _test_eof37;
|
994
|
-
case 37:
|
995
|
-
if ( (*p) == 13 )
|
996
|
-
goto tr47;
|
997
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
998
|
-
goto st38;
|
999
|
-
goto st19;
|
1000
|
-
st38:
|
1001
|
-
if ( ++p == pe )
|
1002
|
-
goto _test_eof38;
|
1003
|
-
case 38:
|
1004
|
-
if ( (*p) == 13 )
|
1005
|
-
goto tr47;
|
1006
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
1007
|
-
goto st39;
|
1008
|
-
goto st19;
|
1009
|
-
st39:
|
1010
|
-
if ( ++p == pe )
|
1011
|
-
goto _test_eof39;
|
1012
|
-
case 39:
|
1013
|
-
if ( (*p) == 13 )
|
1014
|
-
goto tr47;
|
1015
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
1016
|
-
goto st40;
|
1017
|
-
goto st19;
|
1018
|
-
st40:
|
1019
|
-
if ( ++p == pe )
|
1020
|
-
goto _test_eof40;
|
1021
|
-
case 40:
|
1022
|
-
if ( (*p) == 13 )
|
1023
|
-
goto tr47;
|
1024
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
1025
|
-
goto st41;
|
1026
|
-
goto st19;
|
1027
|
-
st41:
|
1028
|
-
if ( ++p == pe )
|
1029
|
-
goto _test_eof41;
|
1030
|
-
case 41:
|
1031
|
-
if ( (*p) == 13 )
|
1032
|
-
goto tr47;
|
1033
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
1034
|
-
goto st42;
|
1035
|
-
goto st19;
|
1036
|
-
st42:
|
1037
|
-
if ( ++p == pe )
|
1038
|
-
goto _test_eof42;
|
1039
|
-
case 42:
|
1040
|
-
if ( (*p) == 13 )
|
1041
|
-
goto tr47;
|
1042
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
1043
|
-
goto st43;
|
1044
|
-
goto st19;
|
1045
|
-
st43:
|
1046
|
-
if ( ++p == pe )
|
1047
|
-
goto _test_eof43;
|
1048
|
-
case 43:
|
1049
|
-
if ( (*p) == 13 )
|
1050
|
-
goto tr47;
|
1051
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
1052
|
-
goto st44;
|
1053
|
-
goto st19;
|
1054
|
-
st44:
|
1055
|
-
if ( ++p == pe )
|
1056
|
-
goto _test_eof44;
|
1057
|
-
case 44:
|
1058
|
-
if ( (*p) == 13 )
|
1059
|
-
goto tr47;
|
980
|
+
goto st35;
|
1060
981
|
goto st19;
|
1061
982
|
tr9:
|
1062
983
|
#line 55 "src/parser.rl"
|
1063
984
|
{
|
1064
985
|
if(LEN(mark, p) > 12 * 1024) {
|
1065
986
|
parser->overflow_error = TRUE;
|
1066
|
-
{p++; cs =
|
987
|
+
{p++; cs = 36; goto _out;}
|
1067
988
|
}
|
1068
989
|
if(parser->request_uri != NULL)
|
1069
990
|
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
1070
991
|
}
|
1071
|
-
goto
|
1072
|
-
|
992
|
+
goto st36;
|
993
|
+
tr62:
|
1073
994
|
#line 79 "src/parser.rl"
|
1074
995
|
{
|
1075
996
|
if(LEN(mark, p) > 1024) {
|
1076
997
|
parser->overflow_error = TRUE;
|
1077
|
-
{p++; cs =
|
998
|
+
{p++; cs = 36; goto _out;}
|
1078
999
|
}
|
1079
1000
|
if(parser->request_path != NULL)
|
1080
1001
|
parser->request_path(parser->data, PTR_TO(mark), LEN(mark,p));
|
@@ -1083,20 +1004,20 @@ tr70:
|
|
1083
1004
|
{
|
1084
1005
|
if(LEN(mark, p) > 12 * 1024) {
|
1085
1006
|
parser->overflow_error = TRUE;
|
1086
|
-
{p++; cs =
|
1007
|
+
{p++; cs = 36; goto _out;}
|
1087
1008
|
}
|
1088
1009
|
if(parser->request_uri != NULL)
|
1089
1010
|
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
1090
1011
|
}
|
1091
|
-
goto
|
1092
|
-
|
1012
|
+
goto st36;
|
1013
|
+
tr73:
|
1093
1014
|
#line 64 "src/parser.rl"
|
1094
1015
|
{MARK(query_start, p); }
|
1095
1016
|
#line 65 "src/parser.rl"
|
1096
1017
|
{
|
1097
1018
|
if(LEN(query_start, p) > 10 * 1024) {
|
1098
1019
|
parser->overflow_error = TRUE;
|
1099
|
-
{p++; cs =
|
1020
|
+
{p++; cs = 36; goto _out;}
|
1100
1021
|
}
|
1101
1022
|
if(parser->query_string != NULL)
|
1102
1023
|
parser->query_string(parser->data, PTR_TO(query_start), LEN(query_start, p));
|
@@ -1105,18 +1026,18 @@ tr81:
|
|
1105
1026
|
{
|
1106
1027
|
if(LEN(mark, p) > 12 * 1024) {
|
1107
1028
|
parser->overflow_error = TRUE;
|
1108
|
-
{p++; cs =
|
1029
|
+
{p++; cs = 36; goto _out;}
|
1109
1030
|
}
|
1110
1031
|
if(parser->request_uri != NULL)
|
1111
1032
|
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
1112
1033
|
}
|
1113
|
-
goto
|
1114
|
-
|
1034
|
+
goto st36;
|
1035
|
+
tr77:
|
1115
1036
|
#line 65 "src/parser.rl"
|
1116
1037
|
{
|
1117
1038
|
if(LEN(query_start, p) > 10 * 1024) {
|
1118
1039
|
parser->overflow_error = TRUE;
|
1119
|
-
{p++; cs =
|
1040
|
+
{p++; cs = 36; goto _out;}
|
1120
1041
|
}
|
1121
1042
|
if(parser->query_string != NULL)
|
1122
1043
|
parser->query_string(parser->data, PTR_TO(query_start), LEN(query_start, p));
|
@@ -1125,20 +1046,20 @@ tr85:
|
|
1125
1046
|
{
|
1126
1047
|
if(LEN(mark, p) > 12 * 1024) {
|
1127
1048
|
parser->overflow_error = TRUE;
|
1128
|
-
{p++; cs =
|
1049
|
+
{p++; cs = 36; goto _out;}
|
1129
1050
|
}
|
1130
1051
|
if(parser->request_uri != NULL)
|
1131
1052
|
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
1132
1053
|
}
|
1133
|
-
goto
|
1134
|
-
|
1054
|
+
goto st36;
|
1055
|
+
st36:
|
1135
1056
|
if ( ++p == pe )
|
1136
|
-
goto
|
1137
|
-
case
|
1138
|
-
#line
|
1057
|
+
goto _test_eof36;
|
1058
|
+
case 36:
|
1059
|
+
#line 1060 "src/parser.c"
|
1139
1060
|
switch( (*p) ) {
|
1140
|
-
case 32: goto
|
1141
|
-
case 37: goto
|
1061
|
+
case 32: goto tr50;
|
1062
|
+
case 37: goto tr51;
|
1142
1063
|
case 60: goto st0;
|
1143
1064
|
case 62: goto st0;
|
1144
1065
|
case 127: goto st0;
|
@@ -1148,19 +1069,19 @@ case 45:
|
|
1148
1069
|
goto st0;
|
1149
1070
|
} else if ( (*p) >= 0 )
|
1150
1071
|
goto st0;
|
1151
|
-
goto
|
1152
|
-
|
1072
|
+
goto tr49;
|
1073
|
+
tr49:
|
1153
1074
|
#line 22 "src/parser.rl"
|
1154
1075
|
{MARK(mark, p); }
|
1155
|
-
goto
|
1156
|
-
|
1076
|
+
goto st37;
|
1077
|
+
st37:
|
1157
1078
|
if ( ++p == pe )
|
1158
|
-
goto
|
1159
|
-
case
|
1160
|
-
#line
|
1079
|
+
goto _test_eof37;
|
1080
|
+
case 37:
|
1081
|
+
#line 1082 "src/parser.c"
|
1161
1082
|
switch( (*p) ) {
|
1162
|
-
case 32: goto
|
1163
|
-
case 37: goto
|
1083
|
+
case 32: goto tr53;
|
1084
|
+
case 37: goto st38;
|
1164
1085
|
case 60: goto st0;
|
1165
1086
|
case 62: goto st0;
|
1166
1087
|
case 127: goto st0;
|
@@ -1170,622 +1091,622 @@ case 46:
|
|
1170
1091
|
goto st0;
|
1171
1092
|
} else if ( (*p) >= 0 )
|
1172
1093
|
goto st0;
|
1173
|
-
goto
|
1174
|
-
|
1094
|
+
goto st37;
|
1095
|
+
tr51:
|
1175
1096
|
#line 22 "src/parser.rl"
|
1176
1097
|
{MARK(mark, p); }
|
1177
|
-
goto
|
1178
|
-
|
1098
|
+
goto st38;
|
1099
|
+
st38:
|
1179
1100
|
if ( ++p == pe )
|
1180
|
-
goto
|
1181
|
-
case
|
1182
|
-
#line
|
1101
|
+
goto _test_eof38;
|
1102
|
+
case 38:
|
1103
|
+
#line 1104 "src/parser.c"
|
1183
1104
|
if ( (*p) < 65 ) {
|
1184
1105
|
if ( 48 <= (*p) && (*p) <= 57 )
|
1185
|
-
goto
|
1106
|
+
goto st39;
|
1186
1107
|
} else if ( (*p) > 70 ) {
|
1187
1108
|
if ( 97 <= (*p) && (*p) <= 102 )
|
1188
|
-
goto
|
1109
|
+
goto st39;
|
1189
1110
|
} else
|
1190
|
-
goto
|
1111
|
+
goto st39;
|
1191
1112
|
goto st0;
|
1192
|
-
|
1113
|
+
st39:
|
1193
1114
|
if ( ++p == pe )
|
1194
|
-
goto
|
1195
|
-
case
|
1115
|
+
goto _test_eof39;
|
1116
|
+
case 39:
|
1196
1117
|
if ( (*p) < 65 ) {
|
1197
1118
|
if ( 48 <= (*p) && (*p) <= 57 )
|
1198
|
-
goto
|
1119
|
+
goto st37;
|
1199
1120
|
} else if ( (*p) > 70 ) {
|
1200
1121
|
if ( 97 <= (*p) && (*p) <= 102 )
|
1201
|
-
goto
|
1122
|
+
goto st37;
|
1202
1123
|
} else
|
1203
|
-
goto
|
1124
|
+
goto st37;
|
1204
1125
|
goto st0;
|
1205
1126
|
tr5:
|
1206
1127
|
#line 22 "src/parser.rl"
|
1207
1128
|
{MARK(mark, p); }
|
1208
|
-
goto
|
1209
|
-
|
1129
|
+
goto st40;
|
1130
|
+
st40:
|
1210
1131
|
if ( ++p == pe )
|
1211
|
-
goto
|
1212
|
-
case
|
1213
|
-
#line
|
1132
|
+
goto _test_eof40;
|
1133
|
+
case 40:
|
1134
|
+
#line 1135 "src/parser.c"
|
1214
1135
|
switch( (*p) ) {
|
1215
|
-
case 43: goto
|
1216
|
-
case 58: goto
|
1136
|
+
case 43: goto st40;
|
1137
|
+
case 58: goto st41;
|
1217
1138
|
}
|
1218
1139
|
if ( (*p) < 48 ) {
|
1219
1140
|
if ( 45 <= (*p) && (*p) <= 46 )
|
1220
|
-
goto
|
1141
|
+
goto st40;
|
1221
1142
|
} else if ( (*p) > 57 ) {
|
1222
1143
|
if ( (*p) > 90 ) {
|
1223
1144
|
if ( 97 <= (*p) && (*p) <= 122 )
|
1224
|
-
goto
|
1145
|
+
goto st40;
|
1225
1146
|
} else if ( (*p) >= 65 )
|
1226
|
-
goto
|
1147
|
+
goto st40;
|
1227
1148
|
} else
|
1228
|
-
goto
|
1149
|
+
goto st40;
|
1229
1150
|
goto st0;
|
1230
1151
|
tr7:
|
1231
1152
|
#line 22 "src/parser.rl"
|
1232
1153
|
{MARK(mark, p); }
|
1233
|
-
goto
|
1234
|
-
|
1154
|
+
goto st41;
|
1155
|
+
st41:
|
1235
1156
|
if ( ++p == pe )
|
1236
|
-
goto
|
1237
|
-
case
|
1238
|
-
#line
|
1157
|
+
goto _test_eof41;
|
1158
|
+
case 41:
|
1159
|
+
#line 1160 "src/parser.c"
|
1239
1160
|
switch( (*p) ) {
|
1240
1161
|
case 32: goto tr8;
|
1241
1162
|
case 34: goto st0;
|
1242
1163
|
case 35: goto tr9;
|
1243
|
-
case 37: goto
|
1164
|
+
case 37: goto st42;
|
1244
1165
|
case 60: goto st0;
|
1245
1166
|
case 62: goto st0;
|
1246
1167
|
case 127: goto st0;
|
1247
1168
|
}
|
1248
1169
|
if ( 0 <= (*p) && (*p) <= 31 )
|
1249
1170
|
goto st0;
|
1250
|
-
goto
|
1251
|
-
|
1171
|
+
goto st41;
|
1172
|
+
st42:
|
1252
1173
|
if ( ++p == pe )
|
1253
|
-
goto
|
1254
|
-
case
|
1174
|
+
goto _test_eof42;
|
1175
|
+
case 42:
|
1255
1176
|
if ( (*p) < 65 ) {
|
1256
1177
|
if ( 48 <= (*p) && (*p) <= 57 )
|
1257
|
-
goto
|
1178
|
+
goto st43;
|
1258
1179
|
} else if ( (*p) > 70 ) {
|
1259
1180
|
if ( 97 <= (*p) && (*p) <= 102 )
|
1260
|
-
goto
|
1181
|
+
goto st43;
|
1261
1182
|
} else
|
1262
|
-
goto
|
1183
|
+
goto st43;
|
1263
1184
|
goto st0;
|
1264
|
-
|
1185
|
+
st43:
|
1265
1186
|
if ( ++p == pe )
|
1266
|
-
goto
|
1267
|
-
case
|
1187
|
+
goto _test_eof43;
|
1188
|
+
case 43:
|
1268
1189
|
if ( (*p) < 65 ) {
|
1269
1190
|
if ( 48 <= (*p) && (*p) <= 57 )
|
1270
|
-
goto
|
1191
|
+
goto st41;
|
1271
1192
|
} else if ( (*p) > 70 ) {
|
1272
1193
|
if ( 97 <= (*p) && (*p) <= 102 )
|
1273
|
-
goto
|
1194
|
+
goto st41;
|
1274
1195
|
} else
|
1275
|
-
goto
|
1196
|
+
goto st41;
|
1276
1197
|
goto st0;
|
1277
1198
|
tr6:
|
1278
1199
|
#line 22 "src/parser.rl"
|
1279
1200
|
{MARK(mark, p); }
|
1280
|
-
goto
|
1281
|
-
|
1201
|
+
goto st44;
|
1202
|
+
st44:
|
1282
1203
|
if ( ++p == pe )
|
1283
|
-
goto
|
1284
|
-
case
|
1285
|
-
#line
|
1204
|
+
goto _test_eof44;
|
1205
|
+
case 44:
|
1206
|
+
#line 1207 "src/parser.c"
|
1286
1207
|
switch( (*p) ) {
|
1287
|
-
case 32: goto
|
1208
|
+
case 32: goto tr61;
|
1288
1209
|
case 34: goto st0;
|
1289
|
-
case 35: goto
|
1290
|
-
case 37: goto
|
1291
|
-
case 59: goto
|
1210
|
+
case 35: goto tr62;
|
1211
|
+
case 37: goto st45;
|
1212
|
+
case 59: goto tr64;
|
1292
1213
|
case 60: goto st0;
|
1293
1214
|
case 62: goto st0;
|
1294
|
-
case 63: goto
|
1215
|
+
case 63: goto tr65;
|
1295
1216
|
case 127: goto st0;
|
1296
1217
|
}
|
1297
1218
|
if ( 0 <= (*p) && (*p) <= 31 )
|
1298
1219
|
goto st0;
|
1299
|
-
goto
|
1300
|
-
|
1220
|
+
goto st44;
|
1221
|
+
st45:
|
1301
1222
|
if ( ++p == pe )
|
1302
|
-
goto
|
1303
|
-
case
|
1223
|
+
goto _test_eof45;
|
1224
|
+
case 45:
|
1304
1225
|
if ( (*p) < 65 ) {
|
1305
1226
|
if ( 48 <= (*p) && (*p) <= 57 )
|
1306
|
-
goto
|
1227
|
+
goto st46;
|
1307
1228
|
} else if ( (*p) > 70 ) {
|
1308
1229
|
if ( 97 <= (*p) && (*p) <= 102 )
|
1309
|
-
goto
|
1230
|
+
goto st46;
|
1310
1231
|
} else
|
1311
|
-
goto
|
1232
|
+
goto st46;
|
1312
1233
|
goto st0;
|
1313
|
-
|
1234
|
+
st46:
|
1314
1235
|
if ( ++p == pe )
|
1315
|
-
goto
|
1316
|
-
case
|
1236
|
+
goto _test_eof46;
|
1237
|
+
case 46:
|
1317
1238
|
if ( (*p) < 65 ) {
|
1318
1239
|
if ( 48 <= (*p) && (*p) <= 57 )
|
1319
|
-
goto
|
1240
|
+
goto st44;
|
1320
1241
|
} else if ( (*p) > 70 ) {
|
1321
1242
|
if ( 97 <= (*p) && (*p) <= 102 )
|
1322
|
-
goto
|
1243
|
+
goto st44;
|
1323
1244
|
} else
|
1324
|
-
goto
|
1245
|
+
goto st44;
|
1325
1246
|
goto st0;
|
1326
|
-
|
1247
|
+
tr64:
|
1327
1248
|
#line 79 "src/parser.rl"
|
1328
1249
|
{
|
1329
1250
|
if(LEN(mark, p) > 1024) {
|
1330
1251
|
parser->overflow_error = TRUE;
|
1331
|
-
{p++; cs =
|
1252
|
+
{p++; cs = 47; goto _out;}
|
1332
1253
|
}
|
1333
1254
|
if(parser->request_path != NULL)
|
1334
1255
|
parser->request_path(parser->data, PTR_TO(mark), LEN(mark,p));
|
1335
1256
|
}
|
1336
|
-
goto
|
1337
|
-
|
1257
|
+
goto st47;
|
1258
|
+
st47:
|
1338
1259
|
if ( ++p == pe )
|
1339
|
-
goto
|
1340
|
-
case
|
1341
|
-
#line
|
1260
|
+
goto _test_eof47;
|
1261
|
+
case 47:
|
1262
|
+
#line 1263 "src/parser.c"
|
1342
1263
|
switch( (*p) ) {
|
1343
1264
|
case 32: goto tr8;
|
1344
1265
|
case 34: goto st0;
|
1345
1266
|
case 35: goto tr9;
|
1346
|
-
case 37: goto
|
1267
|
+
case 37: goto st48;
|
1347
1268
|
case 60: goto st0;
|
1348
1269
|
case 62: goto st0;
|
1349
|
-
case 63: goto
|
1270
|
+
case 63: goto st50;
|
1350
1271
|
case 127: goto st0;
|
1351
1272
|
}
|
1352
1273
|
if ( 0 <= (*p) && (*p) <= 31 )
|
1353
1274
|
goto st0;
|
1354
|
-
goto
|
1355
|
-
|
1275
|
+
goto st47;
|
1276
|
+
st48:
|
1356
1277
|
if ( ++p == pe )
|
1357
|
-
goto
|
1358
|
-
case
|
1278
|
+
goto _test_eof48;
|
1279
|
+
case 48:
|
1359
1280
|
if ( (*p) < 65 ) {
|
1360
1281
|
if ( 48 <= (*p) && (*p) <= 57 )
|
1361
|
-
goto
|
1282
|
+
goto st49;
|
1362
1283
|
} else if ( (*p) > 70 ) {
|
1363
1284
|
if ( 97 <= (*p) && (*p) <= 102 )
|
1364
|
-
goto
|
1285
|
+
goto st49;
|
1365
1286
|
} else
|
1366
|
-
goto
|
1287
|
+
goto st49;
|
1367
1288
|
goto st0;
|
1368
|
-
|
1289
|
+
st49:
|
1369
1290
|
if ( ++p == pe )
|
1370
|
-
goto
|
1371
|
-
case
|
1291
|
+
goto _test_eof49;
|
1292
|
+
case 49:
|
1372
1293
|
if ( (*p) < 65 ) {
|
1373
1294
|
if ( 48 <= (*p) && (*p) <= 57 )
|
1374
|
-
goto
|
1295
|
+
goto st47;
|
1375
1296
|
} else if ( (*p) > 70 ) {
|
1376
1297
|
if ( 97 <= (*p) && (*p) <= 102 )
|
1377
|
-
goto
|
1298
|
+
goto st47;
|
1378
1299
|
} else
|
1379
|
-
goto
|
1300
|
+
goto st47;
|
1380
1301
|
goto st0;
|
1381
|
-
|
1302
|
+
tr65:
|
1382
1303
|
#line 79 "src/parser.rl"
|
1383
1304
|
{
|
1384
1305
|
if(LEN(mark, p) > 1024) {
|
1385
1306
|
parser->overflow_error = TRUE;
|
1386
|
-
{p++; cs =
|
1307
|
+
{p++; cs = 50; goto _out;}
|
1387
1308
|
}
|
1388
1309
|
if(parser->request_path != NULL)
|
1389
1310
|
parser->request_path(parser->data, PTR_TO(mark), LEN(mark,p));
|
1390
1311
|
}
|
1391
|
-
goto
|
1392
|
-
|
1312
|
+
goto st50;
|
1313
|
+
st50:
|
1393
1314
|
if ( ++p == pe )
|
1394
|
-
goto
|
1395
|
-
case
|
1396
|
-
#line
|
1315
|
+
goto _test_eof50;
|
1316
|
+
case 50:
|
1317
|
+
#line 1318 "src/parser.c"
|
1397
1318
|
switch( (*p) ) {
|
1398
|
-
case 32: goto
|
1319
|
+
case 32: goto tr72;
|
1399
1320
|
case 34: goto st0;
|
1400
|
-
case 35: goto
|
1401
|
-
case 37: goto
|
1321
|
+
case 35: goto tr73;
|
1322
|
+
case 37: goto tr74;
|
1402
1323
|
case 60: goto st0;
|
1403
1324
|
case 62: goto st0;
|
1404
1325
|
case 127: goto st0;
|
1405
1326
|
}
|
1406
1327
|
if ( 0 <= (*p) && (*p) <= 31 )
|
1407
1328
|
goto st0;
|
1408
|
-
goto
|
1409
|
-
|
1329
|
+
goto tr71;
|
1330
|
+
tr71:
|
1410
1331
|
#line 64 "src/parser.rl"
|
1411
1332
|
{MARK(query_start, p); }
|
1412
|
-
goto
|
1413
|
-
|
1333
|
+
goto st51;
|
1334
|
+
st51:
|
1414
1335
|
if ( ++p == pe )
|
1415
|
-
goto
|
1416
|
-
case
|
1417
|
-
#line
|
1336
|
+
goto _test_eof51;
|
1337
|
+
case 51:
|
1338
|
+
#line 1339 "src/parser.c"
|
1418
1339
|
switch( (*p) ) {
|
1419
|
-
case 32: goto
|
1340
|
+
case 32: goto tr76;
|
1420
1341
|
case 34: goto st0;
|
1421
|
-
case 35: goto
|
1422
|
-
case 37: goto
|
1342
|
+
case 35: goto tr77;
|
1343
|
+
case 37: goto st52;
|
1423
1344
|
case 60: goto st0;
|
1424
1345
|
case 62: goto st0;
|
1425
1346
|
case 127: goto st0;
|
1426
1347
|
}
|
1427
1348
|
if ( 0 <= (*p) && (*p) <= 31 )
|
1428
1349
|
goto st0;
|
1429
|
-
goto
|
1430
|
-
|
1350
|
+
goto st51;
|
1351
|
+
tr74:
|
1431
1352
|
#line 64 "src/parser.rl"
|
1432
1353
|
{MARK(query_start, p); }
|
1433
|
-
goto
|
1434
|
-
|
1354
|
+
goto st52;
|
1355
|
+
st52:
|
1435
1356
|
if ( ++p == pe )
|
1436
|
-
goto
|
1437
|
-
case
|
1438
|
-
#line
|
1357
|
+
goto _test_eof52;
|
1358
|
+
case 52:
|
1359
|
+
#line 1360 "src/parser.c"
|
1439
1360
|
if ( (*p) < 65 ) {
|
1440
1361
|
if ( 48 <= (*p) && (*p) <= 57 )
|
1441
|
-
goto
|
1362
|
+
goto st53;
|
1442
1363
|
} else if ( (*p) > 70 ) {
|
1443
1364
|
if ( 97 <= (*p) && (*p) <= 102 )
|
1444
|
-
goto
|
1365
|
+
goto st53;
|
1445
1366
|
} else
|
1446
|
-
goto
|
1367
|
+
goto st53;
|
1447
1368
|
goto st0;
|
1448
|
-
|
1369
|
+
st53:
|
1449
1370
|
if ( ++p == pe )
|
1450
|
-
goto
|
1451
|
-
case
|
1371
|
+
goto _test_eof53;
|
1372
|
+
case 53:
|
1452
1373
|
if ( (*p) < 65 ) {
|
1453
1374
|
if ( 48 <= (*p) && (*p) <= 57 )
|
1454
|
-
goto
|
1375
|
+
goto st51;
|
1455
1376
|
} else if ( (*p) > 70 ) {
|
1456
1377
|
if ( 97 <= (*p) && (*p) <= 102 )
|
1457
|
-
goto
|
1378
|
+
goto st51;
|
1458
1379
|
} else
|
1459
|
-
goto
|
1380
|
+
goto st51;
|
1460
1381
|
goto st0;
|
1461
|
-
|
1382
|
+
st54:
|
1462
1383
|
if ( ++p == pe )
|
1463
|
-
goto
|
1464
|
-
case
|
1384
|
+
goto _test_eof54;
|
1385
|
+
case 54:
|
1465
1386
|
switch( (*p) ) {
|
1466
1387
|
case 32: goto tr2;
|
1467
|
-
case 36: goto
|
1468
|
-
case 95: goto
|
1388
|
+
case 36: goto st55;
|
1389
|
+
case 95: goto st55;
|
1469
1390
|
}
|
1470
1391
|
if ( (*p) < 48 ) {
|
1471
1392
|
if ( 45 <= (*p) && (*p) <= 46 )
|
1472
|
-
goto
|
1393
|
+
goto st55;
|
1473
1394
|
} else if ( (*p) > 57 ) {
|
1474
1395
|
if ( 65 <= (*p) && (*p) <= 90 )
|
1475
|
-
goto
|
1396
|
+
goto st55;
|
1476
1397
|
} else
|
1477
|
-
goto
|
1398
|
+
goto st55;
|
1478
1399
|
goto st0;
|
1479
|
-
|
1400
|
+
st55:
|
1480
1401
|
if ( ++p == pe )
|
1481
|
-
goto
|
1482
|
-
case
|
1402
|
+
goto _test_eof55;
|
1403
|
+
case 55:
|
1483
1404
|
switch( (*p) ) {
|
1484
1405
|
case 32: goto tr2;
|
1485
|
-
case 36: goto
|
1486
|
-
case 95: goto
|
1406
|
+
case 36: goto st56;
|
1407
|
+
case 95: goto st56;
|
1487
1408
|
}
|
1488
1409
|
if ( (*p) < 48 ) {
|
1489
1410
|
if ( 45 <= (*p) && (*p) <= 46 )
|
1490
|
-
goto
|
1411
|
+
goto st56;
|
1491
1412
|
} else if ( (*p) > 57 ) {
|
1492
1413
|
if ( 65 <= (*p) && (*p) <= 90 )
|
1493
|
-
goto
|
1414
|
+
goto st56;
|
1494
1415
|
} else
|
1495
|
-
goto
|
1416
|
+
goto st56;
|
1496
1417
|
goto st0;
|
1497
|
-
|
1418
|
+
st56:
|
1498
1419
|
if ( ++p == pe )
|
1499
|
-
goto
|
1500
|
-
case
|
1420
|
+
goto _test_eof56;
|
1421
|
+
case 56:
|
1501
1422
|
switch( (*p) ) {
|
1502
1423
|
case 32: goto tr2;
|
1503
|
-
case 36: goto
|
1504
|
-
case 95: goto
|
1424
|
+
case 36: goto st57;
|
1425
|
+
case 95: goto st57;
|
1505
1426
|
}
|
1506
1427
|
if ( (*p) < 48 ) {
|
1507
1428
|
if ( 45 <= (*p) && (*p) <= 46 )
|
1508
|
-
goto
|
1429
|
+
goto st57;
|
1509
1430
|
} else if ( (*p) > 57 ) {
|
1510
1431
|
if ( 65 <= (*p) && (*p) <= 90 )
|
1511
|
-
goto
|
1432
|
+
goto st57;
|
1512
1433
|
} else
|
1513
|
-
goto
|
1434
|
+
goto st57;
|
1514
1435
|
goto st0;
|
1515
|
-
|
1436
|
+
st57:
|
1516
1437
|
if ( ++p == pe )
|
1517
|
-
goto
|
1518
|
-
case
|
1438
|
+
goto _test_eof57;
|
1439
|
+
case 57:
|
1519
1440
|
switch( (*p) ) {
|
1520
1441
|
case 32: goto tr2;
|
1521
|
-
case 36: goto
|
1522
|
-
case 95: goto
|
1442
|
+
case 36: goto st58;
|
1443
|
+
case 95: goto st58;
|
1523
1444
|
}
|
1524
1445
|
if ( (*p) < 48 ) {
|
1525
1446
|
if ( 45 <= (*p) && (*p) <= 46 )
|
1526
|
-
goto
|
1447
|
+
goto st58;
|
1527
1448
|
} else if ( (*p) > 57 ) {
|
1528
1449
|
if ( 65 <= (*p) && (*p) <= 90 )
|
1529
|
-
goto
|
1450
|
+
goto st58;
|
1530
1451
|
} else
|
1531
|
-
goto
|
1452
|
+
goto st58;
|
1532
1453
|
goto st0;
|
1533
|
-
|
1454
|
+
st58:
|
1534
1455
|
if ( ++p == pe )
|
1535
|
-
goto
|
1536
|
-
case
|
1456
|
+
goto _test_eof58;
|
1457
|
+
case 58:
|
1537
1458
|
switch( (*p) ) {
|
1538
1459
|
case 32: goto tr2;
|
1539
|
-
case 36: goto
|
1540
|
-
case 95: goto
|
1460
|
+
case 36: goto st59;
|
1461
|
+
case 95: goto st59;
|
1541
1462
|
}
|
1542
1463
|
if ( (*p) < 48 ) {
|
1543
1464
|
if ( 45 <= (*p) && (*p) <= 46 )
|
1544
|
-
goto
|
1465
|
+
goto st59;
|
1545
1466
|
} else if ( (*p) > 57 ) {
|
1546
1467
|
if ( 65 <= (*p) && (*p) <= 90 )
|
1547
|
-
goto
|
1468
|
+
goto st59;
|
1548
1469
|
} else
|
1549
|
-
goto
|
1470
|
+
goto st59;
|
1550
1471
|
goto st0;
|
1551
|
-
|
1472
|
+
st59:
|
1552
1473
|
if ( ++p == pe )
|
1553
|
-
goto
|
1554
|
-
case
|
1474
|
+
goto _test_eof59;
|
1475
|
+
case 59:
|
1555
1476
|
switch( (*p) ) {
|
1556
1477
|
case 32: goto tr2;
|
1557
|
-
case 36: goto
|
1558
|
-
case 95: goto
|
1478
|
+
case 36: goto st60;
|
1479
|
+
case 95: goto st60;
|
1559
1480
|
}
|
1560
1481
|
if ( (*p) < 48 ) {
|
1561
1482
|
if ( 45 <= (*p) && (*p) <= 46 )
|
1562
|
-
goto
|
1483
|
+
goto st60;
|
1563
1484
|
} else if ( (*p) > 57 ) {
|
1564
1485
|
if ( 65 <= (*p) && (*p) <= 90 )
|
1565
|
-
goto
|
1486
|
+
goto st60;
|
1566
1487
|
} else
|
1567
|
-
goto
|
1488
|
+
goto st60;
|
1568
1489
|
goto st0;
|
1569
|
-
|
1490
|
+
st60:
|
1570
1491
|
if ( ++p == pe )
|
1571
|
-
goto
|
1572
|
-
case
|
1492
|
+
goto _test_eof60;
|
1493
|
+
case 60:
|
1573
1494
|
switch( (*p) ) {
|
1574
1495
|
case 32: goto tr2;
|
1575
|
-
case 36: goto
|
1576
|
-
case 95: goto
|
1496
|
+
case 36: goto st61;
|
1497
|
+
case 95: goto st61;
|
1577
1498
|
}
|
1578
1499
|
if ( (*p) < 48 ) {
|
1579
1500
|
if ( 45 <= (*p) && (*p) <= 46 )
|
1580
|
-
goto
|
1501
|
+
goto st61;
|
1581
1502
|
} else if ( (*p) > 57 ) {
|
1582
1503
|
if ( 65 <= (*p) && (*p) <= 90 )
|
1583
|
-
goto
|
1504
|
+
goto st61;
|
1584
1505
|
} else
|
1585
|
-
goto
|
1506
|
+
goto st61;
|
1586
1507
|
goto st0;
|
1587
|
-
|
1508
|
+
st61:
|
1588
1509
|
if ( ++p == pe )
|
1589
|
-
goto
|
1590
|
-
case
|
1510
|
+
goto _test_eof61;
|
1511
|
+
case 61:
|
1591
1512
|
switch( (*p) ) {
|
1592
1513
|
case 32: goto tr2;
|
1593
|
-
case 36: goto
|
1594
|
-
case 95: goto
|
1514
|
+
case 36: goto st62;
|
1515
|
+
case 95: goto st62;
|
1595
1516
|
}
|
1596
1517
|
if ( (*p) < 48 ) {
|
1597
1518
|
if ( 45 <= (*p) && (*p) <= 46 )
|
1598
|
-
goto
|
1519
|
+
goto st62;
|
1599
1520
|
} else if ( (*p) > 57 ) {
|
1600
1521
|
if ( 65 <= (*p) && (*p) <= 90 )
|
1601
|
-
goto
|
1522
|
+
goto st62;
|
1602
1523
|
} else
|
1603
|
-
goto
|
1524
|
+
goto st62;
|
1604
1525
|
goto st0;
|
1605
|
-
|
1526
|
+
st62:
|
1606
1527
|
if ( ++p == pe )
|
1607
|
-
goto
|
1608
|
-
case
|
1528
|
+
goto _test_eof62;
|
1529
|
+
case 62:
|
1609
1530
|
switch( (*p) ) {
|
1610
1531
|
case 32: goto tr2;
|
1611
|
-
case 36: goto
|
1612
|
-
case 95: goto
|
1532
|
+
case 36: goto st63;
|
1533
|
+
case 95: goto st63;
|
1613
1534
|
}
|
1614
1535
|
if ( (*p) < 48 ) {
|
1615
1536
|
if ( 45 <= (*p) && (*p) <= 46 )
|
1616
|
-
goto
|
1537
|
+
goto st63;
|
1617
1538
|
} else if ( (*p) > 57 ) {
|
1618
1539
|
if ( 65 <= (*p) && (*p) <= 90 )
|
1619
|
-
goto
|
1540
|
+
goto st63;
|
1620
1541
|
} else
|
1621
|
-
goto
|
1542
|
+
goto st63;
|
1622
1543
|
goto st0;
|
1623
|
-
|
1544
|
+
st63:
|
1624
1545
|
if ( ++p == pe )
|
1625
|
-
goto
|
1626
|
-
case
|
1546
|
+
goto _test_eof63;
|
1547
|
+
case 63:
|
1627
1548
|
switch( (*p) ) {
|
1628
1549
|
case 32: goto tr2;
|
1629
|
-
case 36: goto
|
1630
|
-
case 95: goto
|
1550
|
+
case 36: goto st64;
|
1551
|
+
case 95: goto st64;
|
1631
1552
|
}
|
1632
1553
|
if ( (*p) < 48 ) {
|
1633
1554
|
if ( 45 <= (*p) && (*p) <= 46 )
|
1634
|
-
goto
|
1555
|
+
goto st64;
|
1635
1556
|
} else if ( (*p) > 57 ) {
|
1636
1557
|
if ( 65 <= (*p) && (*p) <= 90 )
|
1637
|
-
goto
|
1558
|
+
goto st64;
|
1638
1559
|
} else
|
1639
|
-
goto
|
1560
|
+
goto st64;
|
1640
1561
|
goto st0;
|
1641
|
-
|
1562
|
+
st64:
|
1642
1563
|
if ( ++p == pe )
|
1643
|
-
goto
|
1644
|
-
case
|
1564
|
+
goto _test_eof64;
|
1565
|
+
case 64:
|
1645
1566
|
switch( (*p) ) {
|
1646
1567
|
case 32: goto tr2;
|
1647
|
-
case 36: goto
|
1648
|
-
case 95: goto
|
1568
|
+
case 36: goto st65;
|
1569
|
+
case 95: goto st65;
|
1649
1570
|
}
|
1650
1571
|
if ( (*p) < 48 ) {
|
1651
1572
|
if ( 45 <= (*p) && (*p) <= 46 )
|
1652
|
-
goto
|
1573
|
+
goto st65;
|
1653
1574
|
} else if ( (*p) > 57 ) {
|
1654
1575
|
if ( 65 <= (*p) && (*p) <= 90 )
|
1655
|
-
goto
|
1576
|
+
goto st65;
|
1656
1577
|
} else
|
1657
|
-
goto
|
1578
|
+
goto st65;
|
1658
1579
|
goto st0;
|
1659
|
-
|
1580
|
+
st65:
|
1660
1581
|
if ( ++p == pe )
|
1661
|
-
goto
|
1662
|
-
case
|
1582
|
+
goto _test_eof65;
|
1583
|
+
case 65:
|
1663
1584
|
switch( (*p) ) {
|
1664
1585
|
case 32: goto tr2;
|
1665
|
-
case 36: goto
|
1666
|
-
case 95: goto
|
1586
|
+
case 36: goto st66;
|
1587
|
+
case 95: goto st66;
|
1667
1588
|
}
|
1668
1589
|
if ( (*p) < 48 ) {
|
1669
1590
|
if ( 45 <= (*p) && (*p) <= 46 )
|
1670
|
-
goto
|
1591
|
+
goto st66;
|
1671
1592
|
} else if ( (*p) > 57 ) {
|
1672
1593
|
if ( 65 <= (*p) && (*p) <= 90 )
|
1673
|
-
goto
|
1594
|
+
goto st66;
|
1674
1595
|
} else
|
1675
|
-
goto
|
1596
|
+
goto st66;
|
1676
1597
|
goto st0;
|
1677
|
-
|
1598
|
+
st66:
|
1678
1599
|
if ( ++p == pe )
|
1679
|
-
goto
|
1680
|
-
case
|
1600
|
+
goto _test_eof66;
|
1601
|
+
case 66:
|
1681
1602
|
switch( (*p) ) {
|
1682
1603
|
case 32: goto tr2;
|
1683
|
-
case 36: goto
|
1684
|
-
case 95: goto
|
1604
|
+
case 36: goto st67;
|
1605
|
+
case 95: goto st67;
|
1685
1606
|
}
|
1686
1607
|
if ( (*p) < 48 ) {
|
1687
1608
|
if ( 45 <= (*p) && (*p) <= 46 )
|
1688
|
-
goto
|
1609
|
+
goto st67;
|
1689
1610
|
} else if ( (*p) > 57 ) {
|
1690
1611
|
if ( 65 <= (*p) && (*p) <= 90 )
|
1691
|
-
goto
|
1612
|
+
goto st67;
|
1692
1613
|
} else
|
1693
|
-
goto
|
1614
|
+
goto st67;
|
1694
1615
|
goto st0;
|
1695
|
-
|
1616
|
+
st67:
|
1696
1617
|
if ( ++p == pe )
|
1697
|
-
goto
|
1698
|
-
case
|
1618
|
+
goto _test_eof67;
|
1619
|
+
case 67:
|
1699
1620
|
switch( (*p) ) {
|
1700
1621
|
case 32: goto tr2;
|
1701
|
-
case 36: goto
|
1702
|
-
case 95: goto
|
1622
|
+
case 36: goto st68;
|
1623
|
+
case 95: goto st68;
|
1703
1624
|
}
|
1704
1625
|
if ( (*p) < 48 ) {
|
1705
1626
|
if ( 45 <= (*p) && (*p) <= 46 )
|
1706
|
-
goto
|
1627
|
+
goto st68;
|
1707
1628
|
} else if ( (*p) > 57 ) {
|
1708
1629
|
if ( 65 <= (*p) && (*p) <= 90 )
|
1709
|
-
goto
|
1630
|
+
goto st68;
|
1710
1631
|
} else
|
1711
|
-
goto
|
1632
|
+
goto st68;
|
1712
1633
|
goto st0;
|
1713
|
-
|
1634
|
+
st68:
|
1714
1635
|
if ( ++p == pe )
|
1715
|
-
goto
|
1716
|
-
case
|
1636
|
+
goto _test_eof68;
|
1637
|
+
case 68:
|
1717
1638
|
switch( (*p) ) {
|
1718
1639
|
case 32: goto tr2;
|
1719
|
-
case 36: goto
|
1720
|
-
case 95: goto
|
1640
|
+
case 36: goto st69;
|
1641
|
+
case 95: goto st69;
|
1721
1642
|
}
|
1722
1643
|
if ( (*p) < 48 ) {
|
1723
1644
|
if ( 45 <= (*p) && (*p) <= 46 )
|
1724
|
-
goto
|
1645
|
+
goto st69;
|
1725
1646
|
} else if ( (*p) > 57 ) {
|
1726
1647
|
if ( 65 <= (*p) && (*p) <= 90 )
|
1727
|
-
goto
|
1648
|
+
goto st69;
|
1728
1649
|
} else
|
1729
|
-
goto
|
1650
|
+
goto st69;
|
1730
1651
|
goto st0;
|
1731
|
-
|
1652
|
+
st69:
|
1732
1653
|
if ( ++p == pe )
|
1733
|
-
goto
|
1734
|
-
case
|
1654
|
+
goto _test_eof69;
|
1655
|
+
case 69:
|
1735
1656
|
switch( (*p) ) {
|
1736
1657
|
case 32: goto tr2;
|
1737
|
-
case 36: goto
|
1738
|
-
case 95: goto
|
1658
|
+
case 36: goto st70;
|
1659
|
+
case 95: goto st70;
|
1739
1660
|
}
|
1740
1661
|
if ( (*p) < 48 ) {
|
1741
1662
|
if ( 45 <= (*p) && (*p) <= 46 )
|
1742
|
-
goto
|
1663
|
+
goto st70;
|
1743
1664
|
} else if ( (*p) > 57 ) {
|
1744
1665
|
if ( 65 <= (*p) && (*p) <= 90 )
|
1745
|
-
goto
|
1666
|
+
goto st70;
|
1746
1667
|
} else
|
1747
|
-
goto
|
1668
|
+
goto st70;
|
1748
1669
|
goto st0;
|
1749
|
-
|
1670
|
+
st70:
|
1750
1671
|
if ( ++p == pe )
|
1751
|
-
goto
|
1752
|
-
case
|
1672
|
+
goto _test_eof70;
|
1673
|
+
case 70:
|
1753
1674
|
switch( (*p) ) {
|
1754
1675
|
case 32: goto tr2;
|
1755
|
-
case 36: goto
|
1756
|
-
case 95: goto
|
1676
|
+
case 36: goto st71;
|
1677
|
+
case 95: goto st71;
|
1757
1678
|
}
|
1758
1679
|
if ( (*p) < 48 ) {
|
1759
1680
|
if ( 45 <= (*p) && (*p) <= 46 )
|
1760
|
-
goto
|
1681
|
+
goto st71;
|
1761
1682
|
} else if ( (*p) > 57 ) {
|
1762
1683
|
if ( 65 <= (*p) && (*p) <= 90 )
|
1763
|
-
goto
|
1684
|
+
goto st71;
|
1764
1685
|
} else
|
1765
|
-
goto
|
1686
|
+
goto st71;
|
1766
1687
|
goto st0;
|
1767
|
-
|
1688
|
+
st71:
|
1768
1689
|
if ( ++p == pe )
|
1769
|
-
goto
|
1770
|
-
case
|
1690
|
+
goto _test_eof71;
|
1691
|
+
case 71:
|
1771
1692
|
switch( (*p) ) {
|
1772
1693
|
case 32: goto tr2;
|
1773
|
-
case 36: goto
|
1774
|
-
case 95: goto
|
1694
|
+
case 36: goto st72;
|
1695
|
+
case 95: goto st72;
|
1775
1696
|
}
|
1776
1697
|
if ( (*p) < 48 ) {
|
1777
1698
|
if ( 45 <= (*p) && (*p) <= 46 )
|
1778
|
-
goto
|
1699
|
+
goto st72;
|
1779
1700
|
} else if ( (*p) > 57 ) {
|
1780
1701
|
if ( 65 <= (*p) && (*p) <= 90 )
|
1781
|
-
goto
|
1702
|
+
goto st72;
|
1782
1703
|
} else
|
1783
|
-
goto
|
1704
|
+
goto st72;
|
1784
1705
|
goto st0;
|
1785
|
-
|
1706
|
+
st72:
|
1786
1707
|
if ( ++p == pe )
|
1787
|
-
goto
|
1788
|
-
case
|
1708
|
+
goto _test_eof72;
|
1709
|
+
case 72:
|
1789
1710
|
if ( (*p) == 32 )
|
1790
1711
|
goto tr2;
|
1791
1712
|
goto st0;
|
@@ -1805,7 +1726,7 @@ case 81:
|
|
1805
1726
|
_test_eof14: cs = 14; goto _test_eof;
|
1806
1727
|
_test_eof15: cs = 15; goto _test_eof;
|
1807
1728
|
_test_eof16: cs = 16; goto _test_eof;
|
1808
|
-
|
1729
|
+
_test_eof73: cs = 73; goto _test_eof;
|
1809
1730
|
_test_eof17: cs = 17; goto _test_eof;
|
1810
1731
|
_test_eof18: cs = 18; goto _test_eof;
|
1811
1732
|
_test_eof19: cs = 19; goto _test_eof;
|
@@ -1862,15 +1783,6 @@ case 81:
|
|
1862
1783
|
_test_eof70: cs = 70; goto _test_eof;
|
1863
1784
|
_test_eof71: cs = 71; goto _test_eof;
|
1864
1785
|
_test_eof72: cs = 72; goto _test_eof;
|
1865
|
-
_test_eof73: cs = 73; goto _test_eof;
|
1866
|
-
_test_eof74: cs = 74; goto _test_eof;
|
1867
|
-
_test_eof75: cs = 75; goto _test_eof;
|
1868
|
-
_test_eof76: cs = 76; goto _test_eof;
|
1869
|
-
_test_eof77: cs = 77; goto _test_eof;
|
1870
|
-
_test_eof78: cs = 78; goto _test_eof;
|
1871
|
-
_test_eof79: cs = 79; goto _test_eof;
|
1872
|
-
_test_eof80: cs = 80; goto _test_eof;
|
1873
|
-
_test_eof81: cs = 81; goto _test_eof;
|
1874
1786
|
|
1875
1787
|
_test_eof: {}
|
1876
1788
|
_out: {}
|