--- a/parser.c Mon Oct 17 09:12:00 2011 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2146 +0,0 @@
-
-#line 1 "parser.rl"
-/* vim: set noet nosta sw=4 ts=4 ft=ragel : */
-/*
-Copyright (c) 2011, Mahlon E. Smith <mahlon@martini.nu>
-All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- * Neither the name of Mahlon E. Smith nor the names of his
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include "volta.h"
-
-
-#line 141 "parser.rl"
-
-
-#line 40 "parser.c"
-static const int redirector_start = 1;
-static const int redirector_first_final = 85;
-static const int redirector_error = 0;
-
-static const int redirector_en_main = 1;
-
-
-#line 143 "parser.rl"
-
-/*
- * Tokenize an incoming line from squid, returning a parsed and populated
- * structure to make redirection decisions against. This pointer should
- * be freed using cleanup_request() after use.
- *
- * Squid documentation about redirectors:
- * ---------------------------------------------------------------------------
- * TAG: url_rewrite_program
- * Specify the location of the executable for the URL rewriter.
- * Since they can perform almost any function there isn't one included.
- *
- * For each requested URL rewriter will receive on line with the format
- *
- * URL <SP> client_ip "/" fqdn <SP> user <SP> method [<SP> kvpairs]<NL>
- *
- * In the future, the rewriter interface will be extended with
- * key=value pairs ("kvpairs" shown above). Rewriter programs
- * should be prepared to receive and possibly ignore additional
- * whitespace-separated tokens on each input line.
- *
- * And the rewriter may return a rewritten URL. The other components of
- * the request line does not need to be returned (ignored if they are).
- *
- * The rewriter can also indicate that a client-side redirect should
- * be performed to the new URL. This is done by prefixing the returned
- * URL with "301:" (moved permanently) or 302: (moved temporarily).
- *
- * By default, a URL rewriter is not used.
- * ---------------------------------------------------------------------------
-*/
-request *
-parse( char *line )
-{
- /* machine required vars */
- int cs = 0;
- char *p = line;
- char *pe = p + strlen(p);
- char *eof = NULL;
-
- /* the client request pointer */
- unsigned char valid = 0;
- request *p_request = init_request();
-
- /* enter state machine */
-
-#line 95 "parser.c"
- {
- cs = redirector_start;
- }
-
-#line 189 "parser.rl"
-
-#line 102 "parser.c"
- {
- if ( p == pe )
- goto _test_eof;
- switch ( cs )
- {
-case 1:
- if ( (*p) < 65 ) {
- if ( 48 <= (*p) && (*p) <= 57 )
- goto tr1;
- } else if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto tr2;
- } else
- goto tr2;
- goto tr0;
-tr0:
-#line 46 "parser.rl"
- { debug( 3, LOC, "Unable to parse scheme.\n" ); }
-#line 50 "parser.rl"
- { debug( 3, LOC, "Unable to parse hostname.\n" ); }
-#line 37 "parser.rl"
- { valid = 0; }
- goto st0;
-tr3:
-#line 37 "parser.rl"
- { valid = 0; }
- goto st0;
-tr11:
-#line 46 "parser.rl"
- { debug( 3, LOC, "Unable to parse scheme.\n" ); }
-#line 50 "parser.rl"
- { debug( 3, LOC, "Unable to parse hostname.\n" ); }
-#line 64 "parser.rl"
- { debug( 3, LOC, "Unable to parse the client IP address.\n" ); }
-#line 37 "parser.rl"
- { valid = 0; }
- goto st0;
-tr14:
-#line 64 "parser.rl"
- { debug( 3, LOC, "Unable to parse the client IP address.\n" ); }
-#line 37 "parser.rl"
- { valid = 0; }
- goto st0;
-tr35:
-#line 60 "parser.rl"
- { debug( 3, LOC, "Unable to parse method.\n" ); }
-#line 37 "parser.rl"
- { valid = 0; }
- goto st0;
-tr49:
-#line 50 "parser.rl"
- { debug( 3, LOC, "Unable to parse hostname.\n" ); }
-#line 37 "parser.rl"
- { valid = 0; }
- goto st0;
-tr92:
-#line 46 "parser.rl"
- { debug( 3, LOC, "Unable to parse scheme.\n" ); }
-#line 37 "parser.rl"
- { valid = 0; }
- goto st0;
-#line 164 "parser.c"
-st0:
-cs = 0;
- goto _out;
-tr1:
-#line 48 "parser.rl"
- { p_request->tokens.host_start = p; }
- goto st2;
-st2:
- if ( ++p == pe )
- goto _test_eof2;
-case 2:
-#line 176 "parser.c"
- switch( (*p) ) {
- case 32: goto tr4;
- case 45: goto st32;
- case 46: goto st34;
- case 47: goto tr7;
- case 58: goto tr9;
- case 95: goto st32;
- }
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr4;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st33;
- } else if ( (*p) >= 65 )
- goto st33;
- } else
- goto st2;
- goto tr3;
-tr4:
-#line 49 "parser.rl"
- { p_request->tokens.host_length = p - ( *pe + p_request->tokens.host_start ); }
-#line 55 "parser.rl"
- { p_request->tokens.path_start = p; }
-#line 56 "parser.rl"
- { p_request->tokens.path_length = p - ( *pe + p_request->tokens.path_start ); }
- goto st3;
-st3:
- if ( ++p == pe )
- goto _test_eof3;
-case 3:
-#line 209 "parser.c"
- if ( (*p) < 65 ) {
- if ( 48 <= (*p) && (*p) <= 57 )
- goto tr12;
- } else if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto tr13;
- } else
- goto tr13;
- goto tr11;
-tr12:
-#line 39 "parser.rl"
- {
- debug( 1, LOC, "Channel ID found in redirector input. Set 'url_rewrite_concurrency' to '0' in squid.\n" );
- {p++; cs = 4; goto _out;}
- }
-#line 48 "parser.rl"
- { p_request->tokens.host_start = p; }
-#line 62 "parser.rl"
- { p_request->tokens.c_ip_start = p; }
- goto st4;
-st4:
- if ( ++p == pe )
- goto _test_eof4;
-case 4:
-#line 234 "parser.c"
- switch( (*p) ) {
- case 32: goto tr15;
- case 45: goto st32;
- case 46: goto st42;
- case 47: goto tr7;
- case 58: goto tr9;
- case 95: goto st32;
- }
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr15;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st33;
- } else if ( (*p) >= 65 )
- goto st33;
- } else
- goto st75;
- goto tr14;
-tr15:
-#line 49 "parser.rl"
- { p_request->tokens.host_length = p - ( *pe + p_request->tokens.host_start ); }
-#line 55 "parser.rl"
- { p_request->tokens.path_start = p; }
-#line 56 "parser.rl"
- { p_request->tokens.path_length = p - ( *pe + p_request->tokens.path_start ); }
- goto st5;
-tr51:
-#line 56 "parser.rl"
- { p_request->tokens.path_length = p - ( *pe + p_request->tokens.path_start ); }
- goto st5;
-tr53:
-#line 53 "parser.rl"
- { p_request->tokens.port_length = p - ( *pe + p_request->tokens.port_start ); }
-#line 55 "parser.rl"
- { p_request->tokens.path_start = p; }
-#line 56 "parser.rl"
- { p_request->tokens.path_length = p - ( *pe + p_request->tokens.path_start ); }
- goto st5;
-st5:
- if ( ++p == pe )
- goto _test_eof5;
-case 5:
-#line 279 "parser.c"
- if ( 48 <= (*p) && (*p) <= 57 )
- goto tr18;
- goto tr14;
-tr18:
-#line 62 "parser.rl"
- { p_request->tokens.c_ip_start = p; }
- goto st6;
-st6:
- if ( ++p == pe )
- goto _test_eof6;
-case 6:
-#line 291 "parser.c"
- if ( (*p) == 46 )
- goto st7;
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st30;
- goto tr14;
-st7:
- if ( ++p == pe )
- goto _test_eof7;
-case 7:
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st8;
- goto tr14;
-st8:
- if ( ++p == pe )
- goto _test_eof8;
-case 8:
- if ( (*p) == 46 )
- goto st9;
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st28;
- goto tr14;
-st9:
- if ( ++p == pe )
- goto _test_eof9;
-case 9:
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st10;
- goto tr14;
-st10:
- if ( ++p == pe )
- goto _test_eof10;
-case 10:
- if ( (*p) == 46 )
- goto st11;
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st26;
- goto tr14;
-st11:
- if ( ++p == pe )
- goto _test_eof11;
-case 11:
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st12;
- goto tr14;
-st12:
- if ( ++p == pe )
- goto _test_eof12;
-case 12:
- if ( (*p) == 47 )
- goto tr28;
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st24;
- goto tr3;
-tr28:
-#line 63 "parser.rl"
- { p_request->tokens.c_ip_length = p - ( *pe + p_request->tokens.c_ip_start ); }
- goto st13;
-st13:
- if ( ++p == pe )
- goto _test_eof13;
-case 13:
-#line 353 "parser.c"
- if ( (*p) == 45 )
- goto st14;
- if ( (*p) < 65 ) {
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st21;
- } else if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st21;
- } else
- goto st21;
- goto tr3;
-st14:
- if ( ++p == pe )
- goto _test_eof14;
-case 14:
- if ( (*p) == 32 )
- goto st15;
- if ( 9 <= (*p) && (*p) <= 13 )
- goto st15;
- goto tr3;
-st15:
- if ( ++p == pe )
- goto _test_eof15;
-case 15:
- switch( (*p) ) {
- case 33: goto st16;
- case 59: goto st16;
- case 61: goto st16;
- case 95: goto st16;
- case 126: goto st16;
- }
- if ( (*p) < 48 ) {
- if ( 36 <= (*p) && (*p) <= 46 )
- goto st16;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st16;
- } else if ( (*p) >= 65 )
- goto st16;
- } else
- goto st16;
- goto tr3;
-st16:
- if ( ++p == pe )
- goto _test_eof16;
-case 16:
- switch( (*p) ) {
- case 32: goto st17;
- case 33: goto st16;
- case 59: goto st16;
- case 61: goto st16;
- case 95: goto st16;
- case 126: goto st16;
- }
- if ( (*p) < 48 ) {
- if ( (*p) > 13 ) {
- if ( 36 <= (*p) && (*p) <= 46 )
- goto st16;
- } else if ( (*p) >= 9 )
- goto st17;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st16;
- } else if ( (*p) >= 65 )
- goto st16;
- } else
- goto st16;
- goto tr3;
-st17:
- if ( ++p == pe )
- goto _test_eof17;
-case 17:
- if ( 65 <= (*p) && (*p) <= 90 )
- goto tr36;
- goto tr35;
-tr36:
-#line 58 "parser.rl"
- { p_request->tokens.meth_start = p; }
- goto st18;
-st18:
- if ( ++p == pe )
- goto _test_eof18;
-case 18:
-#line 439 "parser.c"
- switch( (*p) ) {
- case 10: goto tr39;
- case 32: goto tr37;
- }
- if ( (*p) > 13 ) {
- if ( 65 <= (*p) && (*p) <= 90 )
- goto st18;
- } else if ( (*p) >= 9 )
- goto tr37;
- goto st0;
-tr37:
-#line 59 "parser.rl"
- { p_request->tokens.meth_length = p - ( *pe + p_request->tokens.meth_start ); }
- goto st19;
-st19:
- if ( ++p == pe )
- goto _test_eof19;
-case 19:
-#line 458 "parser.c"
- goto st20;
-st20:
- if ( ++p == pe )
- goto _test_eof20;
-case 20:
- if ( (*p) == 10 )
- goto tr42;
- goto st20;
-tr42:
-#line 36 "parser.rl"
- { valid = 1; }
- goto st85;
-st85:
- if ( ++p == pe )
- goto _test_eof85;
-case 85:
-#line 475 "parser.c"
- if ( (*p) == 10 )
- goto tr42;
- goto st20;
-tr39:
-#line 59 "parser.rl"
- { p_request->tokens.meth_length = p - ( *pe + p_request->tokens.meth_start ); }
-#line 36 "parser.rl"
- { valid = 1; }
- goto st86;
-st86:
- if ( ++p == pe )
- goto _test_eof86;
-case 86:
-#line 489 "parser.c"
- goto st20;
-st21:
- if ( ++p == pe )
- goto _test_eof21;
-case 21:
- switch( (*p) ) {
- case 32: goto st15;
- case 45: goto st22;
- case 46: goto st23;
- case 95: goto st22;
- }
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto st15;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st21;
- } else if ( (*p) >= 65 )
- goto st21;
- } else
- goto st21;
- goto tr3;
-st22:
- if ( ++p == pe )
- goto _test_eof22;
-case 22:
- switch( (*p) ) {
- case 45: goto st22;
- case 95: goto st22;
- }
- if ( (*p) < 65 ) {
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st21;
- } else if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st21;
- } else
- goto st21;
- goto tr3;
-st23:
- if ( ++p == pe )
- goto _test_eof23;
-case 23:
- if ( (*p) == 32 )
- goto st15;
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto st15;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st21;
- } else if ( (*p) >= 65 )
- goto st21;
- } else
- goto st21;
- goto tr3;
-st24:
- if ( ++p == pe )
- goto _test_eof24;
-case 24:
- if ( (*p) == 47 )
- goto tr28;
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st25;
- goto tr3;
-st25:
- if ( ++p == pe )
- goto _test_eof25;
-case 25:
- if ( (*p) == 47 )
- goto tr28;
- goto tr3;
-st26:
- if ( ++p == pe )
- goto _test_eof26;
-case 26:
- if ( (*p) == 46 )
- goto st11;
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st27;
- goto tr14;
-st27:
- if ( ++p == pe )
- goto _test_eof27;
-case 27:
- if ( (*p) == 46 )
- goto st11;
- goto tr14;
-st28:
- if ( ++p == pe )
- goto _test_eof28;
-case 28:
- if ( (*p) == 46 )
- goto st9;
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st29;
- goto tr14;
-st29:
- if ( ++p == pe )
- goto _test_eof29;
-case 29:
- if ( (*p) == 46 )
- goto st9;
- goto tr14;
-st30:
- if ( ++p == pe )
- goto _test_eof30;
-case 30:
- if ( (*p) == 46 )
- goto st7;
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st31;
- goto tr14;
-st31:
- if ( ++p == pe )
- goto _test_eof31;
-case 31:
- if ( (*p) == 46 )
- goto st7;
- goto tr14;
-st32:
- if ( ++p == pe )
- goto _test_eof32;
-case 32:
- switch( (*p) ) {
- case 45: goto st32;
- case 95: goto st32;
- }
- if ( (*p) < 65 ) {
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st33;
- } else if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st33;
- } else
- goto st33;
- goto tr49;
-tr99:
-#line 45 "parser.rl"
- { p_request->tokens.scheme_length = p - ( *pe + p_request->tokens.scheme_start ); }
-#line 48 "parser.rl"
- { p_request->tokens.host_start = p; }
- goto st33;
-st33:
- if ( ++p == pe )
- goto _test_eof33;
-case 33:
-#line 639 "parser.c"
- switch( (*p) ) {
- case 32: goto tr15;
- case 45: goto st32;
- case 46: goto st34;
- case 47: goto tr7;
- case 58: goto tr9;
- case 95: goto st32;
- }
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr15;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st33;
- } else if ( (*p) >= 65 )
- goto st33;
- } else
- goto st33;
- goto tr3;
-st34:
- if ( ++p == pe )
- goto _test_eof34;
-case 34:
- switch( (*p) ) {
- case 32: goto tr15;
- case 47: goto tr7;
- case 58: goto tr9;
- }
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr15;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st33;
- } else if ( (*p) >= 65 )
- goto st33;
- } else
- goto st33;
- goto tr3;
-tr7:
-#line 49 "parser.rl"
- { p_request->tokens.host_length = p - ( *pe + p_request->tokens.host_start ); }
-#line 55 "parser.rl"
- { p_request->tokens.path_start = p; }
- goto st35;
-tr54:
-#line 53 "parser.rl"
- { p_request->tokens.port_length = p - ( *pe + p_request->tokens.port_start ); }
-#line 55 "parser.rl"
- { p_request->tokens.path_start = p; }
- goto st35;
-st35:
- if ( ++p == pe )
- goto _test_eof35;
-case 35:
-#line 697 "parser.c"
- if ( (*p) == 32 )
- goto tr51;
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr51;
- goto st35;
-tr9:
-#line 49 "parser.rl"
- { p_request->tokens.host_length = p - ( *pe + p_request->tokens.host_start ); }
-#line 52 "parser.rl"
- { p_request->tokens.port_start = p; }
- goto st36;
-st36:
- if ( ++p == pe )
- goto _test_eof36;
-case 36:
-#line 713 "parser.c"
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st37;
- goto tr3;
-st37:
- if ( ++p == pe )
- goto _test_eof37;
-case 37:
- switch( (*p) ) {
- case 32: goto tr53;
- case 47: goto tr54;
- }
- if ( (*p) > 13 ) {
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
- } else if ( (*p) >= 9 )
- goto tr53;
- goto tr3;
-st38:
- if ( ++p == pe )
- goto _test_eof38;
-case 38:
- switch( (*p) ) {
- case 32: goto tr53;
- case 47: goto tr54;
- }
- if ( (*p) > 13 ) {
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st39;
- } else if ( (*p) >= 9 )
- goto tr53;
- goto tr3;
-st39:
- if ( ++p == pe )
- goto _test_eof39;
-case 39:
- switch( (*p) ) {
- case 32: goto tr53;
- case 47: goto tr54;
- }
- if ( (*p) > 13 ) {
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st40;
- } else if ( (*p) >= 9 )
- goto tr53;
- goto tr3;
-st40:
- if ( ++p == pe )
- goto _test_eof40;
-case 40:
- switch( (*p) ) {
- case 32: goto tr53;
- case 47: goto tr54;
- }
- if ( (*p) > 13 ) {
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st41;
- } else if ( (*p) >= 9 )
- goto tr53;
- goto tr3;
-st41:
- if ( ++p == pe )
- goto _test_eof41;
-case 41:
- switch( (*p) ) {
- case 32: goto tr53;
- case 47: goto tr54;
- }
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr53;
- goto tr3;
-st42:
- if ( ++p == pe )
- goto _test_eof42;
-case 42:
- switch( (*p) ) {
- case 32: goto tr15;
- case 47: goto tr7;
- case 58: goto tr9;
- }
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr15;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st33;
- } else if ( (*p) >= 65 )
- goto st33;
- } else
- goto st43;
- goto tr14;
-st43:
- if ( ++p == pe )
- goto _test_eof43;
-case 43:
- switch( (*p) ) {
- case 32: goto tr15;
- case 45: goto st32;
- case 46: goto st44;
- case 47: goto tr7;
- case 58: goto tr9;
- case 95: goto st32;
- }
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr15;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st33;
- } else if ( (*p) >= 65 )
- goto st33;
- } else
- goto st73;
- goto tr14;
-st44:
- if ( ++p == pe )
- goto _test_eof44;
-case 44:
- switch( (*p) ) {
- case 32: goto tr15;
- case 47: goto tr7;
- case 58: goto tr9;
- }
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr15;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st33;
- } else if ( (*p) >= 65 )
- goto st33;
- } else
- goto st45;
- goto tr14;
-st45:
- if ( ++p == pe )
- goto _test_eof45;
-case 45:
- switch( (*p) ) {
- case 32: goto tr15;
- case 45: goto st32;
- case 46: goto st46;
- case 47: goto tr7;
- case 58: goto tr9;
- case 95: goto st32;
- }
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr15;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st33;
- } else if ( (*p) >= 65 )
- goto st33;
- } else
- goto st71;
- goto tr14;
-st46:
- if ( ++p == pe )
- goto _test_eof46;
-case 46:
- switch( (*p) ) {
- case 32: goto tr15;
- case 47: goto tr7;
- case 58: goto tr9;
- }
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr15;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st33;
- } else if ( (*p) >= 65 )
- goto st33;
- } else
- goto st47;
- goto tr14;
-st47:
- if ( ++p == pe )
- goto _test_eof47;
-case 47:
- switch( (*p) ) {
- case 32: goto tr15;
- case 45: goto st32;
- case 46: goto st34;
- case 47: goto tr66;
- case 58: goto tr9;
- case 95: goto st32;
- }
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr15;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st33;
- } else if ( (*p) >= 65 )
- goto st33;
- } else
- goto st69;
- goto tr3;
-tr66:
-#line 49 "parser.rl"
- { p_request->tokens.host_length = p - ( *pe + p_request->tokens.host_start ); }
-#line 55 "parser.rl"
- { p_request->tokens.path_start = p; }
-#line 63 "parser.rl"
- { p_request->tokens.c_ip_length = p - ( *pe + p_request->tokens.c_ip_start ); }
- goto st48;
-st48:
- if ( ++p == pe )
- goto _test_eof48;
-case 48:
-#line 931 "parser.c"
- switch( (*p) ) {
- case 32: goto tr51;
- case 45: goto st49;
- }
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr51;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st66;
- } else if ( (*p) >= 65 )
- goto st66;
- } else
- goto st66;
- goto st35;
-st49:
- if ( ++p == pe )
- goto _test_eof49;
-case 49:
- if ( (*p) == 32 )
- goto tr70;
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr70;
- goto st35;
-tr70:
-#line 56 "parser.rl"
- { p_request->tokens.path_length = p - ( *pe + p_request->tokens.path_start ); }
- goto st50;
-st50:
- if ( ++p == pe )
- goto _test_eof50;
-case 50:
-#line 965 "parser.c"
- switch( (*p) ) {
- case 33: goto st16;
- case 59: goto st16;
- case 61: goto st16;
- case 95: goto st16;
- case 126: goto st16;
- }
- if ( (*p) < 48 ) {
- if ( 36 <= (*p) && (*p) <= 46 )
- goto st16;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st16;
- } else if ( (*p) >= 65 )
- goto st16;
- } else
- goto tr71;
- goto tr14;
-tr71:
-#line 62 "parser.rl"
- { p_request->tokens.c_ip_start = p; }
- goto st51;
-st51:
- if ( ++p == pe )
- goto _test_eof51;
-case 51:
-#line 993 "parser.c"
- switch( (*p) ) {
- case 32: goto st17;
- case 33: goto st16;
- case 46: goto st52;
- case 59: goto st16;
- case 61: goto st16;
- case 95: goto st16;
- case 126: goto st16;
- }
- if ( (*p) < 48 ) {
- if ( (*p) > 13 ) {
- if ( 36 <= (*p) && (*p) <= 45 )
- goto st16;
- } else if ( (*p) >= 9 )
- goto st17;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st16;
- } else if ( (*p) >= 65 )
- goto st16;
- } else
- goto st64;
- goto tr14;
-st52:
- if ( ++p == pe )
- goto _test_eof52;
-case 52:
- switch( (*p) ) {
- case 32: goto st17;
- case 33: goto st16;
- case 59: goto st16;
- case 61: goto st16;
- case 95: goto st16;
- case 126: goto st16;
- }
- if ( (*p) < 48 ) {
- if ( (*p) > 13 ) {
- if ( 36 <= (*p) && (*p) <= 46 )
- goto st16;
- } else if ( (*p) >= 9 )
- goto st17;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st16;
- } else if ( (*p) >= 65 )
- goto st16;
- } else
- goto st53;
- goto tr14;
-st53:
- if ( ++p == pe )
- goto _test_eof53;
-case 53:
- switch( (*p) ) {
- case 32: goto st17;
- case 33: goto st16;
- case 46: goto st54;
- case 59: goto st16;
- case 61: goto st16;
- case 95: goto st16;
- case 126: goto st16;
- }
- if ( (*p) < 48 ) {
- if ( (*p) > 13 ) {
- if ( 36 <= (*p) && (*p) <= 45 )
- goto st16;
- } else if ( (*p) >= 9 )
- goto st17;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st16;
- } else if ( (*p) >= 65 )
- goto st16;
- } else
- goto st62;
- goto tr14;
-st54:
- if ( ++p == pe )
- goto _test_eof54;
-case 54:
- switch( (*p) ) {
- case 32: goto st17;
- case 33: goto st16;
- case 59: goto st16;
- case 61: goto st16;
- case 95: goto st16;
- case 126: goto st16;
- }
- if ( (*p) < 48 ) {
- if ( (*p) > 13 ) {
- if ( 36 <= (*p) && (*p) <= 46 )
- goto st16;
- } else if ( (*p) >= 9 )
- goto st17;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st16;
- } else if ( (*p) >= 65 )
- goto st16;
- } else
- goto st55;
- goto tr14;
-st55:
- if ( ++p == pe )
- goto _test_eof55;
-case 55:
- switch( (*p) ) {
- case 32: goto st17;
- case 33: goto st16;
- case 46: goto st56;
- case 59: goto st16;
- case 61: goto st16;
- case 95: goto st16;
- case 126: goto st16;
- }
- if ( (*p) < 48 ) {
- if ( (*p) > 13 ) {
- if ( 36 <= (*p) && (*p) <= 45 )
- goto st16;
- } else if ( (*p) >= 9 )
- goto st17;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st16;
- } else if ( (*p) >= 65 )
- goto st16;
- } else
- goto st60;
- goto tr14;
-st56:
- if ( ++p == pe )
- goto _test_eof56;
-case 56:
- switch( (*p) ) {
- case 32: goto st17;
- case 33: goto st16;
- case 59: goto st16;
- case 61: goto st16;
- case 95: goto st16;
- case 126: goto st16;
- }
- if ( (*p) < 48 ) {
- if ( (*p) > 13 ) {
- if ( 36 <= (*p) && (*p) <= 46 )
- goto st16;
- } else if ( (*p) >= 9 )
- goto st17;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st16;
- } else if ( (*p) >= 65 )
- goto st16;
- } else
- goto st57;
- goto tr14;
-st57:
- if ( ++p == pe )
- goto _test_eof57;
-case 57:
- switch( (*p) ) {
- case 32: goto st17;
- case 33: goto st16;
- case 47: goto tr28;
- case 59: goto st16;
- case 61: goto st16;
- case 95: goto st16;
- case 126: goto st16;
- }
- if ( (*p) < 48 ) {
- if ( (*p) > 13 ) {
- if ( 36 <= (*p) && (*p) <= 46 )
- goto st16;
- } else if ( (*p) >= 9 )
- goto st17;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st16;
- } else if ( (*p) >= 65 )
- goto st16;
- } else
- goto st58;
- goto tr3;
-st58:
- if ( ++p == pe )
- goto _test_eof58;
-case 58:
- switch( (*p) ) {
- case 32: goto st17;
- case 33: goto st16;
- case 47: goto tr28;
- case 59: goto st16;
- case 61: goto st16;
- case 95: goto st16;
- case 126: goto st16;
- }
- if ( (*p) < 48 ) {
- if ( (*p) > 13 ) {
- if ( 36 <= (*p) && (*p) <= 46 )
- goto st16;
- } else if ( (*p) >= 9 )
- goto st17;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st16;
- } else if ( (*p) >= 65 )
- goto st16;
- } else
- goto st59;
- goto tr3;
-st59:
- if ( ++p == pe )
- goto _test_eof59;
-case 59:
- switch( (*p) ) {
- case 32: goto st17;
- case 33: goto st16;
- case 47: goto tr28;
- case 59: goto st16;
- case 61: goto st16;
- case 95: goto st16;
- case 126: goto st16;
- }
- if ( (*p) < 36 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto st17;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st16;
- } else if ( (*p) >= 65 )
- goto st16;
- } else
- goto st16;
- goto tr3;
-st60:
- if ( ++p == pe )
- goto _test_eof60;
-case 60:
- switch( (*p) ) {
- case 32: goto st17;
- case 33: goto st16;
- case 46: goto st56;
- case 59: goto st16;
- case 61: goto st16;
- case 95: goto st16;
- case 126: goto st16;
- }
- if ( (*p) < 48 ) {
- if ( (*p) > 13 ) {
- if ( 36 <= (*p) && (*p) <= 45 )
- goto st16;
- } else if ( (*p) >= 9 )
- goto st17;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st16;
- } else if ( (*p) >= 65 )
- goto st16;
- } else
- goto st61;
- goto tr14;
-st61:
- if ( ++p == pe )
- goto _test_eof61;
-case 61:
- switch( (*p) ) {
- case 32: goto st17;
- case 33: goto st16;
- case 46: goto st56;
- case 59: goto st16;
- case 61: goto st16;
- case 95: goto st16;
- case 126: goto st16;
- }
- if ( (*p) < 48 ) {
- if ( (*p) > 13 ) {
- if ( 36 <= (*p) && (*p) <= 45 )
- goto st16;
- } else if ( (*p) >= 9 )
- goto st17;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st16;
- } else if ( (*p) >= 65 )
- goto st16;
- } else
- goto st16;
- goto tr14;
-st62:
- if ( ++p == pe )
- goto _test_eof62;
-case 62:
- switch( (*p) ) {
- case 32: goto st17;
- case 33: goto st16;
- case 46: goto st54;
- case 59: goto st16;
- case 61: goto st16;
- case 95: goto st16;
- case 126: goto st16;
- }
- if ( (*p) < 48 ) {
- if ( (*p) > 13 ) {
- if ( 36 <= (*p) && (*p) <= 45 )
- goto st16;
- } else if ( (*p) >= 9 )
- goto st17;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st16;
- } else if ( (*p) >= 65 )
- goto st16;
- } else
- goto st63;
- goto tr14;
-st63:
- if ( ++p == pe )
- goto _test_eof63;
-case 63:
- switch( (*p) ) {
- case 32: goto st17;
- case 33: goto st16;
- case 46: goto st54;
- case 59: goto st16;
- case 61: goto st16;
- case 95: goto st16;
- case 126: goto st16;
- }
- if ( (*p) < 48 ) {
- if ( (*p) > 13 ) {
- if ( 36 <= (*p) && (*p) <= 45 )
- goto st16;
- } else if ( (*p) >= 9 )
- goto st17;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st16;
- } else if ( (*p) >= 65 )
- goto st16;
- } else
- goto st16;
- goto tr14;
-st64:
- if ( ++p == pe )
- goto _test_eof64;
-case 64:
- switch( (*p) ) {
- case 32: goto st17;
- case 33: goto st16;
- case 46: goto st52;
- case 59: goto st16;
- case 61: goto st16;
- case 95: goto st16;
- case 126: goto st16;
- }
- if ( (*p) < 48 ) {
- if ( (*p) > 13 ) {
- if ( 36 <= (*p) && (*p) <= 45 )
- goto st16;
- } else if ( (*p) >= 9 )
- goto st17;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st16;
- } else if ( (*p) >= 65 )
- goto st16;
- } else
- goto st65;
- goto tr14;
-st65:
- if ( ++p == pe )
- goto _test_eof65;
-case 65:
- switch( (*p) ) {
- case 32: goto st17;
- case 33: goto st16;
- case 46: goto st52;
- case 59: goto st16;
- case 61: goto st16;
- case 95: goto st16;
- case 126: goto st16;
- }
- if ( (*p) < 48 ) {
- if ( (*p) > 13 ) {
- if ( 36 <= (*p) && (*p) <= 45 )
- goto st16;
- } else if ( (*p) >= 9 )
- goto st17;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st16;
- } else if ( (*p) >= 65 )
- goto st16;
- } else
- goto st16;
- goto tr14;
-st66:
- if ( ++p == pe )
- goto _test_eof66;
-case 66:
- switch( (*p) ) {
- case 32: goto tr70;
- case 45: goto st67;
- case 46: goto st68;
- case 95: goto st67;
- }
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr70;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st66;
- } else if ( (*p) >= 65 )
- goto st66;
- } else
- goto st66;
- goto st35;
-st67:
- if ( ++p == pe )
- goto _test_eof67;
-case 67:
- switch( (*p) ) {
- case 32: goto tr51;
- case 45: goto st67;
- case 95: goto st67;
- }
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr51;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st66;
- } else if ( (*p) >= 65 )
- goto st66;
- } else
- goto st66;
- goto st35;
-st68:
- if ( ++p == pe )
- goto _test_eof68;
-case 68:
- if ( (*p) == 32 )
- goto tr70;
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr70;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st66;
- } else if ( (*p) >= 65 )
- goto st66;
- } else
- goto st66;
- goto st35;
-st69:
- if ( ++p == pe )
- goto _test_eof69;
-case 69:
- switch( (*p) ) {
- case 32: goto tr15;
- case 45: goto st32;
- case 46: goto st34;
- case 47: goto tr66;
- case 58: goto tr9;
- case 95: goto st32;
- }
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr15;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st33;
- } else if ( (*p) >= 65 )
- goto st33;
- } else
- goto st70;
- goto tr3;
-st70:
- if ( ++p == pe )
- goto _test_eof70;
-case 70:
- switch( (*p) ) {
- case 32: goto tr15;
- case 45: goto st32;
- case 46: goto st34;
- case 47: goto tr66;
- case 58: goto tr9;
- case 95: goto st32;
- }
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr15;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st33;
- } else if ( (*p) >= 65 )
- goto st33;
- } else
- goto st33;
- goto tr3;
-st71:
- if ( ++p == pe )
- goto _test_eof71;
-case 71:
- switch( (*p) ) {
- case 32: goto tr15;
- case 45: goto st32;
- case 46: goto st46;
- case 47: goto tr7;
- case 58: goto tr9;
- case 95: goto st32;
- }
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr15;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st33;
- } else if ( (*p) >= 65 )
- goto st33;
- } else
- goto st72;
- goto tr14;
-st72:
- if ( ++p == pe )
- goto _test_eof72;
-case 72:
- switch( (*p) ) {
- case 32: goto tr15;
- case 45: goto st32;
- case 46: goto st46;
- case 47: goto tr7;
- case 58: goto tr9;
- case 95: goto st32;
- }
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr15;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st33;
- } else if ( (*p) >= 65 )
- goto st33;
- } else
- goto st33;
- goto tr14;
-st73:
- if ( ++p == pe )
- goto _test_eof73;
-case 73:
- switch( (*p) ) {
- case 32: goto tr15;
- case 45: goto st32;
- case 46: goto st44;
- case 47: goto tr7;
- case 58: goto tr9;
- case 95: goto st32;
- }
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr15;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st33;
- } else if ( (*p) >= 65 )
- goto st33;
- } else
- goto st74;
- goto tr14;
-st74:
- if ( ++p == pe )
- goto _test_eof74;
-case 74:
- switch( (*p) ) {
- case 32: goto tr15;
- case 45: goto st32;
- case 46: goto st44;
- case 47: goto tr7;
- case 58: goto tr9;
- case 95: goto st32;
- }
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr15;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st33;
- } else if ( (*p) >= 65 )
- goto st33;
- } else
- goto st33;
- goto tr14;
-st75:
- if ( ++p == pe )
- goto _test_eof75;
-case 75:
- switch( (*p) ) {
- case 32: goto tr15;
- case 45: goto st32;
- case 46: goto st42;
- case 47: goto tr7;
- case 58: goto tr9;
- case 95: goto st32;
- }
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr15;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st33;
- } else if ( (*p) >= 65 )
- goto st33;
- } else
- goto st76;
- goto tr14;
-st76:
- if ( ++p == pe )
- goto _test_eof76;
-case 76:
- switch( (*p) ) {
- case 32: goto tr15;
- case 45: goto st32;
- case 46: goto st42;
- case 47: goto tr7;
- case 58: goto tr9;
- case 95: goto st32;
- }
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr15;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st33;
- } else if ( (*p) >= 65 )
- goto st33;
- } else
- goto st33;
- goto tr14;
-tr2:
-#line 44 "parser.rl"
- { p_request->tokens.scheme_start = p; }
-#line 48 "parser.rl"
- { p_request->tokens.host_start = p; }
- goto st77;
-tr13:
-#line 39 "parser.rl"
- {
- debug( 1, LOC, "Channel ID found in redirector input. Set 'url_rewrite_concurrency' to '0' in squid.\n" );
- {p++; cs = 77; goto _out;}
- }
-#line 44 "parser.rl"
- { p_request->tokens.scheme_start = p; }
-#line 48 "parser.rl"
- { p_request->tokens.host_start = p; }
- goto st77;
-st77:
- if ( ++p == pe )
- goto _test_eof77;
-case 77:
-#line 1678 "parser.c"
- switch( (*p) ) {
- case 32: goto tr15;
- case 45: goto st32;
- case 46: goto st34;
- case 47: goto tr7;
- case 58: goto tr9;
- case 95: goto st32;
- }
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr15;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st78;
- } else if ( (*p) >= 65 )
- goto st78;
- } else
- goto st33;
- goto tr92;
-st78:
- if ( ++p == pe )
- goto _test_eof78;
-case 78:
- switch( (*p) ) {
- case 32: goto tr15;
- case 45: goto st32;
- case 46: goto st34;
- case 47: goto tr7;
- case 58: goto tr9;
- case 95: goto st32;
- }
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr15;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st79;
- } else if ( (*p) >= 65 )
- goto st79;
- } else
- goto st33;
- goto tr92;
-st79:
- if ( ++p == pe )
- goto _test_eof79;
-case 79:
- switch( (*p) ) {
- case 32: goto tr15;
- case 45: goto st32;
- case 46: goto st34;
- case 47: goto tr7;
- case 58: goto tr95;
- case 95: goto st32;
- }
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr15;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st83;
- } else if ( (*p) >= 65 )
- goto st83;
- } else
- goto st33;
- goto tr92;
-tr95:
-#line 49 "parser.rl"
- { p_request->tokens.host_length = p - ( *pe + p_request->tokens.host_start ); }
-#line 52 "parser.rl"
- { p_request->tokens.port_start = p; }
- goto st80;
-st80:
- if ( ++p == pe )
- goto _test_eof80;
-case 80:
-#line 1757 "parser.c"
- if ( (*p) == 47 )
- goto st81;
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st37;
- goto tr92;
-st81:
- if ( ++p == pe )
- goto _test_eof81;
-case 81:
- if ( (*p) == 47 )
- goto st82;
- goto tr92;
-st82:
- if ( ++p == pe )
- goto _test_eof82;
-case 82:
- if ( (*p) < 65 ) {
- if ( 48 <= (*p) && (*p) <= 57 )
- goto tr99;
- } else if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto tr99;
- } else
- goto tr99;
- goto tr49;
-st83:
- if ( ++p == pe )
- goto _test_eof83;
-case 83:
- switch( (*p) ) {
- case 32: goto tr15;
- case 45: goto st32;
- case 46: goto st34;
- case 47: goto tr7;
- case 58: goto tr95;
- case 95: goto st32;
- }
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr15;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st84;
- } else if ( (*p) >= 65 )
- goto st84;
- } else
- goto st33;
- goto tr92;
-st84:
- if ( ++p == pe )
- goto _test_eof84;
-case 84:
- switch( (*p) ) {
- case 32: goto tr15;
- case 45: goto st32;
- case 46: goto st34;
- case 47: goto tr7;
- case 58: goto tr95;
- case 95: goto st32;
- }
- if ( (*p) < 48 ) {
- if ( 9 <= (*p) && (*p) <= 13 )
- goto tr15;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
- if ( 97 <= (*p) && (*p) <= 122 )
- goto st33;
- } else if ( (*p) >= 65 )
- goto st33;
- } else
- goto st33;
- goto tr92;
- }
- _test_eof2: cs = 2; goto _test_eof;
- _test_eof3: cs = 3; goto _test_eof;
- _test_eof4: cs = 4; goto _test_eof;
- _test_eof5: cs = 5; goto _test_eof;
- _test_eof6: cs = 6; goto _test_eof;
- _test_eof7: cs = 7; goto _test_eof;
- _test_eof8: cs = 8; goto _test_eof;
- _test_eof9: cs = 9; goto _test_eof;
- _test_eof10: cs = 10; goto _test_eof;
- _test_eof11: cs = 11; goto _test_eof;
- _test_eof12: cs = 12; goto _test_eof;
- _test_eof13: cs = 13; goto _test_eof;
- _test_eof14: cs = 14; goto _test_eof;
- _test_eof15: cs = 15; goto _test_eof;
- _test_eof16: cs = 16; goto _test_eof;
- _test_eof17: cs = 17; goto _test_eof;
- _test_eof18: cs = 18; goto _test_eof;
- _test_eof19: cs = 19; goto _test_eof;
- _test_eof20: cs = 20; goto _test_eof;
- _test_eof85: cs = 85; goto _test_eof;
- _test_eof86: cs = 86; goto _test_eof;
- _test_eof21: cs = 21; goto _test_eof;
- _test_eof22: cs = 22; goto _test_eof;
- _test_eof23: cs = 23; goto _test_eof;
- _test_eof24: cs = 24; goto _test_eof;
- _test_eof25: cs = 25; goto _test_eof;
- _test_eof26: cs = 26; goto _test_eof;
- _test_eof27: cs = 27; goto _test_eof;
- _test_eof28: cs = 28; goto _test_eof;
- _test_eof29: cs = 29; goto _test_eof;
- _test_eof30: cs = 30; goto _test_eof;
- _test_eof31: cs = 31; goto _test_eof;
- _test_eof32: cs = 32; goto _test_eof;
- _test_eof33: cs = 33; goto _test_eof;
- _test_eof34: cs = 34; goto _test_eof;
- _test_eof35: cs = 35; goto _test_eof;
- _test_eof36: cs = 36; goto _test_eof;
- _test_eof37: cs = 37; goto _test_eof;
- _test_eof38: cs = 38; goto _test_eof;
- _test_eof39: cs = 39; goto _test_eof;
- _test_eof40: cs = 40; goto _test_eof;
- _test_eof41: cs = 41; goto _test_eof;
- _test_eof42: cs = 42; goto _test_eof;
- _test_eof43: cs = 43; goto _test_eof;
- _test_eof44: cs = 44; goto _test_eof;
- _test_eof45: cs = 45; goto _test_eof;
- _test_eof46: cs = 46; goto _test_eof;
- _test_eof47: cs = 47; goto _test_eof;
- _test_eof48: cs = 48; goto _test_eof;
- _test_eof49: cs = 49; goto _test_eof;
- _test_eof50: cs = 50; goto _test_eof;
- _test_eof51: cs = 51; goto _test_eof;
- _test_eof52: cs = 52; goto _test_eof;
- _test_eof53: cs = 53; goto _test_eof;
- _test_eof54: cs = 54; goto _test_eof;
- _test_eof55: cs = 55; goto _test_eof;
- _test_eof56: cs = 56; goto _test_eof;
- _test_eof57: cs = 57; goto _test_eof;
- _test_eof58: cs = 58; goto _test_eof;
- _test_eof59: cs = 59; goto _test_eof;
- _test_eof60: cs = 60; goto _test_eof;
- _test_eof61: cs = 61; goto _test_eof;
- _test_eof62: cs = 62; goto _test_eof;
- _test_eof63: cs = 63; goto _test_eof;
- _test_eof64: cs = 64; goto _test_eof;
- _test_eof65: cs = 65; goto _test_eof;
- _test_eof66: cs = 66; goto _test_eof;
- _test_eof67: cs = 67; goto _test_eof;
- _test_eof68: cs = 68; goto _test_eof;
- _test_eof69: cs = 69; goto _test_eof;
- _test_eof70: cs = 70; goto _test_eof;
- _test_eof71: cs = 71; goto _test_eof;
- _test_eof72: cs = 72; goto _test_eof;
- _test_eof73: cs = 73; goto _test_eof;
- _test_eof74: cs = 74; goto _test_eof;
- _test_eof75: cs = 75; goto _test_eof;
- _test_eof76: cs = 76; goto _test_eof;
- _test_eof77: cs = 77; goto _test_eof;
- _test_eof78: cs = 78; goto _test_eof;
- _test_eof79: cs = 79; goto _test_eof;
- _test_eof80: cs = 80; goto _test_eof;
- _test_eof81: cs = 81; goto _test_eof;
- _test_eof82: cs = 82; goto _test_eof;
- _test_eof83: cs = 83; goto _test_eof;
- _test_eof84: cs = 84; goto _test_eof;
-
- _test_eof: {}
- if ( p == eof )
- {
- switch ( cs ) {
- case 2:
- case 12:
- case 13:
- case 14:
- case 15:
- case 16:
- case 19:
- case 21:
- case 22:
- case 23:
- case 24:
- case 25:
- case 33:
- case 34:
- case 35:
- case 36:
- case 37:
- case 38:
- case 39:
- case 40:
- case 41:
- case 47:
- case 48:
- case 49:
- case 57:
- case 58:
- case 59:
- case 66:
- case 67:
- case 68:
- case 69:
- case 70:
-#line 37 "parser.rl"
- { valid = 0; }
- break;
- case 77:
- case 78:
- case 79:
- case 80:
- case 81:
- case 83:
- case 84:
-#line 46 "parser.rl"
- { debug( 3, LOC, "Unable to parse scheme.\n" ); }
-#line 37 "parser.rl"
- { valid = 0; }
- break;
- case 32:
- case 82:
-#line 50 "parser.rl"
- { debug( 3, LOC, "Unable to parse hostname.\n" ); }
-#line 37 "parser.rl"
- { valid = 0; }
- break;
- case 17:
-#line 60 "parser.rl"
- { debug( 3, LOC, "Unable to parse method.\n" ); }
-#line 37 "parser.rl"
- { valid = 0; }
- break;
- case 4:
- case 5:
- case 6:
- case 7:
- case 8:
- case 9:
- case 10:
- case 11:
- case 26:
- case 27:
- case 28:
- case 29:
- case 30:
- case 31:
- case 42:
- case 43:
- case 44:
- case 45:
- case 46:
- case 50:
- case 51:
- case 52:
- case 53:
- case 54:
- case 55:
- case 56:
- case 60:
- case 61:
- case 62:
- case 63:
- case 64:
- case 65:
- case 71:
- case 72:
- case 73:
- case 74:
- case 75:
- case 76:
-#line 64 "parser.rl"
- { debug( 3, LOC, "Unable to parse the client IP address.\n" ); }
-#line 37 "parser.rl"
- { valid = 0; }
- break;
- case 1:
-#line 46 "parser.rl"
- { debug( 3, LOC, "Unable to parse scheme.\n" ); }
-#line 50 "parser.rl"
- { debug( 3, LOC, "Unable to parse hostname.\n" ); }
-#line 37 "parser.rl"
- { valid = 0; }
- break;
- case 3:
-#line 46 "parser.rl"
- { debug( 3, LOC, "Unable to parse scheme.\n" ); }
-#line 50 "parser.rl"
- { debug( 3, LOC, "Unable to parse hostname.\n" ); }
-#line 64 "parser.rl"
- { debug( 3, LOC, "Unable to parse the client IP address.\n" ); }
-#line 37 "parser.rl"
- { valid = 0; }
- break;
-#line 2043 "parser.c"
- }
- }
-
- _out: {}
- }
-
-#line 190 "parser.rl"
-
- /* If we were given an invalid line, bail early */
- if ( valid == 0 ) {
- free( p_request ), p_request = NULL;
- debug( 3, LOC, "Invalid line (%d), skipped\n", v.timer.lines + 1 );
- debug( 4, LOC, "%s", line );
- return( NULL );
- }
-
- (void)populate_request( p_request );
- return( p_request );
-}
-
-
-/*
- * Initialize and return a pointer to a new request object.
- *
- */
-request *
-init_request( void )
-{
- request *p_request = NULL;
- if ( (p_request = malloc( sizeof(request) )) == NULL ) {
- debug( 1, LOC, "Unable to allocate memory for request struct: %s\n", strerror(errno) );
- return( NULL );
- }
- p_request->scheme = NULL;
- p_request->host = NULL;
- p_request->port = NULL;
- p_request->path = NULL;
- p_request->user = NULL;
- p_request->method = NULL;
- p_request->client_ip = NULL;
-
- p_request->tokens.scheme_start = NULL;
- p_request->tokens.host_start = NULL;
- p_request->tokens.port_start = NULL;
- p_request->tokens.path_start = NULL;
- p_request->tokens.meth_start = NULL;
- p_request->tokens.c_ip_start = NULL;
-
- p_request->tokens.scheme_length = 0;
- p_request->tokens.host_length = 0;
- p_request->tokens.port_length = 0;
- p_request->tokens.path_length = 0;
- p_request->tokens.meth_length = 0;
- p_request->tokens.c_ip_length = 0;
-
- return p_request;
-}
-
-
-/*
- * Take the previously parsed token locations and copy them into the request struct.
- *
- */
-void
-populate_request( struct request *p_request )
-{
- p_request->scheme =
- copy_string_token( p_request->tokens.scheme_start, p_request->tokens.scheme_length );
- p_request->host =
- copy_string_token( p_request->tokens.host_start, p_request->tokens.host_length );
- p_request->port =
- copy_string_token( p_request->tokens.port_start, p_request->tokens.port_length );
- p_request->path =
- copy_string_token( p_request->tokens.path_start, p_request->tokens.path_length );
- p_request->method =
- copy_string_token( p_request->tokens.meth_start, p_request->tokens.meth_length );
- p_request->client_ip =
- copy_ipv4_token( p_request->tokens.c_ip_start, p_request->tokens.c_ip_length );
-
- return;
-}
-
-
-/*
- * Release memory used by request struct.
- *
- */
-void
-cleanup_request( struct request *p_request )
-{
- if ( p_request == NULL ) return;
-
- free( p_request->scheme );
- free( p_request->host );
- free( p_request->port );
- free( p_request->path );
- free( p_request->method );
- free( p_request->client_ip );
-
- free( p_request ), p_request = NULL;
-
- return;
-}
-