コード例 #1
0
ファイル: url.c プロジェクト: bixuehujin/http
url_t * url_parse(const char * url) {
	sstring_t ss = sstring_for_init;
	url_t * ret;
	if(!strstr(url, "://")) {
		sstring_fappend(&ss, "http://%s", url);
		ret = _url_parse(ss.ptr, ss.len);
		sstring_destroy(&ss);
		return ret;
	}
	return _url_parse(url, strlen(url));
}
コード例 #2
0
ファイル: http_parse.c プロジェクト: billowkiller/FBAC
int on_url(http_parser* _, const char* at, size_t length) {
	(void)_;
	
	if((int)length > 300 || (int)length <2) 
		return -1;
	memcpy(http.url, at, (int)length);
	http.url[(int)length] = '\0';

	_url_parse(http.url);
	return 0;
}
コード例 #3
0
ファイル: http_parse.c プロジェクト: billowkiller/FBAC
int on_header_value(http_parser* _, const char* at, size_t length) {
	(void)_;
	//char *url;
	switch(http_field_type)
	{
		case COOKIE: //unknow size of cookie, stay available
 			if(c_info.user_id[0]=='\0')
 			{
 				char *start = strstr(at, "c_user");
				if(start)
				{
					int len = strchr(start+7, ';')-start-7;
					memcpy(c_info.user_id, start+7, len);
					c_info.user_id[len] = '\0';
				}
			}
			//memcpy(http.cookie, at, (int)length);
			//http.cookie[(int)length] = '\0';
			break;
		case CONTENT_LENGTH:
			content_length = atoi(at);
			break;
		case REFERER:
			//fetch s_id
			if(c_info.user_id[0] == '\0')
			{
				char *url = (char *)malloc((int)length+1);
				memcpy(url, at, (int)length);
				url[(int)length] = '\0';
				_url_parse(url);
				FREE(url);
			}
			break;
	}
//	printf( "%.*s\n", (int)length, at);
//
//	CURRENT_LINE->value = (char *)malloc(length+1);
//	strncpy(CURRENT_LINE->value, at, length);
//	CURRENT_LINE->value[length] = '\0';
	
//	if(!strcmp(CURRENT_LINE->field, "Content-Type"))
//	{
//		charset_parse(CURRENT_LINE->value, contype, charset);
//	}
//	if(!strcmp(CURRENT_LINE->field, "Content-Encoding"))
//	{
//		if(!strcmp(CURRENT_LINE->value, "gzip"))
//			isGzip = 1;
//	}
	return 0;
}