Ejemplo n.º 1
0
static onion_connection_status parse_POST_urlencode(onion_request *req, onion_buffer *data){
	onion_token *token=req->parser_data;
	int res=token_read_URLENCODE(token, data);
	
	if (res<=1000)
		return res;
	
	req->POST=onion_dict_new();
	onion_request_parse_query_to_dict(req->POST, token->extra);

	return onion_request_process(req);
}
Ejemplo n.º 2
0
static onion_connection_status parse_POST_urlencode(onion_request *req, onion_buffer *data){
	onion_token *token=req->parser_data;
	int res=token_read_URLENCODE(token, data);

	if (res<=1000)
		return res;

	req->POST=onion_dict_new();
	onion_request_parse_query_to_dict(req->POST, token->extra);
	token->extra=NULL; // At query to dict, it keeps the pointer and free it when POST is freed.

	return OCS_REQUEST_READY;
}
Ejemplo n.º 3
0
/**
 * @short Parses the query to unquote the path and get the query.
 */
static int onion_request_parse_query(onion_request *req){
	if (!req->fullpath)
		return 0;
	if (req->GET) // already done
		return 1;

	char *p=req->fullpath;
	char have_query=0;
	while(*p){
		if (*p=='?'){
			have_query=1;
			break;
		}
		p++;
	}
	*p='\0';
	onion_unquote_inplace(req->fullpath);
	if (have_query){ // There are querys.
		p++;
		req->GET=onion_dict_new();
		onion_request_parse_query_to_dict(req->GET, p);
	}
	return 1;
}