Image-CCV

 view release on metacpan or  search on metacpan

ccv-src/serve/ebb_request_parser.c  view on Meta::CPAN

			if ( 48 <= (*p) && (*p) <= 57 )
				goto st81;
		} else if ( (*p) > 90 ) {
			if ( 94 <= (*p) && (*p) <= 122 )
				goto st81;
		} else
			goto st81;
	} else
		goto st81;
	goto st0;
tr103:
#line 81 "ebb_request_parser.rl"
	{ 
    //printf("write_field!\n");
    HEADER_CALLBACK(header_field);
    parser->header_field_mark = NULL;
  }
	goto st82;
st82:
	if ( ++p == pe )
		goto _test_eof82;
case 82:
#line 1653 "ebb_request_parser.c"
	switch( (*p) ) {
		case 13: goto tr105;
		case 32: goto st82;
	}
	goto tr104;
tr104:
#line 60 "ebb_request_parser.rl"
	{ parser->header_value_mark   = p; }
	goto st83;
st83:
	if ( ++p == pe )
		goto _test_eof83;
case 83:
#line 1667 "ebb_request_parser.c"
	if ( (*p) == 13 )
		goto tr108;
	goto st83;
tr105:
#line 60 "ebb_request_parser.rl"
	{ parser->header_value_mark   = p; }
#line 87 "ebb_request_parser.rl"
	{
    //printf("write_value!\n");
    HEADER_CALLBACK(header_value);
    parser->header_value_mark = NULL;
  }
	goto st84;
tr108:
#line 87 "ebb_request_parser.rl"
	{
    //printf("write_value!\n");
    HEADER_CALLBACK(header_value);
    parser->header_value_mark = NULL;
  }
	goto st84;
tr133:
#line 127 "ebb_request_parser.rl"
	{ CURRENT->keep_alive = FALSE; }
#line 87 "ebb_request_parser.rl"
	{
    //printf("write_value!\n");
    HEADER_CALLBACK(header_value);
    parser->header_value_mark = NULL;
  }
	goto st84;
tr143:
#line 126 "ebb_request_parser.rl"
	{ CURRENT->keep_alive = TRUE; }
#line 87 "ebb_request_parser.rl"
	{
    //printf("write_value!\n");
    HEADER_CALLBACK(header_value);
    parser->header_value_mark = NULL;
  }
	goto st84;
tr221:
#line 138 "ebb_request_parser.rl"
	{
    CURRENT->expect_continue = TRUE;
  }
#line 87 "ebb_request_parser.rl"
	{
    //printf("write_value!\n");
    HEADER_CALLBACK(header_value);
    parser->header_value_mark = NULL;
  }
	goto st84;
tr231:
#line 142 "ebb_request_parser.rl"
	{
    //printf("trailer\n");
    /* not implemenetd yet. (do requests even have trailing headers?) */
  }
#line 60 "ebb_request_parser.rl"
	{ parser->header_value_mark   = p; }
#line 87 "ebb_request_parser.rl"
	{
    //printf("write_value!\n");
    HEADER_CALLBACK(header_value);
    parser->header_value_mark = NULL;
  }
	goto st84;
tr234:
#line 142 "ebb_request_parser.rl"
	{
    //printf("trailer\n");
    /* not implemenetd yet. (do requests even have trailing headers?) */
  }
#line 87 "ebb_request_parser.rl"
	{
    //printf("write_value!\n");
    HEADER_CALLBACK(header_value);
    parser->header_value_mark = NULL;
  }
	goto st84;
tr258:
#line 123 "ebb_request_parser.rl"
	{ CURRENT->transfer_encoding = EBB_IDENTITY; }
#line 87 "ebb_request_parser.rl"
	{
    //printf("write_value!\n");
    HEADER_CALLBACK(header_value);
    parser->header_value_mark = NULL;
  }
	goto st84;
st84:
	if ( ++p == pe )
		goto _test_eof84;

ccv-src/serve/ebb_request_parser.c  view on Meta::CPAN

	_test_eof252: cs = 252; goto _test_eof; 
	_test_eof238: cs = 238; goto _test_eof; 
	_test_eof239: cs = 239; goto _test_eof; 
	_test_eof240: cs = 240; goto _test_eof; 
	_test_eof241: cs = 241; goto _test_eof; 
	_test_eof242: cs = 242; goto _test_eof; 
	_test_eof243: cs = 243; goto _test_eof; 
	_test_eof244: cs = 244; goto _test_eof; 
	_test_eof245: cs = 245; goto _test_eof; 
	_test_eof246: cs = 246; goto _test_eof; 
	_test_eof247: cs = 247; goto _test_eof; 
	_test_eof248: cs = 248; goto _test_eof; 
	_test_eof249: cs = 249; goto _test_eof; 
	_test_eof250: cs = 250; goto _test_eof; 

	_test_eof: {}
	_out: {}
	}

#line 681 "ebb_request_parser.rl"

  parser->cs = cs;
  parser->top = top;
  COPYSTACK(parser->stack, stack);

  HEADER_CALLBACK(header_field);
  HEADER_CALLBACK(header_value);
  CALLBACK(fragment);
  CALLBACK(query_string);
  CALLBACK(path);
  CALLBACK(uri);

  assert(p <= pe && "buffer overflow after parsing execute");

  return(p - buffer);
}

int ebb_request_parser_has_error(ebb_request_parser *parser) 
{
  return parser->cs == ebb_request_parser_error;
}

int ebb_request_parser_is_finished(ebb_request_parser *parser) 
{
  return parser->cs == ebb_request_parser_first_final;
}

void ebb_request_init(ebb_request *request)
{
  request->expect_continue = FALSE;
  request->eating_body = 0;
  request->body_read = 0;
  request->content_length = 0;
  request->version_major = 0;
  request->version_minor = 0;
  request->number_of_headers = 0;
  request->transfer_encoding = EBB_IDENTITY;
  request->number_of_multipart_headers = 0;
  request->multipart_boundary_len = 0;
  request->multipart_boundary[0] = request->multipart_boundary[1] = '-';
  request->keep_alive = -1;

  request->on_complete = NULL;
  request->on_headers_complete = NULL;
  request->on_body = NULL;
  request->on_multipart_headers_complete = NULL;
  request->on_multipart_header_field = NULL;
  request->on_multipart_header_value = NULL;
  request->on_part_data_complete = NULL;
  request->on_part_data = NULL;
  request->on_header_field = NULL;
  request->on_header_value = NULL;
  request->on_uri = NULL;
  request->on_fragment = NULL;
  request->on_path = NULL;
  request->on_query_string = NULL;
}

int ebb_request_should_keep_alive(ebb_request *request)
{
  if(request->keep_alive == -1)
    if(request->version_major == 1)
      return (request->version_minor != 0);
    else if(request->version_major == 0)
      return FALSE;
    else
      return TRUE;
  else
    return request->keep_alive;
}



( run in 1.518 second using v1.01-cache-2.11-cpan-39bf76dae61 )