ebb 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/src/ebb.h DELETED
@@ -1,102 +0,0 @@
1
- /* The Ebb Web Server
2
- * Copyright (c) 2008 Ry Dahl. This software is released under the MIT
3
- * License. See README file for details.
4
- */
5
- #ifndef ebb_h
6
- #define ebb_h
7
- #define EV_STANDALONE 1
8
- #include <ev.h>
9
- #include <sys/socket.h>
10
- #include <netinet/in.h>
11
- #include <glib.h>
12
- #include "parser.h"
13
-
14
- typedef struct ebb_server ebb_server;
15
- typedef struct ebb_client ebb_client;
16
- #define EBB_VERSION "0.2.1"
17
- #define EBB_BUFFERSIZE (1024 * (80 + 33))
18
- #define EBB_MAX_CLIENTS 1024
19
- #define EBB_TIMEOUT 30.0
20
- #define EBB_MAX_ENV 500
21
- #define EBB_TCP_COMMON \
22
- unsigned open : 1; \
23
- int fd; \
24
- struct sockaddr_in sockaddr;
25
-
26
- /*** Ebb Client ***/
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*);
30
- int ebb_client_read(ebb_client *client, char *buffer, int length);
31
- void ebb_client_write_status(ebb_client*, int status, const char *reason_phrase);
32
- void ebb_client_write_header(ebb_client*, const char *field, const char *value);
33
- void ebb_client_write_body(ebb_client*, const char *data, int length);
34
- /* int ebb_client_should_keep_alive(ebb_client*); */
35
-
36
- struct ebb_env_item {
37
- int type;
38
- int field_length;
39
- int value_length;
40
- const char *field;
41
- const char *value;
42
- };
43
-
44
- struct ebb_client {
45
- EBB_TCP_COMMON
46
- char *ip;
47
- unsigned int in_use : 1;
48
-
49
- ebb_server *server;
50
- http_parser parser;
51
-
52
- char *request_buffer;
53
- ev_io read_watcher;
54
- size_t read;
55
-
56
- char *body_head;
57
- size_t body_head_len;
58
-
59
- ev_io write_watcher;
60
- GString *response_buffer;
61
- size_t written;
62
-
63
- ev_timer timeout_watcher;
64
- unsigned int keep_alive : 1;
65
- unsigned int status_written : 1;
66
- unsigned int headers_written : 1;
67
- unsigned int body_written : 1;
68
-
69
- /* the ENV structure */
70
- int env_size;
71
- struct ebb_env_item env[EBB_MAX_ENV];
72
- };
73
-
74
- /*** Ebb Server ***/
75
-
76
- typedef void (*ebb_request_cb)(ebb_client*, void*);
77
-
78
- ebb_server* ebb_server_alloc(void);
79
- void ebb_server_free(ebb_server*);
80
- void ebb_server_init( ebb_server *server
81
- , struct ev_loop *loop
82
- , ebb_request_cb request_cb
83
- , void *request_cb_data
84
- );
85
- int ebb_server_listen_on_fd(ebb_server*, const int sfd);
86
- int ebb_server_listen_on_port(ebb_server*, const int port);
87
- int ebb_server_listen_on_unix_socket(ebb_server*, const char *socketpath);
88
- void ebb_server_unlisten(ebb_server*);
89
- int ebb_server_clients_in_use_p(ebb_server*);
90
-
91
- struct ebb_server {
92
- EBB_TCP_COMMON
93
- char *port;
94
- char *socketpath;
95
- ev_io request_watcher;
96
- ebb_client clients[EBB_MAX_CLIENTS];
97
- struct ev_loop *loop;
98
- void *request_cb_data;
99
- ebb_request_cb request_cb;
100
- };
101
-
102
- #endif
@@ -1,306 +0,0 @@
1
- /* A ruby binding to the ebb web server
2
- * Copyright (c) 2008 Ry Dahl. This software is released under the MIT
3
- * License. See README file for details.
4
- */
5
- #include <ruby.h>
6
- #include <rubyio.h>
7
- #include <rubysig.h>
8
- #include <assert.h>
9
- #include <fcntl.h>
10
- #include <ebb.h>
11
- #include <ev.h>
12
-
13
- static VALUE cClient;
14
- static VALUE waiting_clients;
15
-
16
- static VALUE global_fragment;
17
- static VALUE global_path_info;
18
- static VALUE global_query_string;
19
- static VALUE global_request_body;
20
- static VALUE global_request_method;
21
- static VALUE global_request_path;
22
- static VALUE global_request_uri;
23
- static VALUE global_server_port;
24
- static VALUE global_content_length;
25
- static VALUE global_content_type;
26
- static VALUE global_http_client_ip;
27
- static VALUE global_http_prefix;
28
- static VALUE global_http_version;
29
-
30
-
31
- /* You don't want to run more than one server per Ruby VM. Really
32
- * I'm making this explicit by not defining a Ebb::Server class but instead
33
- * initializing a single server and single event loop on module load.
34
- */
35
- static ebb_server *server;
36
- struct ev_loop *loop;
37
- struct ev_idle idle_watcher;
38
-
39
- /* Variables with a leading underscore are C-level variables */
40
-
41
- #define ASCII_UPPER(ch) ('a' <= ch && ch <= 'z' ? ch - 'a' + 'A' : ch)
42
- #ifndef RSTRING_PTR
43
- # define RSTRING_PTR(s) (RSTRING(s)->ptr)
44
- # define RSTRING_LEN(s) (RSTRING(s)->len)
45
- #endif
46
-
47
- static void attach_idle_watcher()
48
- {
49
- if(!ev_is_active(&idle_watcher)) {
50
- ev_idle_start (loop, &idle_watcher);
51
- }
52
- }
53
-
54
-
55
- static void detach_idle_watcher()
56
- {
57
- ev_idle_stop(loop, &idle_watcher);
58
- }
59
-
60
-
61
- static void request_cb(ebb_client *client, void *data)
62
- {
63
- VALUE rb_client = Data_Wrap_Struct(cClient, 0, 0, client);
64
-
65
- rb_iv_set(rb_client, "@fd", INT2FIX(client->fd));
66
- rb_iv_set(rb_client, "@content_length", INT2FIX(client->parser.content_length));
67
- if(client->body_head_len > 0)
68
- rb_iv_set(rb_client, "@body_head", rb_str_new(client->body_head, client->body_head_len));
69
-
70
- rb_ary_push(waiting_clients, rb_client);
71
- attach_idle_watcher();
72
- }
73
-
74
- static VALUE server_listen_on_fd(VALUE _, VALUE sfd)
75
- {
76
- if(ebb_server_listen_on_fd(server, FIX2INT(sfd)) < 0)
77
- rb_sys_fail("Problem listening on FD");
78
- return Qnil;
79
- }
80
-
81
- static VALUE server_listen_on_port(VALUE _, VALUE port)
82
- {
83
- if(ebb_server_listen_on_port(server, FIX2INT(port)) < 0)
84
- rb_sys_fail("Problem listening on port");
85
- return Qnil;
86
- }
87
-
88
- static VALUE server_listen_on_unix_socket(VALUE _, VALUE socketfile)
89
- {
90
- if(ebb_server_listen_on_unix_socket(server, StringValuePtr(socketfile)) < 0)
91
- rb_sys_fail("Problem listening on unix socket");
92
- return Qnil;
93
- }
94
-
95
-
96
- static struct timeval idle_timeout = { 0, 50000 };
97
-
98
- static void
99
- idle_cb (struct ev_loop *loop, struct ev_idle *w, int revents) {
100
- /* How to let other Ruby threads run while we're in this blocking C call */
101
-
102
- /* TODO: For Ruby 1.9 I should use rb_thread_blocking_region() instead of
103
- * this hacky idle_cb
104
- */
105
-
106
- if(ebb_server_clients_in_use_p(server)) {
107
- /* If ruby has control of any clients - that means there are some requests
108
- * still being processed inside of threads. We need to allow Ruby some
109
- * time to work on these threads so we call rb_thread_schedule()
110
- * I don't use rb_thread_select() here because it is very slow.
111
- */
112
- rb_thread_schedule();
113
-
114
- } else if(!rb_thread_alone()) {
115
- /* If no clients are in use, but there are still other Ruby threads then
116
- * some other thread is running in the Ruby VM which is not a request.
117
- * This is a sub-optimal situation and we solve it by calling
118
- * rb_thread_select() to wait for the server fd to wake up.
119
- * One should try to avoid entering this state.
120
- */
121
- fd_set server_fd_set;
122
- FD_ZERO(&server_fd_set);
123
- FD_SET(server->fd, &server_fd_set);
124
- rb_thread_select(server->fd+1, &server_fd_set, 0, 0, &idle_timeout);
125
- } else {
126
- /* Otherwise there are no other threads. We can detach the idle_watcher
127
- * and allow the server_process_connections() to block until the
128
- * server fd wakes up. Because we don't use rb_thread_select() this
129
- * is quite fast.
130
- */
131
- detach_idle_watcher();
132
- }
133
- }
134
-
135
- static VALUE server_process_connections(VALUE _)
136
- {
137
- TRAP_BEG;
138
- ev_loop(loop, EVLOOP_ONESHOT);
139
- TRAP_END;
140
- return Qnil;
141
- }
142
-
143
-
144
- static VALUE server_unlisten(VALUE _)
145
- {
146
- ebb_server_unlisten(server);
147
- return Qnil;
148
- }
149
-
150
- static VALUE server_open(VALUE _)
151
- {
152
- return server->open ? Qtrue : Qfalse;
153
- }
154
-
155
- static VALUE server_waiting_clients(VALUE _)
156
- {
157
- return waiting_clients;
158
- }
159
-
160
- static VALUE env_field(struct ebb_env_item *item)
161
- {
162
- if(item->field) {
163
- VALUE f = rb_str_new(NULL, RSTRING_LEN(global_http_prefix) + item->field_length);
164
- memcpy( RSTRING_PTR(f)
165
- , RSTRING_PTR(global_http_prefix)
166
- , RSTRING_LEN(global_http_prefix)
167
- );
168
- int i;
169
- for(i = 0; i < item->field_length; i++) {
170
- char *ch = RSTRING_PTR(f) + RSTRING_LEN(global_http_prefix) + i;
171
- *ch = item->field[i] == '-' ? '_' : ASCII_UPPER(item->field[i]);
172
- }
173
- return f;
174
- }
175
- switch(item->type) {
176
- case MONGREL_CONTENT_LENGTH: return global_content_length;
177
- case MONGREL_CONTENT_TYPE: return global_content_type;
178
- case MONGREL_FRAGMENT: return global_fragment;
179
- case MONGREL_HTTP_VERSION: return global_http_version;
180
- case MONGREL_QUERY_STRING: return global_query_string;
181
- case MONGREL_REQUEST_METHOD: return global_request_method;
182
- case MONGREL_REQUEST_PATH: return global_request_path;
183
- case MONGREL_REQUEST_URI: return global_request_uri;
184
- }
185
- fprintf(stderr, "Unknown environ type: %d", item->type);
186
- assert(FALSE);
187
- return Qnil;
188
- }
189
-
190
-
191
- static VALUE env_value(struct ebb_env_item *item)
192
- {
193
- if(item->value_length > 0)
194
- return rb_str_new(item->value, item->value_length);
195
- else
196
- return Qnil;
197
- }
198
-
199
-
200
- static VALUE client_env(VALUE _, VALUE rb_client)
201
- {
202
- ebb_client *client;
203
- VALUE field, value, env = rb_hash_new();
204
- int i;
205
- struct ebb_env_item *item;
206
-
207
- Data_Get_Struct(rb_client, ebb_client, client);
208
- for(i=0; i < client->env_size; i++) {
209
- item = &client->env[i];
210
- field = env_field(item);
211
- value = env_value(item);
212
- rb_hash_aset(env, field, value);
213
- }
214
-
215
- if(client->server->port)
216
- rb_hash_aset(env, global_server_port, rb_str_new2(client->server->port));
217
-
218
- if(client->ip)
219
- rb_hash_aset(env, global_http_client_ip, rb_str_new2(client->ip));
220
-
221
- rb_hash_aset(env, global_path_info, rb_hash_aref(env, global_request_path));
222
- return env;
223
- }
224
-
225
- static VALUE client_write_status(VALUE _, VALUE client, VALUE status, VALUE reason_phrase)
226
- {
227
- ebb_client *_client;
228
- Data_Get_Struct(client, ebb_client, _client);
229
- ebb_client_write_status(_client, FIX2INT(status), StringValuePtr(reason_phrase));
230
- return Qnil;
231
- }
232
-
233
- static VALUE client_write_header(VALUE _, VALUE client, VALUE field, VALUE value)
234
- {
235
- ebb_client *_client;
236
- Data_Get_Struct(client, ebb_client, _client);
237
- ebb_client_write_header(_client, StringValuePtr(field), StringValuePtr(value));
238
- return Qnil;
239
- }
240
-
241
- static VALUE client_write_body(VALUE _, VALUE client, VALUE string)
242
- {
243
- ebb_client *_client;
244
- Data_Get_Struct(client, ebb_client, _client);
245
- ebb_client_write_body(_client, RSTRING_PTR(string), RSTRING_LEN(string));
246
- return Qnil;
247
- }
248
-
249
-
250
- static VALUE client_release(VALUE _, VALUE rb_client)
251
- {
252
- ebb_client *client;
253
- Data_Get_Struct(rb_client, ebb_client, client);
254
- ebb_client_release(client);
255
- return Qnil;
256
- }
257
-
258
- void Init_ebb_ext()
259
- {
260
- VALUE mEbb = rb_define_module("Ebb");
261
- VALUE mFFI = rb_define_module_under(mEbb, "FFI");
262
-
263
- rb_define_const(mFFI, "VERSION", rb_str_new2(EBB_VERSION));
264
-
265
- /** Defines global strings in the init method. */
266
- #define DEF_GLOBAL(N, val) global_##N = rb_obj_freeze(rb_str_new2(val)); rb_global_variable(&global_##N)
267
- DEF_GLOBAL(content_length, "CONTENT_LENGTH");
268
- DEF_GLOBAL(content_type, "CONTENT_TYPE");
269
- DEF_GLOBAL(fragment, "FRAGMENT");
270
- DEF_GLOBAL(path_info, "PATH_INFO");
271
- DEF_GLOBAL(query_string, "QUERY_STRING");
272
- DEF_GLOBAL(request_body, "REQUEST_BODY");
273
- DEF_GLOBAL(request_method, "REQUEST_METHOD");
274
- DEF_GLOBAL(request_path, "REQUEST_PATH");
275
- DEF_GLOBAL(request_uri, "REQUEST_URI");
276
- DEF_GLOBAL(server_port, "SERVER_PORT");
277
- DEF_GLOBAL(http_client_ip, "HTTP_CLIENT_IP");
278
- DEF_GLOBAL(http_prefix, "HTTP_");
279
- DEF_GLOBAL(http_version, "HTTP_VERSION");
280
-
281
- rb_define_singleton_method(mFFI, "server_process_connections", server_process_connections, 0);
282
- rb_define_singleton_method(mFFI, "server_listen_on_fd", server_listen_on_fd, 1);
283
- rb_define_singleton_method(mFFI, "server_listen_on_port", server_listen_on_port, 1);
284
- rb_define_singleton_method(mFFI, "server_listen_on_unix_socket", server_listen_on_unix_socket, 1);
285
- rb_define_singleton_method(mFFI, "server_unlisten", server_unlisten, 0);
286
- rb_define_singleton_method(mFFI, "server_open?", server_open, 0);
287
- rb_define_singleton_method(mFFI, "server_waiting_clients", server_waiting_clients, 0);
288
-
289
- cClient = rb_define_class_under(mEbb, "Client", rb_cObject);
290
- rb_define_singleton_method(mFFI, "client_write_status", client_write_status, 3);
291
- rb_define_singleton_method(mFFI, "client_write_header", client_write_header, 3);
292
- rb_define_singleton_method(mFFI, "client_write_body", client_write_body, 2);
293
- rb_define_singleton_method(mFFI, "client_env", client_env, 1);
294
- rb_define_singleton_method(mFFI, "client_release", client_release, 1);
295
-
296
- /* initialize ebb_server */
297
- loop = ev_default_loop (0);
298
-
299
- ev_idle_init (&idle_watcher, idle_cb);
300
- attach_idle_watcher();
301
-
302
- server = ebb_server_alloc();
303
- waiting_clients = rb_ary_new();
304
- rb_iv_set(mFFI, "@waiting_clients", waiting_clients);
305
- ebb_server_init(server, loop, request_cb, (void*)waiting_clients);
306
- }
@@ -1,2860 +0,0 @@
1
- #line 1 "src/parser.rl"
2
- /**
3
- * Copyright (c) 2005 Zed A. Shaw
4
- * You can redistribute it and/or modify it under the same terms as Ruby.
5
- */
6
- #include "parser.h"
7
- #include <stdio.h>
8
- #include <assert.h>
9
- #include <stdlib.h>
10
- #include <ctype.h>
11
- #include <string.h>
12
-
13
- #define TRUE 1
14
- #define FALSE 0
15
- #define LEN(AT, FPC) (FPC - buffer - parser->AT)
16
- #define MARK(M,FPC) (parser->M = (FPC) - buffer)
17
- #define PTR_TO(F) (buffer + parser->F)
18
- /** machine **/
19
- #line 139 "src/parser.rl"
20
-
21
-
22
- /** Data **/
23
-
24
- #line 25 "src/parser.c"
25
- static const int http_parser_start = 1;
26
- static const int http_parser_first_final = 118;
27
- static const int http_parser_error = 0;
28
-
29
- static const int http_parser_en_main = 1;
30
-
31
- #line 143 "src/parser.rl"
32
-
33
- /* returns TRUE if applied, FALSE if there was an error */
34
- static int apply_element(http_parser *parser, int type, const char *begin, const char *end, int max_length)
35
- {
36
- int len = (int)(end-begin);
37
- if(len > max_length) {
38
- parser->overflow_error = TRUE;
39
- return FALSE;
40
- }
41
- if(parser->on_element)
42
- parser->on_element(parser->data, type, begin, len);
43
- return TRUE;
44
- }
45
-
46
- static void set_content_length(http_parser *parser, const char *at, int length)
47
- {
48
- /* atoi_length - why isn't this in the statndard library? i hate c */
49
- assert(parser->content_length == 0);
50
- int i, mult;
51
- for(mult=1, i=length-1; i>=0; i--, mult*=10)
52
- parser->content_length += (at[i] - '0') * mult;
53
- }
54
-
55
- void http_parser_init(http_parser *parser) {
56
- int cs = 0;
57
-
58
- #line 59 "src/parser.c"
59
- {
60
- cs = http_parser_start;
61
- }
62
- #line 169 "src/parser.rl"
63
- parser->cs = cs;
64
- parser->overflow_error = FALSE;
65
- parser->body_start = 0;
66
- parser->content_length = 0;
67
- parser->mark = 0;
68
- parser->nread = 0;
69
- parser->field_len = 0;
70
- parser->field_start = 0;
71
- parser->data = NULL;
72
- parser->http_field = NULL;
73
- }
74
-
75
-
76
- /** exec **/
77
- size_t http_parser_execute(http_parser *parser, const char *buffer, size_t len, size_t off) {
78
- const char *p, *pe;
79
- int cs = parser->cs;
80
-
81
- assert(off <= len && "offset past end of buffer");
82
-
83
- p = buffer+off;
84
- pe = buffer+len;
85
-
86
- /* Ragel 6 does not require this */
87
- // assert(*pe == '\0' && "pointer does not end on NUL");
88
- assert(pe - p == len - off && "pointers aren't same distance");
89
-
90
-
91
- #line 92 "src/parser.c"
92
- {
93
- if ( p == pe )
94
- goto _test_eof;
95
- switch ( cs )
96
- {
97
- case 1:
98
- switch( (*p) ) {
99
- case 36: goto tr0;
100
- case 95: goto tr0;
101
- }
102
- if ( (*p) < 48 ) {
103
- if ( 45 <= (*p) && (*p) <= 46 )
104
- goto tr0;
105
- } else if ( (*p) > 57 ) {
106
- if ( 65 <= (*p) && (*p) <= 90 )
107
- goto tr0;
108
- } else
109
- goto tr0;
110
- goto st0;
111
- st0:
112
- cs = 0;
113
- goto _out;
114
- tr0:
115
- #line 21 "src/parser.rl"
116
- {MARK(mark, p); }
117
- goto st2;
118
- st2:
119
- if ( ++p == pe )
120
- goto _test_eof2;
121
- case 2:
122
- #line 123 "src/parser.c"
123
- switch( (*p) ) {
124
- case 32: goto tr2;
125
- case 36: goto st99;
126
- case 95: goto st99;
127
- }
128
- if ( (*p) < 48 ) {
129
- if ( 45 <= (*p) && (*p) <= 46 )
130
- goto st99;
131
- } else if ( (*p) > 57 ) {
132
- if ( 65 <= (*p) && (*p) <= 90 )
133
- goto st99;
134
- } else
135
- goto st99;
136
- goto st0;
137
- tr2:
138
- #line 66 "src/parser.rl"
139
- {
140
- if(!apply_element(parser, MONGREL_REQUEST_METHOD, PTR_TO(mark), p, 1024))
141
- {p++; cs = 3; goto _out;}
142
- }
143
- goto st3;
144
- st3:
145
- if ( ++p == pe )
146
- goto _test_eof3;
147
- case 3:
148
- #line 149 "src/parser.c"
149
- switch( (*p) ) {
150
- case 42: goto tr4;
151
- case 43: goto tr5;
152
- case 47: goto tr6;
153
- case 58: goto tr7;
154
- }
155
- if ( (*p) < 65 ) {
156
- if ( 45 <= (*p) && (*p) <= 57 )
157
- goto tr5;
158
- } else if ( (*p) > 90 ) {
159
- if ( 97 <= (*p) && (*p) <= 122 )
160
- goto tr5;
161
- } else
162
- goto tr5;
163
- goto st0;
164
- tr4:
165
- #line 21 "src/parser.rl"
166
- {MARK(mark, p); }
167
- goto st4;
168
- st4:
169
- if ( ++p == pe )
170
- goto _test_eof4;
171
- case 4:
172
- #line 173 "src/parser.c"
173
- switch( (*p) ) {
174
- case 32: goto tr8;
175
- case 35: goto tr9;
176
- }
177
- goto st0;
178
- tr8:
179
- #line 71 "src/parser.rl"
180
- {
181
- if(!apply_element(parser, MONGREL_REQUEST_URI, PTR_TO(mark), p, 12*1024))
182
- {p++; cs = 5; goto _out;}
183
- }
184
- goto st5;
185
- tr103:
186
- #line 21 "src/parser.rl"
187
- {MARK(mark, p); }
188
- #line 51 "src/parser.rl"
189
- {
190
- if(!apply_element(parser, MONGREL_FRAGMENT, PTR_TO(mark), p, 10*1024))
191
- {p++; cs = 5; goto _out;}
192
- }
193
- goto st5;
194
- tr106:
195
- #line 51 "src/parser.rl"
196
- {
197
- if(!apply_element(parser, MONGREL_FRAGMENT, PTR_TO(mark), p, 10*1024))
198
- {p++; cs = 5; goto _out;}
199
- }
200
- goto st5;
201
- tr114:
202
- #line 61 "src/parser.rl"
203
- {
204
- if(!apply_element(parser, MONGREL_REQUEST_PATH, PTR_TO(mark), p, 1024))
205
- {p++; cs = 5; goto _out;}
206
- }
207
- #line 71 "src/parser.rl"
208
- {
209
- if(!apply_element(parser, MONGREL_REQUEST_URI, PTR_TO(mark), p, 12*1024))
210
- {p++; cs = 5; goto _out;}
211
- }
212
- goto st5;
213
- tr125:
214
- #line 76 "src/parser.rl"
215
- {MARK(query_start, p); }
216
- #line 77 "src/parser.rl"
217
- {
218
- if(!apply_element(parser, MONGREL_QUERY_STRING, PTR_TO(query_start), p, 10*1024))
219
- {p++; cs = 5; goto _out;}
220
- }
221
- #line 71 "src/parser.rl"
222
- {
223
- if(!apply_element(parser, MONGREL_REQUEST_URI, PTR_TO(mark), p, 12*1024))
224
- {p++; cs = 5; goto _out;}
225
- }
226
- goto st5;
227
- tr129:
228
- #line 77 "src/parser.rl"
229
- {
230
- if(!apply_element(parser, MONGREL_QUERY_STRING, PTR_TO(query_start), p, 10*1024))
231
- {p++; cs = 5; goto _out;}
232
- }
233
- #line 71 "src/parser.rl"
234
- {
235
- if(!apply_element(parser, MONGREL_REQUEST_URI, PTR_TO(mark), p, 12*1024))
236
- {p++; cs = 5; goto _out;}
237
- }
238
- goto st5;
239
- st5:
240
- if ( ++p == pe )
241
- goto _test_eof5;
242
- case 5:
243
- #line 244 "src/parser.c"
244
- if ( (*p) == 72 )
245
- goto tr10;
246
- goto st0;
247
- tr10:
248
- #line 21 "src/parser.rl"
249
- {MARK(mark, p); }
250
- goto st6;
251
- st6:
252
- if ( ++p == pe )
253
- goto _test_eof6;
254
- case 6:
255
- #line 256 "src/parser.c"
256
- if ( (*p) == 84 )
257
- goto st7;
258
- goto st0;
259
- st7:
260
- if ( ++p == pe )
261
- goto _test_eof7;
262
- case 7:
263
- if ( (*p) == 84 )
264
- goto st8;
265
- goto st0;
266
- st8:
267
- if ( ++p == pe )
268
- goto _test_eof8;
269
- case 8:
270
- if ( (*p) == 80 )
271
- goto st9;
272
- goto st0;
273
- st9:
274
- if ( ++p == pe )
275
- goto _test_eof9;
276
- case 9:
277
- if ( (*p) == 47 )
278
- goto st10;
279
- goto st0;
280
- st10:
281
- if ( ++p == pe )
282
- goto _test_eof10;
283
- case 10:
284
- if ( 48 <= (*p) && (*p) <= 57 )
285
- goto st11;
286
- goto st0;
287
- st11:
288
- if ( ++p == pe )
289
- goto _test_eof11;
290
- case 11:
291
- if ( (*p) == 46 )
292
- goto st12;
293
- if ( 48 <= (*p) && (*p) <= 57 )
294
- goto st11;
295
- goto st0;
296
- st12:
297
- if ( ++p == pe )
298
- goto _test_eof12;
299
- case 12:
300
- if ( 48 <= (*p) && (*p) <= 57 )
301
- goto st13;
302
- goto st0;
303
- st13:
304
- if ( ++p == pe )
305
- goto _test_eof13;
306
- case 13:
307
- if ( (*p) == 13 )
308
- goto tr18;
309
- if ( 48 <= (*p) && (*p) <= 57 )
310
- goto st13;
311
- goto st0;
312
- tr18:
313
- #line 56 "src/parser.rl"
314
- {
315
- if(!apply_element(parser, MONGREL_HTTP_VERSION, PTR_TO(mark), p, 10))
316
- {p++; cs = 14; goto _out;}
317
- }
318
- goto st14;
319
- tr28:
320
- #line 32 "src/parser.rl"
321
- { MARK(mark, p); }
322
- #line 33 "src/parser.rl"
323
- {
324
- if(LEN(mark, p) > 80 * 1024) { parser->overflow_error = TRUE; {p++; cs = 14; goto _out;} }
325
- if(parser->http_field != NULL) {
326
- parser->http_field(parser->data, PTR_TO(field_start), parser->field_len, PTR_TO(mark), LEN(mark, p));
327
- }
328
- }
329
- goto st14;
330
- tr32:
331
- #line 33 "src/parser.rl"
332
- {
333
- if(LEN(mark, p) > 80 * 1024) { parser->overflow_error = TRUE; {p++; cs = 14; goto _out;} }
334
- if(parser->http_field != NULL) {
335
- parser->http_field(parser->data, PTR_TO(field_start), parser->field_len, PTR_TO(mark), LEN(mark, p));
336
- }
337
- }
338
- goto st14;
339
- tr91:
340
- #line 40 "src/parser.rl"
341
- {
342
- if(!apply_element(parser, MONGREL_CONTENT_LENGTH, PTR_TO(mark), p, 20))
343
- {p++; cs = 14; goto _out;}
344
- set_content_length(parser, PTR_TO(mark), LEN(mark, p));
345
- }
346
- goto st14;
347
- tr98:
348
- #line 21 "src/parser.rl"
349
- {MARK(mark, p); }
350
- #line 46 "src/parser.rl"
351
- {
352
- if(!apply_element(parser, MONGREL_CONTENT_TYPE, PTR_TO(mark), p, 10*1024))
353
- {p++; cs = 14; goto _out;}
354
- }
355
- goto st14;
356
- tr101:
357
- #line 46 "src/parser.rl"
358
- {
359
- if(!apply_element(parser, MONGREL_CONTENT_TYPE, PTR_TO(mark), p, 10*1024))
360
- {p++; cs = 14; goto _out;}
361
- }
362
- goto st14;
363
- st14:
364
- if ( ++p == pe )
365
- goto _test_eof14;
366
- case 14:
367
- #line 368 "src/parser.c"
368
- if ( (*p) == 10 )
369
- goto st15;
370
- goto st0;
371
- st15:
372
- if ( ++p == pe )
373
- goto _test_eof15;
374
- case 15:
375
- switch( (*p) ) {
376
- case 13: goto st16;
377
- case 33: goto tr21;
378
- case 67: goto tr22;
379
- case 99: goto tr22;
380
- case 124: goto tr21;
381
- case 126: goto tr21;
382
- }
383
- if ( (*p) < 45 ) {
384
- if ( (*p) > 39 ) {
385
- if ( 42 <= (*p) && (*p) <= 43 )
386
- goto tr21;
387
- } else if ( (*p) >= 35 )
388
- goto tr21;
389
- } else if ( (*p) > 46 ) {
390
- if ( (*p) < 65 ) {
391
- if ( 48 <= (*p) && (*p) <= 57 )
392
- goto tr21;
393
- } else if ( (*p) > 90 ) {
394
- if ( 94 <= (*p) && (*p) <= 122 )
395
- goto tr21;
396
- } else
397
- goto tr21;
398
- } else
399
- goto tr21;
400
- goto st0;
401
- st16:
402
- if ( ++p == pe )
403
- goto _test_eof16;
404
- case 16:
405
- if ( (*p) == 10 )
406
- goto tr23;
407
- goto st0;
408
- tr23:
409
- #line 82 "src/parser.rl"
410
- {
411
- parser->body_start = p - buffer + 1;
412
- {p++; cs = 118; goto _out;}
413
- }
414
- goto st118;
415
- st118:
416
- if ( ++p == pe )
417
- goto _test_eof118;
418
- case 118:
419
- #line 420 "src/parser.c"
420
- goto st0;
421
- tr21:
422
- #line 23 "src/parser.rl"
423
- { MARK(field_start, p); }
424
- goto st17;
425
- st17:
426
- if ( ++p == pe )
427
- goto _test_eof17;
428
- case 17:
429
- #line 430 "src/parser.c"
430
- switch( (*p) ) {
431
- case 33: goto st17;
432
- case 58: goto tr25;
433
- case 67: goto st40;
434
- case 99: goto st40;
435
- case 124: goto st17;
436
- case 126: goto st17;
437
- }
438
- if ( (*p) < 45 ) {
439
- if ( (*p) > 39 ) {
440
- if ( 42 <= (*p) && (*p) <= 43 )
441
- goto st17;
442
- } else if ( (*p) >= 35 )
443
- goto st17;
444
- } else if ( (*p) > 46 ) {
445
- if ( (*p) < 65 ) {
446
- if ( 48 <= (*p) && (*p) <= 57 )
447
- goto st17;
448
- } else if ( (*p) > 90 ) {
449
- if ( 94 <= (*p) && (*p) <= 122 )
450
- goto st17;
451
- } else
452
- goto st17;
453
- } else
454
- goto st17;
455
- goto st0;
456
- tr25:
457
- #line 24 "src/parser.rl"
458
- {
459
- parser->field_len = LEN(field_start, p);
460
- if(parser->field_len > 256) {
461
- parser->overflow_error = TRUE;
462
- {p++; cs = 18; goto _out;}
463
- }
464
- }
465
- goto st18;
466
- tr29:
467
- #line 32 "src/parser.rl"
468
- { MARK(mark, p); }
469
- goto st18;
470
- st18:
471
- if ( ++p == pe )
472
- goto _test_eof18;
473
- case 18:
474
- #line 475 "src/parser.c"
475
- switch( (*p) ) {
476
- case 13: goto tr28;
477
- case 32: goto tr29;
478
- case 67: goto tr30;
479
- case 99: goto tr30;
480
- }
481
- goto tr27;
482
- tr27:
483
- #line 32 "src/parser.rl"
484
- { MARK(mark, p); }
485
- goto st19;
486
- st19:
487
- if ( ++p == pe )
488
- goto _test_eof19;
489
- case 19:
490
- #line 491 "src/parser.c"
491
- switch( (*p) ) {
492
- case 13: goto tr32;
493
- case 67: goto st20;
494
- case 99: goto st20;
495
- }
496
- goto st19;
497
- tr30:
498
- #line 32 "src/parser.rl"
499
- { MARK(mark, p); }
500
- goto st20;
501
- st20:
502
- if ( ++p == pe )
503
- goto _test_eof20;
504
- case 20:
505
- #line 506 "src/parser.c"
506
- switch( (*p) ) {
507
- case 13: goto tr32;
508
- case 67: goto st20;
509
- case 79: goto st21;
510
- case 99: goto st20;
511
- case 111: goto st21;
512
- }
513
- goto st19;
514
- st21:
515
- if ( ++p == pe )
516
- goto _test_eof21;
517
- case 21:
518
- switch( (*p) ) {
519
- case 13: goto tr32;
520
- case 67: goto st20;
521
- case 78: goto st22;
522
- case 99: goto st20;
523
- case 110: goto st22;
524
- }
525
- goto st19;
526
- st22:
527
- if ( ++p == pe )
528
- goto _test_eof22;
529
- case 22:
530
- switch( (*p) ) {
531
- case 13: goto tr32;
532
- case 67: goto st20;
533
- case 84: goto st23;
534
- case 99: goto st20;
535
- case 116: goto st23;
536
- }
537
- goto st19;
538
- st23:
539
- if ( ++p == pe )
540
- goto _test_eof23;
541
- case 23:
542
- switch( (*p) ) {
543
- case 13: goto tr32;
544
- case 67: goto st20;
545
- case 69: goto st24;
546
- case 99: goto st20;
547
- case 101: goto st24;
548
- }
549
- goto st19;
550
- st24:
551
- if ( ++p == pe )
552
- goto _test_eof24;
553
- case 24:
554
- switch( (*p) ) {
555
- case 13: goto tr32;
556
- case 67: goto st20;
557
- case 78: goto st25;
558
- case 99: goto st20;
559
- case 110: goto st25;
560
- }
561
- goto st19;
562
- st25:
563
- if ( ++p == pe )
564
- goto _test_eof25;
565
- case 25:
566
- switch( (*p) ) {
567
- case 13: goto tr32;
568
- case 67: goto st20;
569
- case 84: goto st26;
570
- case 99: goto st20;
571
- case 116: goto st26;
572
- }
573
- goto st19;
574
- st26:
575
- if ( ++p == pe )
576
- goto _test_eof26;
577
- case 26:
578
- switch( (*p) ) {
579
- case 13: goto tr32;
580
- case 45: goto st27;
581
- case 67: goto st20;
582
- case 99: goto st20;
583
- }
584
- goto st19;
585
- st27:
586
- if ( ++p == pe )
587
- goto _test_eof27;
588
- case 27:
589
- switch( (*p) ) {
590
- case 13: goto tr32;
591
- case 67: goto st20;
592
- case 76: goto st28;
593
- case 84: goto st36;
594
- case 99: goto st20;
595
- case 108: goto st28;
596
- case 116: goto st36;
597
- }
598
- goto st19;
599
- st28:
600
- if ( ++p == pe )
601
- goto _test_eof28;
602
- case 28:
603
- switch( (*p) ) {
604
- case 13: goto tr32;
605
- case 67: goto st20;
606
- case 69: goto st29;
607
- case 99: goto st20;
608
- case 101: goto st29;
609
- }
610
- goto st19;
611
- st29:
612
- if ( ++p == pe )
613
- goto _test_eof29;
614
- case 29:
615
- switch( (*p) ) {
616
- case 13: goto tr32;
617
- case 67: goto st20;
618
- case 78: goto st30;
619
- case 99: goto st20;
620
- case 110: goto st30;
621
- }
622
- goto st19;
623
- st30:
624
- if ( ++p == pe )
625
- goto _test_eof30;
626
- case 30:
627
- switch( (*p) ) {
628
- case 13: goto tr32;
629
- case 67: goto st20;
630
- case 71: goto st31;
631
- case 99: goto st20;
632
- case 103: goto st31;
633
- }
634
- goto st19;
635
- st31:
636
- if ( ++p == pe )
637
- goto _test_eof31;
638
- case 31:
639
- switch( (*p) ) {
640
- case 13: goto tr32;
641
- case 67: goto st20;
642
- case 84: goto st32;
643
- case 99: goto st20;
644
- case 116: goto st32;
645
- }
646
- goto st19;
647
- st32:
648
- if ( ++p == pe )
649
- goto _test_eof32;
650
- case 32:
651
- switch( (*p) ) {
652
- case 13: goto tr32;
653
- case 67: goto st20;
654
- case 72: goto st33;
655
- case 99: goto st20;
656
- case 104: goto st33;
657
- }
658
- goto st19;
659
- st33:
660
- if ( ++p == pe )
661
- goto _test_eof33;
662
- case 33:
663
- switch( (*p) ) {
664
- case 13: goto tr32;
665
- case 58: goto st34;
666
- case 67: goto st20;
667
- case 99: goto st20;
668
- }
669
- goto st19;
670
- st34:
671
- if ( ++p == pe )
672
- goto _test_eof34;
673
- case 34:
674
- switch( (*p) ) {
675
- case 13: goto tr32;
676
- case 32: goto st34;
677
- case 67: goto st20;
678
- case 99: goto st20;
679
- }
680
- if ( 48 <= (*p) && (*p) <= 57 )
681
- goto tr49;
682
- goto st19;
683
- tr49:
684
- #line 21 "src/parser.rl"
685
- {MARK(mark, p); }
686
- goto st35;
687
- tr70:
688
- #line 32 "src/parser.rl"
689
- { MARK(mark, p); }
690
- #line 21 "src/parser.rl"
691
- {MARK(mark, p); }
692
- goto st35;
693
- st35:
694
- if ( ++p == pe )
695
- goto _test_eof35;
696
- case 35:
697
- #line 698 "src/parser.c"
698
- switch( (*p) ) {
699
- case 13: goto st0;
700
- case 67: goto st20;
701
- case 99: goto st20;
702
- }
703
- if ( 48 <= (*p) && (*p) <= 57 )
704
- goto st35;
705
- goto st19;
706
- st36:
707
- if ( ++p == pe )
708
- goto _test_eof36;
709
- case 36:
710
- switch( (*p) ) {
711
- case 13: goto tr32;
712
- case 67: goto st20;
713
- case 89: goto st37;
714
- case 99: goto st20;
715
- case 121: goto st37;
716
- }
717
- goto st19;
718
- st37:
719
- if ( ++p == pe )
720
- goto _test_eof37;
721
- case 37:
722
- switch( (*p) ) {
723
- case 13: goto tr32;
724
- case 67: goto st20;
725
- case 80: goto st38;
726
- case 99: goto st20;
727
- case 112: goto st38;
728
- }
729
- goto st19;
730
- st38:
731
- if ( ++p == pe )
732
- goto _test_eof38;
733
- case 38:
734
- switch( (*p) ) {
735
- case 13: goto tr32;
736
- case 67: goto st20;
737
- case 69: goto st39;
738
- case 99: goto st20;
739
- case 101: goto st39;
740
- }
741
- goto st19;
742
- st39:
743
- if ( ++p == pe )
744
- goto _test_eof39;
745
- case 39:
746
- switch( (*p) ) {
747
- case 13: goto tr32;
748
- case 58: goto st0;
749
- case 67: goto st20;
750
- case 99: goto st20;
751
- }
752
- goto st19;
753
- st40:
754
- if ( ++p == pe )
755
- goto _test_eof40;
756
- case 40:
757
- switch( (*p) ) {
758
- case 33: goto st17;
759
- case 58: goto tr25;
760
- case 67: goto st40;
761
- case 79: goto st41;
762
- case 99: goto st40;
763
- case 111: goto st41;
764
- case 124: goto st17;
765
- case 126: goto st17;
766
- }
767
- if ( (*p) < 45 ) {
768
- if ( (*p) > 39 ) {
769
- if ( 42 <= (*p) && (*p) <= 43 )
770
- goto st17;
771
- } else if ( (*p) >= 35 )
772
- goto st17;
773
- } else if ( (*p) > 46 ) {
774
- if ( (*p) < 65 ) {
775
- if ( 48 <= (*p) && (*p) <= 57 )
776
- goto st17;
777
- } else if ( (*p) > 90 ) {
778
- if ( 94 <= (*p) && (*p) <= 122 )
779
- goto st17;
780
- } else
781
- goto st17;
782
- } else
783
- goto st17;
784
- goto st0;
785
- st41:
786
- if ( ++p == pe )
787
- goto _test_eof41;
788
- case 41:
789
- switch( (*p) ) {
790
- case 33: goto st17;
791
- case 58: goto tr25;
792
- case 67: goto st40;
793
- case 78: goto st42;
794
- case 99: goto st40;
795
- case 110: goto st42;
796
- case 124: goto st17;
797
- case 126: goto st17;
798
- }
799
- if ( (*p) < 45 ) {
800
- if ( (*p) > 39 ) {
801
- if ( 42 <= (*p) && (*p) <= 43 )
802
- goto st17;
803
- } else if ( (*p) >= 35 )
804
- goto st17;
805
- } else if ( (*p) > 46 ) {
806
- if ( (*p) < 65 ) {
807
- if ( 48 <= (*p) && (*p) <= 57 )
808
- goto st17;
809
- } else if ( (*p) > 90 ) {
810
- if ( 94 <= (*p) && (*p) <= 122 )
811
- goto st17;
812
- } else
813
- goto st17;
814
- } else
815
- goto st17;
816
- goto st0;
817
- st42:
818
- if ( ++p == pe )
819
- goto _test_eof42;
820
- case 42:
821
- switch( (*p) ) {
822
- case 33: goto st17;
823
- case 58: goto tr25;
824
- case 67: goto st40;
825
- case 84: goto st43;
826
- case 99: goto st40;
827
- case 116: goto st43;
828
- case 124: goto st17;
829
- case 126: goto st17;
830
- }
831
- if ( (*p) < 45 ) {
832
- if ( (*p) > 39 ) {
833
- if ( 42 <= (*p) && (*p) <= 43 )
834
- goto st17;
835
- } else if ( (*p) >= 35 )
836
- goto st17;
837
- } else if ( (*p) > 46 ) {
838
- if ( (*p) < 65 ) {
839
- if ( 48 <= (*p) && (*p) <= 57 )
840
- goto st17;
841
- } else if ( (*p) > 90 ) {
842
- if ( 94 <= (*p) && (*p) <= 122 )
843
- goto st17;
844
- } else
845
- goto st17;
846
- } else
847
- goto st17;
848
- goto st0;
849
- st43:
850
- if ( ++p == pe )
851
- goto _test_eof43;
852
- case 43:
853
- switch( (*p) ) {
854
- case 33: goto st17;
855
- case 58: goto tr25;
856
- case 67: goto st40;
857
- case 69: goto st44;
858
- case 99: goto st40;
859
- case 101: goto st44;
860
- case 124: goto st17;
861
- case 126: goto st17;
862
- }
863
- if ( (*p) < 45 ) {
864
- if ( (*p) > 39 ) {
865
- if ( 42 <= (*p) && (*p) <= 43 )
866
- goto st17;
867
- } else if ( (*p) >= 35 )
868
- goto st17;
869
- } else if ( (*p) > 46 ) {
870
- if ( (*p) < 65 ) {
871
- if ( 48 <= (*p) && (*p) <= 57 )
872
- goto st17;
873
- } else if ( (*p) > 90 ) {
874
- if ( 94 <= (*p) && (*p) <= 122 )
875
- goto st17;
876
- } else
877
- goto st17;
878
- } else
879
- goto st17;
880
- goto st0;
881
- st44:
882
- if ( ++p == pe )
883
- goto _test_eof44;
884
- case 44:
885
- switch( (*p) ) {
886
- case 33: goto st17;
887
- case 58: goto tr25;
888
- case 67: goto st40;
889
- case 78: goto st45;
890
- case 99: goto st40;
891
- case 110: goto st45;
892
- case 124: goto st17;
893
- case 126: goto st17;
894
- }
895
- if ( (*p) < 45 ) {
896
- if ( (*p) > 39 ) {
897
- if ( 42 <= (*p) && (*p) <= 43 )
898
- goto st17;
899
- } else if ( (*p) >= 35 )
900
- goto st17;
901
- } else if ( (*p) > 46 ) {
902
- if ( (*p) < 65 ) {
903
- if ( 48 <= (*p) && (*p) <= 57 )
904
- goto st17;
905
- } else if ( (*p) > 90 ) {
906
- if ( 94 <= (*p) && (*p) <= 122 )
907
- goto st17;
908
- } else
909
- goto st17;
910
- } else
911
- goto st17;
912
- goto st0;
913
- st45:
914
- if ( ++p == pe )
915
- goto _test_eof45;
916
- case 45:
917
- switch( (*p) ) {
918
- case 33: goto st17;
919
- case 58: goto tr25;
920
- case 67: goto st40;
921
- case 84: goto st46;
922
- case 99: goto st40;
923
- case 116: goto st46;
924
- case 124: goto st17;
925
- case 126: goto st17;
926
- }
927
- if ( (*p) < 45 ) {
928
- if ( (*p) > 39 ) {
929
- if ( 42 <= (*p) && (*p) <= 43 )
930
- goto st17;
931
- } else if ( (*p) >= 35 )
932
- goto st17;
933
- } else if ( (*p) > 46 ) {
934
- if ( (*p) < 65 ) {
935
- if ( 48 <= (*p) && (*p) <= 57 )
936
- goto st17;
937
- } else if ( (*p) > 90 ) {
938
- if ( 94 <= (*p) && (*p) <= 122 )
939
- goto st17;
940
- } else
941
- goto st17;
942
- } else
943
- goto st17;
944
- goto st0;
945
- st46:
946
- if ( ++p == pe )
947
- goto _test_eof46;
948
- case 46:
949
- switch( (*p) ) {
950
- case 33: goto st17;
951
- case 45: goto st47;
952
- case 46: goto st17;
953
- case 58: goto tr25;
954
- case 67: goto st40;
955
- case 99: goto st40;
956
- case 124: goto st17;
957
- case 126: goto st17;
958
- }
959
- if ( (*p) < 48 ) {
960
- if ( (*p) > 39 ) {
961
- if ( 42 <= (*p) && (*p) <= 43 )
962
- goto st17;
963
- } else if ( (*p) >= 35 )
964
- goto st17;
965
- } else if ( (*p) > 57 ) {
966
- if ( (*p) > 90 ) {
967
- if ( 94 <= (*p) && (*p) <= 122 )
968
- goto st17;
969
- } else if ( (*p) >= 65 )
970
- goto st17;
971
- } else
972
- goto st17;
973
- goto st0;
974
- st47:
975
- if ( ++p == pe )
976
- goto _test_eof47;
977
- case 47:
978
- switch( (*p) ) {
979
- case 33: goto st17;
980
- case 58: goto tr25;
981
- case 67: goto st40;
982
- case 76: goto st48;
983
- case 84: goto st55;
984
- case 99: goto st40;
985
- case 108: goto st48;
986
- case 116: goto st55;
987
- case 124: goto st17;
988
- case 126: goto st17;
989
- }
990
- if ( (*p) < 45 ) {
991
- if ( (*p) > 39 ) {
992
- if ( 42 <= (*p) && (*p) <= 43 )
993
- goto st17;
994
- } else if ( (*p) >= 35 )
995
- goto st17;
996
- } else if ( (*p) > 46 ) {
997
- if ( (*p) < 65 ) {
998
- if ( 48 <= (*p) && (*p) <= 57 )
999
- goto st17;
1000
- } else if ( (*p) > 90 ) {
1001
- if ( 94 <= (*p) && (*p) <= 122 )
1002
- goto st17;
1003
- } else
1004
- goto st17;
1005
- } else
1006
- goto st17;
1007
- goto st0;
1008
- st48:
1009
- if ( ++p == pe )
1010
- goto _test_eof48;
1011
- case 48:
1012
- switch( (*p) ) {
1013
- case 33: goto st17;
1014
- case 58: goto tr25;
1015
- case 67: goto st40;
1016
- case 69: goto st49;
1017
- case 99: goto st40;
1018
- case 101: goto st49;
1019
- case 124: goto st17;
1020
- case 126: goto st17;
1021
- }
1022
- if ( (*p) < 45 ) {
1023
- if ( (*p) > 39 ) {
1024
- if ( 42 <= (*p) && (*p) <= 43 )
1025
- goto st17;
1026
- } else if ( (*p) >= 35 )
1027
- goto st17;
1028
- } else if ( (*p) > 46 ) {
1029
- if ( (*p) < 65 ) {
1030
- if ( 48 <= (*p) && (*p) <= 57 )
1031
- goto st17;
1032
- } else if ( (*p) > 90 ) {
1033
- if ( 94 <= (*p) && (*p) <= 122 )
1034
- goto st17;
1035
- } else
1036
- goto st17;
1037
- } else
1038
- goto st17;
1039
- goto st0;
1040
- st49:
1041
- if ( ++p == pe )
1042
- goto _test_eof49;
1043
- case 49:
1044
- switch( (*p) ) {
1045
- case 33: goto st17;
1046
- case 58: goto tr25;
1047
- case 67: goto st40;
1048
- case 78: goto st50;
1049
- case 99: goto st40;
1050
- case 110: goto st50;
1051
- case 124: goto st17;
1052
- case 126: goto st17;
1053
- }
1054
- if ( (*p) < 45 ) {
1055
- if ( (*p) > 39 ) {
1056
- if ( 42 <= (*p) && (*p) <= 43 )
1057
- goto st17;
1058
- } else if ( (*p) >= 35 )
1059
- goto st17;
1060
- } else if ( (*p) > 46 ) {
1061
- if ( (*p) < 65 ) {
1062
- if ( 48 <= (*p) && (*p) <= 57 )
1063
- goto st17;
1064
- } else if ( (*p) > 90 ) {
1065
- if ( 94 <= (*p) && (*p) <= 122 )
1066
- goto st17;
1067
- } else
1068
- goto st17;
1069
- } else
1070
- goto st17;
1071
- goto st0;
1072
- st50:
1073
- if ( ++p == pe )
1074
- goto _test_eof50;
1075
- case 50:
1076
- switch( (*p) ) {
1077
- case 33: goto st17;
1078
- case 58: goto tr25;
1079
- case 67: goto st40;
1080
- case 71: goto st51;
1081
- case 99: goto st40;
1082
- case 103: goto st51;
1083
- case 124: goto st17;
1084
- case 126: goto st17;
1085
- }
1086
- if ( (*p) < 45 ) {
1087
- if ( (*p) > 39 ) {
1088
- if ( 42 <= (*p) && (*p) <= 43 )
1089
- goto st17;
1090
- } else if ( (*p) >= 35 )
1091
- goto st17;
1092
- } else if ( (*p) > 46 ) {
1093
- if ( (*p) < 65 ) {
1094
- if ( 48 <= (*p) && (*p) <= 57 )
1095
- goto st17;
1096
- } else if ( (*p) > 90 ) {
1097
- if ( 94 <= (*p) && (*p) <= 122 )
1098
- goto st17;
1099
- } else
1100
- goto st17;
1101
- } else
1102
- goto st17;
1103
- goto st0;
1104
- st51:
1105
- if ( ++p == pe )
1106
- goto _test_eof51;
1107
- case 51:
1108
- switch( (*p) ) {
1109
- case 33: goto st17;
1110
- case 58: goto tr25;
1111
- case 67: goto st40;
1112
- case 84: goto st52;
1113
- case 99: goto st40;
1114
- case 116: goto st52;
1115
- case 124: goto st17;
1116
- case 126: goto st17;
1117
- }
1118
- if ( (*p) < 45 ) {
1119
- if ( (*p) > 39 ) {
1120
- if ( 42 <= (*p) && (*p) <= 43 )
1121
- goto st17;
1122
- } else if ( (*p) >= 35 )
1123
- goto st17;
1124
- } else if ( (*p) > 46 ) {
1125
- if ( (*p) < 65 ) {
1126
- if ( 48 <= (*p) && (*p) <= 57 )
1127
- goto st17;
1128
- } else if ( (*p) > 90 ) {
1129
- if ( 94 <= (*p) && (*p) <= 122 )
1130
- goto st17;
1131
- } else
1132
- goto st17;
1133
- } else
1134
- goto st17;
1135
- goto st0;
1136
- st52:
1137
- if ( ++p == pe )
1138
- goto _test_eof52;
1139
- case 52:
1140
- switch( (*p) ) {
1141
- case 33: goto st17;
1142
- case 58: goto tr25;
1143
- case 67: goto st40;
1144
- case 72: goto st53;
1145
- case 99: goto st40;
1146
- case 104: goto st53;
1147
- case 124: goto st17;
1148
- case 126: goto st17;
1149
- }
1150
- if ( (*p) < 45 ) {
1151
- if ( (*p) > 39 ) {
1152
- if ( 42 <= (*p) && (*p) <= 43 )
1153
- goto st17;
1154
- } else if ( (*p) >= 35 )
1155
- goto st17;
1156
- } else if ( (*p) > 46 ) {
1157
- if ( (*p) < 65 ) {
1158
- if ( 48 <= (*p) && (*p) <= 57 )
1159
- goto st17;
1160
- } else if ( (*p) > 90 ) {
1161
- if ( 94 <= (*p) && (*p) <= 122 )
1162
- goto st17;
1163
- } else
1164
- goto st17;
1165
- } else
1166
- goto st17;
1167
- goto st0;
1168
- st53:
1169
- if ( ++p == pe )
1170
- goto _test_eof53;
1171
- case 53:
1172
- switch( (*p) ) {
1173
- case 33: goto st17;
1174
- case 58: goto tr68;
1175
- case 67: goto st40;
1176
- case 99: goto st40;
1177
- case 124: goto st17;
1178
- case 126: goto st17;
1179
- }
1180
- if ( (*p) < 45 ) {
1181
- if ( (*p) > 39 ) {
1182
- if ( 42 <= (*p) && (*p) <= 43 )
1183
- goto st17;
1184
- } else if ( (*p) >= 35 )
1185
- goto st17;
1186
- } else if ( (*p) > 46 ) {
1187
- if ( (*p) < 65 ) {
1188
- if ( 48 <= (*p) && (*p) <= 57 )
1189
- goto st17;
1190
- } else if ( (*p) > 90 ) {
1191
- if ( 94 <= (*p) && (*p) <= 122 )
1192
- goto st17;
1193
- } else
1194
- goto st17;
1195
- } else
1196
- goto st17;
1197
- goto st0;
1198
- tr68:
1199
- #line 24 "src/parser.rl"
1200
- {
1201
- parser->field_len = LEN(field_start, p);
1202
- if(parser->field_len > 256) {
1203
- parser->overflow_error = TRUE;
1204
- {p++; cs = 54; goto _out;}
1205
- }
1206
- }
1207
- goto st54;
1208
- tr69:
1209
- #line 32 "src/parser.rl"
1210
- { MARK(mark, p); }
1211
- goto st54;
1212
- st54:
1213
- if ( ++p == pe )
1214
- goto _test_eof54;
1215
- case 54:
1216
- #line 1217 "src/parser.c"
1217
- switch( (*p) ) {
1218
- case 13: goto tr28;
1219
- case 32: goto tr69;
1220
- case 67: goto tr30;
1221
- case 99: goto tr30;
1222
- }
1223
- if ( 48 <= (*p) && (*p) <= 57 )
1224
- goto tr70;
1225
- goto tr27;
1226
- st55:
1227
- if ( ++p == pe )
1228
- goto _test_eof55;
1229
- case 55:
1230
- switch( (*p) ) {
1231
- case 33: goto st17;
1232
- case 58: goto tr25;
1233
- case 67: goto st40;
1234
- case 89: goto st56;
1235
- case 99: goto st40;
1236
- case 121: goto st56;
1237
- case 124: goto st17;
1238
- case 126: goto st17;
1239
- }
1240
- if ( (*p) < 45 ) {
1241
- if ( (*p) > 39 ) {
1242
- if ( 42 <= (*p) && (*p) <= 43 )
1243
- goto st17;
1244
- } else if ( (*p) >= 35 )
1245
- goto st17;
1246
- } else if ( (*p) > 46 ) {
1247
- if ( (*p) < 65 ) {
1248
- if ( 48 <= (*p) && (*p) <= 57 )
1249
- goto st17;
1250
- } else if ( (*p) > 90 ) {
1251
- if ( 94 <= (*p) && (*p) <= 122 )
1252
- goto st17;
1253
- } else
1254
- goto st17;
1255
- } else
1256
- goto st17;
1257
- goto st0;
1258
- st56:
1259
- if ( ++p == pe )
1260
- goto _test_eof56;
1261
- case 56:
1262
- switch( (*p) ) {
1263
- case 33: goto st17;
1264
- case 58: goto tr25;
1265
- case 67: goto st40;
1266
- case 80: goto st57;
1267
- case 99: goto st40;
1268
- case 112: goto st57;
1269
- case 124: goto st17;
1270
- case 126: goto st17;
1271
- }
1272
- if ( (*p) < 45 ) {
1273
- if ( (*p) > 39 ) {
1274
- if ( 42 <= (*p) && (*p) <= 43 )
1275
- goto st17;
1276
- } else if ( (*p) >= 35 )
1277
- goto st17;
1278
- } else if ( (*p) > 46 ) {
1279
- if ( (*p) < 65 ) {
1280
- if ( 48 <= (*p) && (*p) <= 57 )
1281
- goto st17;
1282
- } else if ( (*p) > 90 ) {
1283
- if ( 94 <= (*p) && (*p) <= 122 )
1284
- goto st17;
1285
- } else
1286
- goto st17;
1287
- } else
1288
- goto st17;
1289
- goto st0;
1290
- st57:
1291
- if ( ++p == pe )
1292
- goto _test_eof57;
1293
- case 57:
1294
- switch( (*p) ) {
1295
- case 33: goto st17;
1296
- case 58: goto tr25;
1297
- case 67: goto st40;
1298
- case 69: goto st58;
1299
- case 99: goto st40;
1300
- case 101: goto st58;
1301
- case 124: goto st17;
1302
- case 126: goto st17;
1303
- }
1304
- if ( (*p) < 45 ) {
1305
- if ( (*p) > 39 ) {
1306
- if ( 42 <= (*p) && (*p) <= 43 )
1307
- goto st17;
1308
- } else if ( (*p) >= 35 )
1309
- goto st17;
1310
- } else if ( (*p) > 46 ) {
1311
- if ( (*p) < 65 ) {
1312
- if ( 48 <= (*p) && (*p) <= 57 )
1313
- goto st17;
1314
- } else if ( (*p) > 90 ) {
1315
- if ( 94 <= (*p) && (*p) <= 122 )
1316
- goto st17;
1317
- } else
1318
- goto st17;
1319
- } else
1320
- goto st17;
1321
- goto st0;
1322
- st58:
1323
- if ( ++p == pe )
1324
- goto _test_eof58;
1325
- case 58:
1326
- switch( (*p) ) {
1327
- case 33: goto st17;
1328
- case 67: goto st40;
1329
- case 99: goto st40;
1330
- case 124: goto st17;
1331
- case 126: goto st17;
1332
- }
1333
- if ( (*p) < 45 ) {
1334
- if ( (*p) > 39 ) {
1335
- if ( 42 <= (*p) && (*p) <= 43 )
1336
- goto st17;
1337
- } else if ( (*p) >= 35 )
1338
- goto st17;
1339
- } else if ( (*p) > 46 ) {
1340
- if ( (*p) < 65 ) {
1341
- if ( 48 <= (*p) && (*p) <= 57 )
1342
- goto st17;
1343
- } else if ( (*p) > 90 ) {
1344
- if ( 94 <= (*p) && (*p) <= 122 )
1345
- goto st17;
1346
- } else
1347
- goto st17;
1348
- } else
1349
- goto st17;
1350
- goto st0;
1351
- tr22:
1352
- #line 23 "src/parser.rl"
1353
- { MARK(field_start, p); }
1354
- goto st59;
1355
- st59:
1356
- if ( ++p == pe )
1357
- goto _test_eof59;
1358
- case 59:
1359
- #line 1360 "src/parser.c"
1360
- switch( (*p) ) {
1361
- case 33: goto st17;
1362
- case 58: goto tr25;
1363
- case 67: goto st40;
1364
- case 79: goto st60;
1365
- case 99: goto st40;
1366
- case 111: goto st60;
1367
- case 124: goto st17;
1368
- case 126: goto st17;
1369
- }
1370
- if ( (*p) < 45 ) {
1371
- if ( (*p) > 39 ) {
1372
- if ( 42 <= (*p) && (*p) <= 43 )
1373
- goto st17;
1374
- } else if ( (*p) >= 35 )
1375
- goto st17;
1376
- } else if ( (*p) > 46 ) {
1377
- if ( (*p) < 65 ) {
1378
- if ( 48 <= (*p) && (*p) <= 57 )
1379
- goto st17;
1380
- } else if ( (*p) > 90 ) {
1381
- if ( 94 <= (*p) && (*p) <= 122 )
1382
- goto st17;
1383
- } else
1384
- goto st17;
1385
- } else
1386
- goto st17;
1387
- goto st0;
1388
- st60:
1389
- if ( ++p == pe )
1390
- goto _test_eof60;
1391
- case 60:
1392
- switch( (*p) ) {
1393
- case 33: goto st17;
1394
- case 58: goto tr25;
1395
- case 67: goto st40;
1396
- case 78: goto st61;
1397
- case 99: goto st40;
1398
- case 110: goto st61;
1399
- case 124: goto st17;
1400
- case 126: goto st17;
1401
- }
1402
- if ( (*p) < 45 ) {
1403
- if ( (*p) > 39 ) {
1404
- if ( 42 <= (*p) && (*p) <= 43 )
1405
- goto st17;
1406
- } else if ( (*p) >= 35 )
1407
- goto st17;
1408
- } else if ( (*p) > 46 ) {
1409
- if ( (*p) < 65 ) {
1410
- if ( 48 <= (*p) && (*p) <= 57 )
1411
- goto st17;
1412
- } else if ( (*p) > 90 ) {
1413
- if ( 94 <= (*p) && (*p) <= 122 )
1414
- goto st17;
1415
- } else
1416
- goto st17;
1417
- } else
1418
- goto st17;
1419
- goto st0;
1420
- st61:
1421
- if ( ++p == pe )
1422
- goto _test_eof61;
1423
- case 61:
1424
- switch( (*p) ) {
1425
- case 33: goto st17;
1426
- case 58: goto tr25;
1427
- case 67: goto st40;
1428
- case 84: goto st62;
1429
- case 99: goto st40;
1430
- case 116: goto st62;
1431
- case 124: goto st17;
1432
- case 126: goto st17;
1433
- }
1434
- if ( (*p) < 45 ) {
1435
- if ( (*p) > 39 ) {
1436
- if ( 42 <= (*p) && (*p) <= 43 )
1437
- goto st17;
1438
- } else if ( (*p) >= 35 )
1439
- goto st17;
1440
- } else if ( (*p) > 46 ) {
1441
- if ( (*p) < 65 ) {
1442
- if ( 48 <= (*p) && (*p) <= 57 )
1443
- goto st17;
1444
- } else if ( (*p) > 90 ) {
1445
- if ( 94 <= (*p) && (*p) <= 122 )
1446
- goto st17;
1447
- } else
1448
- goto st17;
1449
- } else
1450
- goto st17;
1451
- goto st0;
1452
- st62:
1453
- if ( ++p == pe )
1454
- goto _test_eof62;
1455
- case 62:
1456
- switch( (*p) ) {
1457
- case 33: goto st17;
1458
- case 58: goto tr25;
1459
- case 67: goto st40;
1460
- case 69: goto st63;
1461
- case 99: goto st40;
1462
- case 101: goto st63;
1463
- case 124: goto st17;
1464
- case 126: goto st17;
1465
- }
1466
- if ( (*p) < 45 ) {
1467
- if ( (*p) > 39 ) {
1468
- if ( 42 <= (*p) && (*p) <= 43 )
1469
- goto st17;
1470
- } else if ( (*p) >= 35 )
1471
- goto st17;
1472
- } else if ( (*p) > 46 ) {
1473
- if ( (*p) < 65 ) {
1474
- if ( 48 <= (*p) && (*p) <= 57 )
1475
- goto st17;
1476
- } else if ( (*p) > 90 ) {
1477
- if ( 94 <= (*p) && (*p) <= 122 )
1478
- goto st17;
1479
- } else
1480
- goto st17;
1481
- } else
1482
- goto st17;
1483
- goto st0;
1484
- st63:
1485
- if ( ++p == pe )
1486
- goto _test_eof63;
1487
- case 63:
1488
- switch( (*p) ) {
1489
- case 33: goto st17;
1490
- case 58: goto tr25;
1491
- case 67: goto st40;
1492
- case 78: goto st64;
1493
- case 99: goto st40;
1494
- case 110: goto st64;
1495
- case 124: goto st17;
1496
- case 126: goto st17;
1497
- }
1498
- if ( (*p) < 45 ) {
1499
- if ( (*p) > 39 ) {
1500
- if ( 42 <= (*p) && (*p) <= 43 )
1501
- goto st17;
1502
- } else if ( (*p) >= 35 )
1503
- goto st17;
1504
- } else if ( (*p) > 46 ) {
1505
- if ( (*p) < 65 ) {
1506
- if ( 48 <= (*p) && (*p) <= 57 )
1507
- goto st17;
1508
- } else if ( (*p) > 90 ) {
1509
- if ( 94 <= (*p) && (*p) <= 122 )
1510
- goto st17;
1511
- } else
1512
- goto st17;
1513
- } else
1514
- goto st17;
1515
- goto st0;
1516
- st64:
1517
- if ( ++p == pe )
1518
- goto _test_eof64;
1519
- case 64:
1520
- switch( (*p) ) {
1521
- case 33: goto st17;
1522
- case 58: goto tr25;
1523
- case 67: goto st40;
1524
- case 84: goto st65;
1525
- case 99: goto st40;
1526
- case 116: goto st65;
1527
- case 124: goto st17;
1528
- case 126: goto st17;
1529
- }
1530
- if ( (*p) < 45 ) {
1531
- if ( (*p) > 39 ) {
1532
- if ( 42 <= (*p) && (*p) <= 43 )
1533
- goto st17;
1534
- } else if ( (*p) >= 35 )
1535
- goto st17;
1536
- } else if ( (*p) > 46 ) {
1537
- if ( (*p) < 65 ) {
1538
- if ( 48 <= (*p) && (*p) <= 57 )
1539
- goto st17;
1540
- } else if ( (*p) > 90 ) {
1541
- if ( 94 <= (*p) && (*p) <= 122 )
1542
- goto st17;
1543
- } else
1544
- goto st17;
1545
- } else
1546
- goto st17;
1547
- goto st0;
1548
- st65:
1549
- if ( ++p == pe )
1550
- goto _test_eof65;
1551
- case 65:
1552
- switch( (*p) ) {
1553
- case 33: goto st17;
1554
- case 45: goto st66;
1555
- case 46: goto st17;
1556
- case 58: goto tr25;
1557
- case 67: goto st40;
1558
- case 99: goto st40;
1559
- case 124: goto st17;
1560
- case 126: goto st17;
1561
- }
1562
- if ( (*p) < 48 ) {
1563
- if ( (*p) > 39 ) {
1564
- if ( 42 <= (*p) && (*p) <= 43 )
1565
- goto st17;
1566
- } else if ( (*p) >= 35 )
1567
- goto st17;
1568
- } else if ( (*p) > 57 ) {
1569
- if ( (*p) > 90 ) {
1570
- if ( 94 <= (*p) && (*p) <= 122 )
1571
- goto st17;
1572
- } else if ( (*p) >= 65 )
1573
- goto st17;
1574
- } else
1575
- goto st17;
1576
- goto st0;
1577
- st66:
1578
- if ( ++p == pe )
1579
- goto _test_eof66;
1580
- case 66:
1581
- switch( (*p) ) {
1582
- case 33: goto st17;
1583
- case 58: goto tr25;
1584
- case 67: goto st40;
1585
- case 76: goto st67;
1586
- case 84: goto st75;
1587
- case 99: goto st40;
1588
- case 108: goto st67;
1589
- case 116: goto st75;
1590
- case 124: goto st17;
1591
- case 126: goto st17;
1592
- }
1593
- if ( (*p) < 45 ) {
1594
- if ( (*p) > 39 ) {
1595
- if ( 42 <= (*p) && (*p) <= 43 )
1596
- goto st17;
1597
- } else if ( (*p) >= 35 )
1598
- goto st17;
1599
- } else if ( (*p) > 46 ) {
1600
- if ( (*p) < 65 ) {
1601
- if ( 48 <= (*p) && (*p) <= 57 )
1602
- goto st17;
1603
- } else if ( (*p) > 90 ) {
1604
- if ( 94 <= (*p) && (*p) <= 122 )
1605
- goto st17;
1606
- } else
1607
- goto st17;
1608
- } else
1609
- goto st17;
1610
- goto st0;
1611
- st67:
1612
- if ( ++p == pe )
1613
- goto _test_eof67;
1614
- case 67:
1615
- switch( (*p) ) {
1616
- case 33: goto st17;
1617
- case 58: goto tr25;
1618
- case 67: goto st40;
1619
- case 69: goto st68;
1620
- case 99: goto st40;
1621
- case 101: goto st68;
1622
- case 124: goto st17;
1623
- case 126: goto st17;
1624
- }
1625
- if ( (*p) < 45 ) {
1626
- if ( (*p) > 39 ) {
1627
- if ( 42 <= (*p) && (*p) <= 43 )
1628
- goto st17;
1629
- } else if ( (*p) >= 35 )
1630
- goto st17;
1631
- } else if ( (*p) > 46 ) {
1632
- if ( (*p) < 65 ) {
1633
- if ( 48 <= (*p) && (*p) <= 57 )
1634
- goto st17;
1635
- } else if ( (*p) > 90 ) {
1636
- if ( 94 <= (*p) && (*p) <= 122 )
1637
- goto st17;
1638
- } else
1639
- goto st17;
1640
- } else
1641
- goto st17;
1642
- goto st0;
1643
- st68:
1644
- if ( ++p == pe )
1645
- goto _test_eof68;
1646
- case 68:
1647
- switch( (*p) ) {
1648
- case 33: goto st17;
1649
- case 58: goto tr25;
1650
- case 67: goto st40;
1651
- case 78: goto st69;
1652
- case 99: goto st40;
1653
- case 110: goto st69;
1654
- case 124: goto st17;
1655
- case 126: goto st17;
1656
- }
1657
- if ( (*p) < 45 ) {
1658
- if ( (*p) > 39 ) {
1659
- if ( 42 <= (*p) && (*p) <= 43 )
1660
- goto st17;
1661
- } else if ( (*p) >= 35 )
1662
- goto st17;
1663
- } else if ( (*p) > 46 ) {
1664
- if ( (*p) < 65 ) {
1665
- if ( 48 <= (*p) && (*p) <= 57 )
1666
- goto st17;
1667
- } else if ( (*p) > 90 ) {
1668
- if ( 94 <= (*p) && (*p) <= 122 )
1669
- goto st17;
1670
- } else
1671
- goto st17;
1672
- } else
1673
- goto st17;
1674
- goto st0;
1675
- st69:
1676
- if ( ++p == pe )
1677
- goto _test_eof69;
1678
- case 69:
1679
- switch( (*p) ) {
1680
- case 33: goto st17;
1681
- case 58: goto tr25;
1682
- case 67: goto st40;
1683
- case 71: goto st70;
1684
- case 99: goto st40;
1685
- case 103: goto st70;
1686
- case 124: goto st17;
1687
- case 126: goto st17;
1688
- }
1689
- if ( (*p) < 45 ) {
1690
- if ( (*p) > 39 ) {
1691
- if ( 42 <= (*p) && (*p) <= 43 )
1692
- goto st17;
1693
- } else if ( (*p) >= 35 )
1694
- goto st17;
1695
- } else if ( (*p) > 46 ) {
1696
- if ( (*p) < 65 ) {
1697
- if ( 48 <= (*p) && (*p) <= 57 )
1698
- goto st17;
1699
- } else if ( (*p) > 90 ) {
1700
- if ( 94 <= (*p) && (*p) <= 122 )
1701
- goto st17;
1702
- } else
1703
- goto st17;
1704
- } else
1705
- goto st17;
1706
- goto st0;
1707
- st70:
1708
- if ( ++p == pe )
1709
- goto _test_eof70;
1710
- case 70:
1711
- switch( (*p) ) {
1712
- case 33: goto st17;
1713
- case 58: goto tr25;
1714
- case 67: goto st40;
1715
- case 84: goto st71;
1716
- case 99: goto st40;
1717
- case 116: goto st71;
1718
- case 124: goto st17;
1719
- case 126: goto st17;
1720
- }
1721
- if ( (*p) < 45 ) {
1722
- if ( (*p) > 39 ) {
1723
- if ( 42 <= (*p) && (*p) <= 43 )
1724
- goto st17;
1725
- } else if ( (*p) >= 35 )
1726
- goto st17;
1727
- } else if ( (*p) > 46 ) {
1728
- if ( (*p) < 65 ) {
1729
- if ( 48 <= (*p) && (*p) <= 57 )
1730
- goto st17;
1731
- } else if ( (*p) > 90 ) {
1732
- if ( 94 <= (*p) && (*p) <= 122 )
1733
- goto st17;
1734
- } else
1735
- goto st17;
1736
- } else
1737
- goto st17;
1738
- goto st0;
1739
- st71:
1740
- if ( ++p == pe )
1741
- goto _test_eof71;
1742
- case 71:
1743
- switch( (*p) ) {
1744
- case 33: goto st17;
1745
- case 58: goto tr25;
1746
- case 67: goto st40;
1747
- case 72: goto st72;
1748
- case 99: goto st40;
1749
- case 104: goto st72;
1750
- case 124: goto st17;
1751
- case 126: goto st17;
1752
- }
1753
- if ( (*p) < 45 ) {
1754
- if ( (*p) > 39 ) {
1755
- if ( 42 <= (*p) && (*p) <= 43 )
1756
- goto st17;
1757
- } else if ( (*p) >= 35 )
1758
- goto st17;
1759
- } else if ( (*p) > 46 ) {
1760
- if ( (*p) < 65 ) {
1761
- if ( 48 <= (*p) && (*p) <= 57 )
1762
- goto st17;
1763
- } else if ( (*p) > 90 ) {
1764
- if ( 94 <= (*p) && (*p) <= 122 )
1765
- goto st17;
1766
- } else
1767
- goto st17;
1768
- } else
1769
- goto st17;
1770
- goto st0;
1771
- st72:
1772
- if ( ++p == pe )
1773
- goto _test_eof72;
1774
- case 72:
1775
- switch( (*p) ) {
1776
- case 33: goto st17;
1777
- case 58: goto tr88;
1778
- case 67: goto st40;
1779
- case 99: goto st40;
1780
- case 124: goto st17;
1781
- case 126: goto st17;
1782
- }
1783
- if ( (*p) < 45 ) {
1784
- if ( (*p) > 39 ) {
1785
- if ( 42 <= (*p) && (*p) <= 43 )
1786
- goto st17;
1787
- } else if ( (*p) >= 35 )
1788
- goto st17;
1789
- } else if ( (*p) > 46 ) {
1790
- if ( (*p) < 65 ) {
1791
- if ( 48 <= (*p) && (*p) <= 57 )
1792
- goto st17;
1793
- } else if ( (*p) > 90 ) {
1794
- if ( 94 <= (*p) && (*p) <= 122 )
1795
- goto st17;
1796
- } else
1797
- goto st17;
1798
- } else
1799
- goto st17;
1800
- goto st0;
1801
- tr88:
1802
- #line 24 "src/parser.rl"
1803
- {
1804
- parser->field_len = LEN(field_start, p);
1805
- if(parser->field_len > 256) {
1806
- parser->overflow_error = TRUE;
1807
- {p++; cs = 73; goto _out;}
1808
- }
1809
- }
1810
- goto st73;
1811
- tr89:
1812
- #line 32 "src/parser.rl"
1813
- { MARK(mark, p); }
1814
- goto st73;
1815
- st73:
1816
- if ( ++p == pe )
1817
- goto _test_eof73;
1818
- case 73:
1819
- #line 1820 "src/parser.c"
1820
- switch( (*p) ) {
1821
- case 13: goto tr28;
1822
- case 32: goto tr89;
1823
- case 67: goto tr30;
1824
- case 99: goto tr30;
1825
- }
1826
- if ( 48 <= (*p) && (*p) <= 57 )
1827
- goto tr90;
1828
- goto tr27;
1829
- tr90:
1830
- #line 21 "src/parser.rl"
1831
- {MARK(mark, p); }
1832
- #line 32 "src/parser.rl"
1833
- { MARK(mark, p); }
1834
- goto st74;
1835
- st74:
1836
- if ( ++p == pe )
1837
- goto _test_eof74;
1838
- case 74:
1839
- #line 1840 "src/parser.c"
1840
- switch( (*p) ) {
1841
- case 13: goto tr91;
1842
- case 67: goto st20;
1843
- case 99: goto st20;
1844
- }
1845
- if ( 48 <= (*p) && (*p) <= 57 )
1846
- goto st74;
1847
- goto st19;
1848
- st75:
1849
- if ( ++p == pe )
1850
- goto _test_eof75;
1851
- case 75:
1852
- switch( (*p) ) {
1853
- case 33: goto st17;
1854
- case 58: goto tr25;
1855
- case 67: goto st40;
1856
- case 89: goto st76;
1857
- case 99: goto st40;
1858
- case 121: goto st76;
1859
- case 124: goto st17;
1860
- case 126: goto st17;
1861
- }
1862
- if ( (*p) < 45 ) {
1863
- if ( (*p) > 39 ) {
1864
- if ( 42 <= (*p) && (*p) <= 43 )
1865
- goto st17;
1866
- } else if ( (*p) >= 35 )
1867
- goto st17;
1868
- } else if ( (*p) > 46 ) {
1869
- if ( (*p) < 65 ) {
1870
- if ( 48 <= (*p) && (*p) <= 57 )
1871
- goto st17;
1872
- } else if ( (*p) > 90 ) {
1873
- if ( 94 <= (*p) && (*p) <= 122 )
1874
- goto st17;
1875
- } else
1876
- goto st17;
1877
- } else
1878
- goto st17;
1879
- goto st0;
1880
- st76:
1881
- if ( ++p == pe )
1882
- goto _test_eof76;
1883
- case 76:
1884
- switch( (*p) ) {
1885
- case 33: goto st17;
1886
- case 58: goto tr25;
1887
- case 67: goto st40;
1888
- case 80: goto st77;
1889
- case 99: goto st40;
1890
- case 112: goto st77;
1891
- case 124: goto st17;
1892
- case 126: goto st17;
1893
- }
1894
- if ( (*p) < 45 ) {
1895
- if ( (*p) > 39 ) {
1896
- if ( 42 <= (*p) && (*p) <= 43 )
1897
- goto st17;
1898
- } else if ( (*p) >= 35 )
1899
- goto st17;
1900
- } else if ( (*p) > 46 ) {
1901
- if ( (*p) < 65 ) {
1902
- if ( 48 <= (*p) && (*p) <= 57 )
1903
- goto st17;
1904
- } else if ( (*p) > 90 ) {
1905
- if ( 94 <= (*p) && (*p) <= 122 )
1906
- goto st17;
1907
- } else
1908
- goto st17;
1909
- } else
1910
- goto st17;
1911
- goto st0;
1912
- st77:
1913
- if ( ++p == pe )
1914
- goto _test_eof77;
1915
- case 77:
1916
- switch( (*p) ) {
1917
- case 33: goto st17;
1918
- case 58: goto tr25;
1919
- case 67: goto st40;
1920
- case 69: goto st78;
1921
- case 99: goto st40;
1922
- case 101: goto st78;
1923
- case 124: goto st17;
1924
- case 126: goto st17;
1925
- }
1926
- if ( (*p) < 45 ) {
1927
- if ( (*p) > 39 ) {
1928
- if ( 42 <= (*p) && (*p) <= 43 )
1929
- goto st17;
1930
- } else if ( (*p) >= 35 )
1931
- goto st17;
1932
- } else if ( (*p) > 46 ) {
1933
- if ( (*p) < 65 ) {
1934
- if ( 48 <= (*p) && (*p) <= 57 )
1935
- goto st17;
1936
- } else if ( (*p) > 90 ) {
1937
- if ( 94 <= (*p) && (*p) <= 122 )
1938
- goto st17;
1939
- } else
1940
- goto st17;
1941
- } else
1942
- goto st17;
1943
- goto st0;
1944
- st78:
1945
- if ( ++p == pe )
1946
- goto _test_eof78;
1947
- case 78:
1948
- switch( (*p) ) {
1949
- case 33: goto st17;
1950
- case 58: goto st79;
1951
- case 67: goto st40;
1952
- case 99: goto st40;
1953
- case 124: goto st17;
1954
- case 126: goto st17;
1955
- }
1956
- if ( (*p) < 45 ) {
1957
- if ( (*p) > 39 ) {
1958
- if ( 42 <= (*p) && (*p) <= 43 )
1959
- goto st17;
1960
- } else if ( (*p) >= 35 )
1961
- goto st17;
1962
- } else if ( (*p) > 46 ) {
1963
- if ( (*p) < 65 ) {
1964
- if ( 48 <= (*p) && (*p) <= 57 )
1965
- goto st17;
1966
- } else if ( (*p) > 90 ) {
1967
- if ( 94 <= (*p) && (*p) <= 122 )
1968
- goto st17;
1969
- } else
1970
- goto st17;
1971
- } else
1972
- goto st17;
1973
- goto st0;
1974
- tr99:
1975
- #line 21 "src/parser.rl"
1976
- {MARK(mark, p); }
1977
- goto st79;
1978
- st79:
1979
- if ( ++p == pe )
1980
- goto _test_eof79;
1981
- case 79:
1982
- #line 1983 "src/parser.c"
1983
- switch( (*p) ) {
1984
- case 13: goto tr98;
1985
- case 32: goto tr99;
1986
- }
1987
- goto tr97;
1988
- tr97:
1989
- #line 21 "src/parser.rl"
1990
- {MARK(mark, p); }
1991
- goto st80;
1992
- st80:
1993
- if ( ++p == pe )
1994
- goto _test_eof80;
1995
- case 80:
1996
- #line 1997 "src/parser.c"
1997
- if ( (*p) == 13 )
1998
- goto tr101;
1999
- goto st80;
2000
- tr9:
2001
- #line 71 "src/parser.rl"
2002
- {
2003
- if(!apply_element(parser, MONGREL_REQUEST_URI, PTR_TO(mark), p, 12*1024))
2004
- {p++; cs = 81; goto _out;}
2005
- }
2006
- goto st81;
2007
- tr115:
2008
- #line 61 "src/parser.rl"
2009
- {
2010
- if(!apply_element(parser, MONGREL_REQUEST_PATH, PTR_TO(mark), p, 1024))
2011
- {p++; cs = 81; goto _out;}
2012
- }
2013
- #line 71 "src/parser.rl"
2014
- {
2015
- if(!apply_element(parser, MONGREL_REQUEST_URI, PTR_TO(mark), p, 12*1024))
2016
- {p++; cs = 81; goto _out;}
2017
- }
2018
- goto st81;
2019
- tr126:
2020
- #line 76 "src/parser.rl"
2021
- {MARK(query_start, p); }
2022
- #line 77 "src/parser.rl"
2023
- {
2024
- if(!apply_element(parser, MONGREL_QUERY_STRING, PTR_TO(query_start), p, 10*1024))
2025
- {p++; cs = 81; goto _out;}
2026
- }
2027
- #line 71 "src/parser.rl"
2028
- {
2029
- if(!apply_element(parser, MONGREL_REQUEST_URI, PTR_TO(mark), p, 12*1024))
2030
- {p++; cs = 81; goto _out;}
2031
- }
2032
- goto st81;
2033
- tr130:
2034
- #line 77 "src/parser.rl"
2035
- {
2036
- if(!apply_element(parser, MONGREL_QUERY_STRING, PTR_TO(query_start), p, 10*1024))
2037
- {p++; cs = 81; goto _out;}
2038
- }
2039
- #line 71 "src/parser.rl"
2040
- {
2041
- if(!apply_element(parser, MONGREL_REQUEST_URI, PTR_TO(mark), p, 12*1024))
2042
- {p++; cs = 81; goto _out;}
2043
- }
2044
- goto st81;
2045
- st81:
2046
- if ( ++p == pe )
2047
- goto _test_eof81;
2048
- case 81:
2049
- #line 2050 "src/parser.c"
2050
- switch( (*p) ) {
2051
- case 32: goto tr103;
2052
- case 37: goto tr104;
2053
- case 60: goto st0;
2054
- case 62: goto st0;
2055
- case 127: goto st0;
2056
- }
2057
- if ( (*p) > 31 ) {
2058
- if ( 34 <= (*p) && (*p) <= 35 )
2059
- goto st0;
2060
- } else if ( (*p) >= 0 )
2061
- goto st0;
2062
- goto tr102;
2063
- tr102:
2064
- #line 21 "src/parser.rl"
2065
- {MARK(mark, p); }
2066
- goto st82;
2067
- st82:
2068
- if ( ++p == pe )
2069
- goto _test_eof82;
2070
- case 82:
2071
- #line 2072 "src/parser.c"
2072
- switch( (*p) ) {
2073
- case 32: goto tr106;
2074
- case 37: goto st83;
2075
- case 60: goto st0;
2076
- case 62: goto st0;
2077
- case 127: goto st0;
2078
- }
2079
- if ( (*p) > 31 ) {
2080
- if ( 34 <= (*p) && (*p) <= 35 )
2081
- goto st0;
2082
- } else if ( (*p) >= 0 )
2083
- goto st0;
2084
- goto st82;
2085
- tr104:
2086
- #line 21 "src/parser.rl"
2087
- {MARK(mark, p); }
2088
- goto st83;
2089
- st83:
2090
- if ( ++p == pe )
2091
- goto _test_eof83;
2092
- case 83:
2093
- #line 2094 "src/parser.c"
2094
- if ( (*p) < 65 ) {
2095
- if ( 48 <= (*p) && (*p) <= 57 )
2096
- goto st84;
2097
- } else if ( (*p) > 70 ) {
2098
- if ( 97 <= (*p) && (*p) <= 102 )
2099
- goto st84;
2100
- } else
2101
- goto st84;
2102
- goto st0;
2103
- st84:
2104
- if ( ++p == pe )
2105
- goto _test_eof84;
2106
- case 84:
2107
- if ( (*p) < 65 ) {
2108
- if ( 48 <= (*p) && (*p) <= 57 )
2109
- goto st82;
2110
- } else if ( (*p) > 70 ) {
2111
- if ( 97 <= (*p) && (*p) <= 102 )
2112
- goto st82;
2113
- } else
2114
- goto st82;
2115
- goto st0;
2116
- tr5:
2117
- #line 21 "src/parser.rl"
2118
- {MARK(mark, p); }
2119
- goto st85;
2120
- st85:
2121
- if ( ++p == pe )
2122
- goto _test_eof85;
2123
- case 85:
2124
- #line 2125 "src/parser.c"
2125
- switch( (*p) ) {
2126
- case 43: goto st85;
2127
- case 58: goto st86;
2128
- }
2129
- if ( (*p) < 48 ) {
2130
- if ( 45 <= (*p) && (*p) <= 46 )
2131
- goto st85;
2132
- } else if ( (*p) > 57 ) {
2133
- if ( (*p) > 90 ) {
2134
- if ( 97 <= (*p) && (*p) <= 122 )
2135
- goto st85;
2136
- } else if ( (*p) >= 65 )
2137
- goto st85;
2138
- } else
2139
- goto st85;
2140
- goto st0;
2141
- tr7:
2142
- #line 21 "src/parser.rl"
2143
- {MARK(mark, p); }
2144
- goto st86;
2145
- st86:
2146
- if ( ++p == pe )
2147
- goto _test_eof86;
2148
- case 86:
2149
- #line 2150 "src/parser.c"
2150
- switch( (*p) ) {
2151
- case 32: goto tr8;
2152
- case 34: goto st0;
2153
- case 35: goto tr9;
2154
- case 37: goto st87;
2155
- case 60: goto st0;
2156
- case 62: goto st0;
2157
- case 127: goto st0;
2158
- }
2159
- if ( 0 <= (*p) && (*p) <= 31 )
2160
- goto st0;
2161
- goto st86;
2162
- st87:
2163
- if ( ++p == pe )
2164
- goto _test_eof87;
2165
- case 87:
2166
- if ( (*p) < 65 ) {
2167
- if ( 48 <= (*p) && (*p) <= 57 )
2168
- goto st88;
2169
- } else if ( (*p) > 70 ) {
2170
- if ( 97 <= (*p) && (*p) <= 102 )
2171
- goto st88;
2172
- } else
2173
- goto st88;
2174
- goto st0;
2175
- st88:
2176
- if ( ++p == pe )
2177
- goto _test_eof88;
2178
- case 88:
2179
- if ( (*p) < 65 ) {
2180
- if ( 48 <= (*p) && (*p) <= 57 )
2181
- goto st86;
2182
- } else if ( (*p) > 70 ) {
2183
- if ( 97 <= (*p) && (*p) <= 102 )
2184
- goto st86;
2185
- } else
2186
- goto st86;
2187
- goto st0;
2188
- tr6:
2189
- #line 21 "src/parser.rl"
2190
- {MARK(mark, p); }
2191
- goto st89;
2192
- st89:
2193
- if ( ++p == pe )
2194
- goto _test_eof89;
2195
- case 89:
2196
- #line 2197 "src/parser.c"
2197
- switch( (*p) ) {
2198
- case 32: goto tr114;
2199
- case 34: goto st0;
2200
- case 35: goto tr115;
2201
- case 37: goto st90;
2202
- case 59: goto tr117;
2203
- case 60: goto st0;
2204
- case 62: goto st0;
2205
- case 63: goto tr118;
2206
- case 127: goto st0;
2207
- }
2208
- if ( 0 <= (*p) && (*p) <= 31 )
2209
- goto st0;
2210
- goto st89;
2211
- st90:
2212
- if ( ++p == pe )
2213
- goto _test_eof90;
2214
- case 90:
2215
- if ( (*p) < 65 ) {
2216
- if ( 48 <= (*p) && (*p) <= 57 )
2217
- goto st91;
2218
- } else if ( (*p) > 70 ) {
2219
- if ( 97 <= (*p) && (*p) <= 102 )
2220
- goto st91;
2221
- } else
2222
- goto st91;
2223
- goto st0;
2224
- st91:
2225
- if ( ++p == pe )
2226
- goto _test_eof91;
2227
- case 91:
2228
- if ( (*p) < 65 ) {
2229
- if ( 48 <= (*p) && (*p) <= 57 )
2230
- goto st89;
2231
- } else if ( (*p) > 70 ) {
2232
- if ( 97 <= (*p) && (*p) <= 102 )
2233
- goto st89;
2234
- } else
2235
- goto st89;
2236
- goto st0;
2237
- tr117:
2238
- #line 61 "src/parser.rl"
2239
- {
2240
- if(!apply_element(parser, MONGREL_REQUEST_PATH, PTR_TO(mark), p, 1024))
2241
- {p++; cs = 92; goto _out;}
2242
- }
2243
- goto st92;
2244
- st92:
2245
- if ( ++p == pe )
2246
- goto _test_eof92;
2247
- case 92:
2248
- #line 2249 "src/parser.c"
2249
- switch( (*p) ) {
2250
- case 32: goto tr8;
2251
- case 34: goto st0;
2252
- case 35: goto tr9;
2253
- case 37: goto st93;
2254
- case 60: goto st0;
2255
- case 62: goto st0;
2256
- case 63: goto st95;
2257
- case 127: goto st0;
2258
- }
2259
- if ( 0 <= (*p) && (*p) <= 31 )
2260
- goto st0;
2261
- goto st92;
2262
- st93:
2263
- if ( ++p == pe )
2264
- goto _test_eof93;
2265
- case 93:
2266
- if ( (*p) < 65 ) {
2267
- if ( 48 <= (*p) && (*p) <= 57 )
2268
- goto st94;
2269
- } else if ( (*p) > 70 ) {
2270
- if ( 97 <= (*p) && (*p) <= 102 )
2271
- goto st94;
2272
- } else
2273
- goto st94;
2274
- goto st0;
2275
- st94:
2276
- if ( ++p == pe )
2277
- goto _test_eof94;
2278
- case 94:
2279
- if ( (*p) < 65 ) {
2280
- if ( 48 <= (*p) && (*p) <= 57 )
2281
- goto st92;
2282
- } else if ( (*p) > 70 ) {
2283
- if ( 97 <= (*p) && (*p) <= 102 )
2284
- goto st92;
2285
- } else
2286
- goto st92;
2287
- goto st0;
2288
- tr118:
2289
- #line 61 "src/parser.rl"
2290
- {
2291
- if(!apply_element(parser, MONGREL_REQUEST_PATH, PTR_TO(mark), p, 1024))
2292
- {p++; cs = 95; goto _out;}
2293
- }
2294
- goto st95;
2295
- st95:
2296
- if ( ++p == pe )
2297
- goto _test_eof95;
2298
- case 95:
2299
- #line 2300 "src/parser.c"
2300
- switch( (*p) ) {
2301
- case 32: goto tr125;
2302
- case 34: goto st0;
2303
- case 35: goto tr126;
2304
- case 37: goto tr127;
2305
- case 60: goto st0;
2306
- case 62: goto st0;
2307
- case 127: goto st0;
2308
- }
2309
- if ( 0 <= (*p) && (*p) <= 31 )
2310
- goto st0;
2311
- goto tr124;
2312
- tr124:
2313
- #line 76 "src/parser.rl"
2314
- {MARK(query_start, p); }
2315
- goto st96;
2316
- st96:
2317
- if ( ++p == pe )
2318
- goto _test_eof96;
2319
- case 96:
2320
- #line 2321 "src/parser.c"
2321
- switch( (*p) ) {
2322
- case 32: goto tr129;
2323
- case 34: goto st0;
2324
- case 35: goto tr130;
2325
- case 37: goto st97;
2326
- case 60: goto st0;
2327
- case 62: goto st0;
2328
- case 127: goto st0;
2329
- }
2330
- if ( 0 <= (*p) && (*p) <= 31 )
2331
- goto st0;
2332
- goto st96;
2333
- tr127:
2334
- #line 76 "src/parser.rl"
2335
- {MARK(query_start, p); }
2336
- goto st97;
2337
- st97:
2338
- if ( ++p == pe )
2339
- goto _test_eof97;
2340
- case 97:
2341
- #line 2342 "src/parser.c"
2342
- if ( (*p) < 65 ) {
2343
- if ( 48 <= (*p) && (*p) <= 57 )
2344
- goto st98;
2345
- } else if ( (*p) > 70 ) {
2346
- if ( 97 <= (*p) && (*p) <= 102 )
2347
- goto st98;
2348
- } else
2349
- goto st98;
2350
- goto st0;
2351
- st98:
2352
- if ( ++p == pe )
2353
- goto _test_eof98;
2354
- case 98:
2355
- if ( (*p) < 65 ) {
2356
- if ( 48 <= (*p) && (*p) <= 57 )
2357
- goto st96;
2358
- } else if ( (*p) > 70 ) {
2359
- if ( 97 <= (*p) && (*p) <= 102 )
2360
- goto st96;
2361
- } else
2362
- goto st96;
2363
- goto st0;
2364
- st99:
2365
- if ( ++p == pe )
2366
- goto _test_eof99;
2367
- case 99:
2368
- switch( (*p) ) {
2369
- case 32: goto tr2;
2370
- case 36: goto st100;
2371
- case 95: goto st100;
2372
- }
2373
- if ( (*p) < 48 ) {
2374
- if ( 45 <= (*p) && (*p) <= 46 )
2375
- goto st100;
2376
- } else if ( (*p) > 57 ) {
2377
- if ( 65 <= (*p) && (*p) <= 90 )
2378
- goto st100;
2379
- } else
2380
- goto st100;
2381
- goto st0;
2382
- st100:
2383
- if ( ++p == pe )
2384
- goto _test_eof100;
2385
- case 100:
2386
- switch( (*p) ) {
2387
- case 32: goto tr2;
2388
- case 36: goto st101;
2389
- case 95: goto st101;
2390
- }
2391
- if ( (*p) < 48 ) {
2392
- if ( 45 <= (*p) && (*p) <= 46 )
2393
- goto st101;
2394
- } else if ( (*p) > 57 ) {
2395
- if ( 65 <= (*p) && (*p) <= 90 )
2396
- goto st101;
2397
- } else
2398
- goto st101;
2399
- goto st0;
2400
- st101:
2401
- if ( ++p == pe )
2402
- goto _test_eof101;
2403
- case 101:
2404
- switch( (*p) ) {
2405
- case 32: goto tr2;
2406
- case 36: goto st102;
2407
- case 95: goto st102;
2408
- }
2409
- if ( (*p) < 48 ) {
2410
- if ( 45 <= (*p) && (*p) <= 46 )
2411
- goto st102;
2412
- } else if ( (*p) > 57 ) {
2413
- if ( 65 <= (*p) && (*p) <= 90 )
2414
- goto st102;
2415
- } else
2416
- goto st102;
2417
- goto st0;
2418
- st102:
2419
- if ( ++p == pe )
2420
- goto _test_eof102;
2421
- case 102:
2422
- switch( (*p) ) {
2423
- case 32: goto tr2;
2424
- case 36: goto st103;
2425
- case 95: goto st103;
2426
- }
2427
- if ( (*p) < 48 ) {
2428
- if ( 45 <= (*p) && (*p) <= 46 )
2429
- goto st103;
2430
- } else if ( (*p) > 57 ) {
2431
- if ( 65 <= (*p) && (*p) <= 90 )
2432
- goto st103;
2433
- } else
2434
- goto st103;
2435
- goto st0;
2436
- st103:
2437
- if ( ++p == pe )
2438
- goto _test_eof103;
2439
- case 103:
2440
- switch( (*p) ) {
2441
- case 32: goto tr2;
2442
- case 36: goto st104;
2443
- case 95: goto st104;
2444
- }
2445
- if ( (*p) < 48 ) {
2446
- if ( 45 <= (*p) && (*p) <= 46 )
2447
- goto st104;
2448
- } else if ( (*p) > 57 ) {
2449
- if ( 65 <= (*p) && (*p) <= 90 )
2450
- goto st104;
2451
- } else
2452
- goto st104;
2453
- goto st0;
2454
- st104:
2455
- if ( ++p == pe )
2456
- goto _test_eof104;
2457
- case 104:
2458
- switch( (*p) ) {
2459
- case 32: goto tr2;
2460
- case 36: goto st105;
2461
- case 95: goto st105;
2462
- }
2463
- if ( (*p) < 48 ) {
2464
- if ( 45 <= (*p) && (*p) <= 46 )
2465
- goto st105;
2466
- } else if ( (*p) > 57 ) {
2467
- if ( 65 <= (*p) && (*p) <= 90 )
2468
- goto st105;
2469
- } else
2470
- goto st105;
2471
- goto st0;
2472
- st105:
2473
- if ( ++p == pe )
2474
- goto _test_eof105;
2475
- case 105:
2476
- switch( (*p) ) {
2477
- case 32: goto tr2;
2478
- case 36: goto st106;
2479
- case 95: goto st106;
2480
- }
2481
- if ( (*p) < 48 ) {
2482
- if ( 45 <= (*p) && (*p) <= 46 )
2483
- goto st106;
2484
- } else if ( (*p) > 57 ) {
2485
- if ( 65 <= (*p) && (*p) <= 90 )
2486
- goto st106;
2487
- } else
2488
- goto st106;
2489
- goto st0;
2490
- st106:
2491
- if ( ++p == pe )
2492
- goto _test_eof106;
2493
- case 106:
2494
- switch( (*p) ) {
2495
- case 32: goto tr2;
2496
- case 36: goto st107;
2497
- case 95: goto st107;
2498
- }
2499
- if ( (*p) < 48 ) {
2500
- if ( 45 <= (*p) && (*p) <= 46 )
2501
- goto st107;
2502
- } else if ( (*p) > 57 ) {
2503
- if ( 65 <= (*p) && (*p) <= 90 )
2504
- goto st107;
2505
- } else
2506
- goto st107;
2507
- goto st0;
2508
- st107:
2509
- if ( ++p == pe )
2510
- goto _test_eof107;
2511
- case 107:
2512
- switch( (*p) ) {
2513
- case 32: goto tr2;
2514
- case 36: goto st108;
2515
- case 95: goto st108;
2516
- }
2517
- if ( (*p) < 48 ) {
2518
- if ( 45 <= (*p) && (*p) <= 46 )
2519
- goto st108;
2520
- } else if ( (*p) > 57 ) {
2521
- if ( 65 <= (*p) && (*p) <= 90 )
2522
- goto st108;
2523
- } else
2524
- goto st108;
2525
- goto st0;
2526
- st108:
2527
- if ( ++p == pe )
2528
- goto _test_eof108;
2529
- case 108:
2530
- switch( (*p) ) {
2531
- case 32: goto tr2;
2532
- case 36: goto st109;
2533
- case 95: goto st109;
2534
- }
2535
- if ( (*p) < 48 ) {
2536
- if ( 45 <= (*p) && (*p) <= 46 )
2537
- goto st109;
2538
- } else if ( (*p) > 57 ) {
2539
- if ( 65 <= (*p) && (*p) <= 90 )
2540
- goto st109;
2541
- } else
2542
- goto st109;
2543
- goto st0;
2544
- st109:
2545
- if ( ++p == pe )
2546
- goto _test_eof109;
2547
- case 109:
2548
- switch( (*p) ) {
2549
- case 32: goto tr2;
2550
- case 36: goto st110;
2551
- case 95: goto st110;
2552
- }
2553
- if ( (*p) < 48 ) {
2554
- if ( 45 <= (*p) && (*p) <= 46 )
2555
- goto st110;
2556
- } else if ( (*p) > 57 ) {
2557
- if ( 65 <= (*p) && (*p) <= 90 )
2558
- goto st110;
2559
- } else
2560
- goto st110;
2561
- goto st0;
2562
- st110:
2563
- if ( ++p == pe )
2564
- goto _test_eof110;
2565
- case 110:
2566
- switch( (*p) ) {
2567
- case 32: goto tr2;
2568
- case 36: goto st111;
2569
- case 95: goto st111;
2570
- }
2571
- if ( (*p) < 48 ) {
2572
- if ( 45 <= (*p) && (*p) <= 46 )
2573
- goto st111;
2574
- } else if ( (*p) > 57 ) {
2575
- if ( 65 <= (*p) && (*p) <= 90 )
2576
- goto st111;
2577
- } else
2578
- goto st111;
2579
- goto st0;
2580
- st111:
2581
- if ( ++p == pe )
2582
- goto _test_eof111;
2583
- case 111:
2584
- switch( (*p) ) {
2585
- case 32: goto tr2;
2586
- case 36: goto st112;
2587
- case 95: goto st112;
2588
- }
2589
- if ( (*p) < 48 ) {
2590
- if ( 45 <= (*p) && (*p) <= 46 )
2591
- goto st112;
2592
- } else if ( (*p) > 57 ) {
2593
- if ( 65 <= (*p) && (*p) <= 90 )
2594
- goto st112;
2595
- } else
2596
- goto st112;
2597
- goto st0;
2598
- st112:
2599
- if ( ++p == pe )
2600
- goto _test_eof112;
2601
- case 112:
2602
- switch( (*p) ) {
2603
- case 32: goto tr2;
2604
- case 36: goto st113;
2605
- case 95: goto st113;
2606
- }
2607
- if ( (*p) < 48 ) {
2608
- if ( 45 <= (*p) && (*p) <= 46 )
2609
- goto st113;
2610
- } else if ( (*p) > 57 ) {
2611
- if ( 65 <= (*p) && (*p) <= 90 )
2612
- goto st113;
2613
- } else
2614
- goto st113;
2615
- goto st0;
2616
- st113:
2617
- if ( ++p == pe )
2618
- goto _test_eof113;
2619
- case 113:
2620
- switch( (*p) ) {
2621
- case 32: goto tr2;
2622
- case 36: goto st114;
2623
- case 95: goto st114;
2624
- }
2625
- if ( (*p) < 48 ) {
2626
- if ( 45 <= (*p) && (*p) <= 46 )
2627
- goto st114;
2628
- } else if ( (*p) > 57 ) {
2629
- if ( 65 <= (*p) && (*p) <= 90 )
2630
- goto st114;
2631
- } else
2632
- goto st114;
2633
- goto st0;
2634
- st114:
2635
- if ( ++p == pe )
2636
- goto _test_eof114;
2637
- case 114:
2638
- switch( (*p) ) {
2639
- case 32: goto tr2;
2640
- case 36: goto st115;
2641
- case 95: goto st115;
2642
- }
2643
- if ( (*p) < 48 ) {
2644
- if ( 45 <= (*p) && (*p) <= 46 )
2645
- goto st115;
2646
- } else if ( (*p) > 57 ) {
2647
- if ( 65 <= (*p) && (*p) <= 90 )
2648
- goto st115;
2649
- } else
2650
- goto st115;
2651
- goto st0;
2652
- st115:
2653
- if ( ++p == pe )
2654
- goto _test_eof115;
2655
- case 115:
2656
- switch( (*p) ) {
2657
- case 32: goto tr2;
2658
- case 36: goto st116;
2659
- case 95: goto st116;
2660
- }
2661
- if ( (*p) < 48 ) {
2662
- if ( 45 <= (*p) && (*p) <= 46 )
2663
- goto st116;
2664
- } else if ( (*p) > 57 ) {
2665
- if ( 65 <= (*p) && (*p) <= 90 )
2666
- goto st116;
2667
- } else
2668
- goto st116;
2669
- goto st0;
2670
- st116:
2671
- if ( ++p == pe )
2672
- goto _test_eof116;
2673
- case 116:
2674
- switch( (*p) ) {
2675
- case 32: goto tr2;
2676
- case 36: goto st117;
2677
- case 95: goto st117;
2678
- }
2679
- if ( (*p) < 48 ) {
2680
- if ( 45 <= (*p) && (*p) <= 46 )
2681
- goto st117;
2682
- } else if ( (*p) > 57 ) {
2683
- if ( 65 <= (*p) && (*p) <= 90 )
2684
- goto st117;
2685
- } else
2686
- goto st117;
2687
- goto st0;
2688
- st117:
2689
- if ( ++p == pe )
2690
- goto _test_eof117;
2691
- case 117:
2692
- if ( (*p) == 32 )
2693
- goto tr2;
2694
- goto st0;
2695
- }
2696
- _test_eof2: cs = 2; goto _test_eof;
2697
- _test_eof3: cs = 3; goto _test_eof;
2698
- _test_eof4: cs = 4; goto _test_eof;
2699
- _test_eof5: cs = 5; goto _test_eof;
2700
- _test_eof6: cs = 6; goto _test_eof;
2701
- _test_eof7: cs = 7; goto _test_eof;
2702
- _test_eof8: cs = 8; goto _test_eof;
2703
- _test_eof9: cs = 9; goto _test_eof;
2704
- _test_eof10: cs = 10; goto _test_eof;
2705
- _test_eof11: cs = 11; goto _test_eof;
2706
- _test_eof12: cs = 12; goto _test_eof;
2707
- _test_eof13: cs = 13; goto _test_eof;
2708
- _test_eof14: cs = 14; goto _test_eof;
2709
- _test_eof15: cs = 15; goto _test_eof;
2710
- _test_eof16: cs = 16; goto _test_eof;
2711
- _test_eof118: cs = 118; goto _test_eof;
2712
- _test_eof17: cs = 17; goto _test_eof;
2713
- _test_eof18: cs = 18; goto _test_eof;
2714
- _test_eof19: cs = 19; goto _test_eof;
2715
- _test_eof20: cs = 20; goto _test_eof;
2716
- _test_eof21: cs = 21; goto _test_eof;
2717
- _test_eof22: cs = 22; goto _test_eof;
2718
- _test_eof23: cs = 23; goto _test_eof;
2719
- _test_eof24: cs = 24; goto _test_eof;
2720
- _test_eof25: cs = 25; goto _test_eof;
2721
- _test_eof26: cs = 26; goto _test_eof;
2722
- _test_eof27: cs = 27; goto _test_eof;
2723
- _test_eof28: cs = 28; goto _test_eof;
2724
- _test_eof29: cs = 29; goto _test_eof;
2725
- _test_eof30: cs = 30; goto _test_eof;
2726
- _test_eof31: cs = 31; goto _test_eof;
2727
- _test_eof32: cs = 32; goto _test_eof;
2728
- _test_eof33: cs = 33; goto _test_eof;
2729
- _test_eof34: cs = 34; goto _test_eof;
2730
- _test_eof35: cs = 35; goto _test_eof;
2731
- _test_eof36: cs = 36; goto _test_eof;
2732
- _test_eof37: cs = 37; goto _test_eof;
2733
- _test_eof38: cs = 38; goto _test_eof;
2734
- _test_eof39: cs = 39; goto _test_eof;
2735
- _test_eof40: cs = 40; goto _test_eof;
2736
- _test_eof41: cs = 41; goto _test_eof;
2737
- _test_eof42: cs = 42; goto _test_eof;
2738
- _test_eof43: cs = 43; goto _test_eof;
2739
- _test_eof44: cs = 44; goto _test_eof;
2740
- _test_eof45: cs = 45; goto _test_eof;
2741
- _test_eof46: cs = 46; goto _test_eof;
2742
- _test_eof47: cs = 47; goto _test_eof;
2743
- _test_eof48: cs = 48; goto _test_eof;
2744
- _test_eof49: cs = 49; goto _test_eof;
2745
- _test_eof50: cs = 50; goto _test_eof;
2746
- _test_eof51: cs = 51; goto _test_eof;
2747
- _test_eof52: cs = 52; goto _test_eof;
2748
- _test_eof53: cs = 53; goto _test_eof;
2749
- _test_eof54: cs = 54; goto _test_eof;
2750
- _test_eof55: cs = 55; goto _test_eof;
2751
- _test_eof56: cs = 56; goto _test_eof;
2752
- _test_eof57: cs = 57; goto _test_eof;
2753
- _test_eof58: cs = 58; goto _test_eof;
2754
- _test_eof59: cs = 59; goto _test_eof;
2755
- _test_eof60: cs = 60; goto _test_eof;
2756
- _test_eof61: cs = 61; goto _test_eof;
2757
- _test_eof62: cs = 62; goto _test_eof;
2758
- _test_eof63: cs = 63; goto _test_eof;
2759
- _test_eof64: cs = 64; goto _test_eof;
2760
- _test_eof65: cs = 65; goto _test_eof;
2761
- _test_eof66: cs = 66; goto _test_eof;
2762
- _test_eof67: cs = 67; goto _test_eof;
2763
- _test_eof68: cs = 68; goto _test_eof;
2764
- _test_eof69: cs = 69; goto _test_eof;
2765
- _test_eof70: cs = 70; goto _test_eof;
2766
- _test_eof71: cs = 71; goto _test_eof;
2767
- _test_eof72: cs = 72; goto _test_eof;
2768
- _test_eof73: cs = 73; goto _test_eof;
2769
- _test_eof74: cs = 74; goto _test_eof;
2770
- _test_eof75: cs = 75; goto _test_eof;
2771
- _test_eof76: cs = 76; goto _test_eof;
2772
- _test_eof77: cs = 77; goto _test_eof;
2773
- _test_eof78: cs = 78; goto _test_eof;
2774
- _test_eof79: cs = 79; goto _test_eof;
2775
- _test_eof80: cs = 80; goto _test_eof;
2776
- _test_eof81: cs = 81; goto _test_eof;
2777
- _test_eof82: cs = 82; goto _test_eof;
2778
- _test_eof83: cs = 83; goto _test_eof;
2779
- _test_eof84: cs = 84; goto _test_eof;
2780
- _test_eof85: cs = 85; goto _test_eof;
2781
- _test_eof86: cs = 86; goto _test_eof;
2782
- _test_eof87: cs = 87; goto _test_eof;
2783
- _test_eof88: cs = 88; goto _test_eof;
2784
- _test_eof89: cs = 89; goto _test_eof;
2785
- _test_eof90: cs = 90; goto _test_eof;
2786
- _test_eof91: cs = 91; goto _test_eof;
2787
- _test_eof92: cs = 92; goto _test_eof;
2788
- _test_eof93: cs = 93; goto _test_eof;
2789
- _test_eof94: cs = 94; goto _test_eof;
2790
- _test_eof95: cs = 95; goto _test_eof;
2791
- _test_eof96: cs = 96; goto _test_eof;
2792
- _test_eof97: cs = 97; goto _test_eof;
2793
- _test_eof98: cs = 98; goto _test_eof;
2794
- _test_eof99: cs = 99; goto _test_eof;
2795
- _test_eof100: cs = 100; goto _test_eof;
2796
- _test_eof101: cs = 101; goto _test_eof;
2797
- _test_eof102: cs = 102; goto _test_eof;
2798
- _test_eof103: cs = 103; goto _test_eof;
2799
- _test_eof104: cs = 104; goto _test_eof;
2800
- _test_eof105: cs = 105; goto _test_eof;
2801
- _test_eof106: cs = 106; goto _test_eof;
2802
- _test_eof107: cs = 107; goto _test_eof;
2803
- _test_eof108: cs = 108; goto _test_eof;
2804
- _test_eof109: cs = 109; goto _test_eof;
2805
- _test_eof110: cs = 110; goto _test_eof;
2806
- _test_eof111: cs = 111; goto _test_eof;
2807
- _test_eof112: cs = 112; goto _test_eof;
2808
- _test_eof113: cs = 113; goto _test_eof;
2809
- _test_eof114: cs = 114; goto _test_eof;
2810
- _test_eof115: cs = 115; goto _test_eof;
2811
- _test_eof116: cs = 116; goto _test_eof;
2812
- _test_eof117: cs = 117; goto _test_eof;
2813
-
2814
- _test_eof: {}
2815
- _out: {}
2816
- }
2817
- #line 197 "src/parser.rl"
2818
-
2819
- parser->cs = cs;
2820
- parser->nread += p - (buffer + off);
2821
-
2822
- assert(p <= pe && "buffer overflow after parsing execute");
2823
- assert(parser->nread <= len && "nread longer than length");
2824
- assert(parser->body_start <= len && "body starts after buffer end");
2825
- assert(parser->mark < len && "mark is after buffer end");
2826
- assert(parser->field_len <= len && "field has length longer than whole buffer");
2827
- assert(parser->field_start < len && "field starts after buffer end");
2828
-
2829
- if(parser->nread > 1024 * (80 + 32))
2830
- parser->overflow_error = TRUE;
2831
-
2832
-
2833
- /* Ragel 6 does not use write eof; no need for this
2834
- if(parser->body_start) {
2835
- // final \r\n combo encountered so stop right here
2836
- parser->nread++;
2837
- %% write eof;
2838
- }
2839
- */
2840
-
2841
- return(parser->nread);
2842
- }
2843
-
2844
- int http_parser_finish(http_parser *parser)
2845
- {
2846
- if (http_parser_has_error(parser))
2847
- return -1;
2848
- else if (http_parser_is_finished(parser))
2849
- return 1;
2850
- else
2851
- return 0;
2852
- }
2853
-
2854
- int http_parser_has_error(http_parser *parser) {
2855
- return parser->cs == http_parser_error || parser->overflow_error;
2856
- }
2857
-
2858
- int http_parser_is_finished(http_parser *parser) {
2859
- return parser->cs >= http_parser_first_final;
2860
- }