mirror of
				https://github.com/lxsang/ant-http
				synced 2025-10-31 18:35:44 +01:00 
			
		
		
		
	minor fix
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								._Makefile
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								._Makefile
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -38,6 +38,7 @@ dictionary decode_request(int client,const char* method,const char* query) | |||||||
| { | { | ||||||
| 	dictionary request = NULL; | 	dictionary request = NULL; | ||||||
| 	dictionary cookie = NULL; | 	dictionary cookie = NULL; | ||||||
|  | 	dictionary xheader = dict(); | ||||||
| 	char* line; | 	char* line; | ||||||
| 	char * token; | 	char * token; | ||||||
| 	if(strcmp(method,"GET") == 0) | 	if(strcmp(method,"GET") == 0) | ||||||
| @@ -47,8 +48,12 @@ dictionary decode_request(int client,const char* method,const char* query) | |||||||
| 		char* ws_key = NULL; | 		char* ws_key = NULL; | ||||||
| 		while((line = read_line(client)) && strcmp("\r\n",line)) | 		while((line = read_line(client)) && strcmp("\r\n",line)) | ||||||
| 		{ | 		{ | ||||||
|  | 			trim(line, '\n'); | ||||||
|  | 			trim(line, '\r'); | ||||||
| 			token = strsep(&line,":"); | 			token = strsep(&line,":"); | ||||||
| 			trim(token,' '); | 			trim(token,' '); | ||||||
|  | 			trim(line,' '); | ||||||
|  | 			dput(xheader,token,line); | ||||||
| 			if(token != NULL &&strcasecmp(token,"Cookie") == 0) | 			if(token != NULL &&strcasecmp(token,"Cookie") == 0) | ||||||
| 			{ | 			{ | ||||||
| 				if(!cookie) cookie = decode_cookie(line); | 				if(!cookie) cookie = decode_cookie(line); | ||||||
| @@ -57,16 +62,12 @@ dictionary decode_request(int client,const char* method,const char* query) | |||||||
| 			{ | 			{ | ||||||
| 				// verify that the connection is upgrade to websocket | 				// verify that the connection is upgrade to websocket | ||||||
| 				trim(line, ' '); | 				trim(line, ' '); | ||||||
| 				trim(line, '\n'); |  | ||||||
| 				trim(line, '\r'); |  | ||||||
| 				if(line != NULL && strcasecmp(line,"websocket") == 0) | 				if(line != NULL && strcasecmp(line,"websocket") == 0) | ||||||
| 					ws = 1; | 					ws = 1; | ||||||
| 			} else if(token != NULL && strcasecmp(token,"Sec-WebSocket-Key") == 0) | 			} else if(token != NULL && strcasecmp(token,"Sec-WebSocket-Key") == 0) | ||||||
| 			{ | 			{ | ||||||
| 				// get the key from the client | 				// get the key from the client | ||||||
| 				trim(line, ' '); | 				trim(line, ' '); | ||||||
| 				trim(line, '\n'); |  | ||||||
| 				trim(line, '\r'); |  | ||||||
| 				ws_key = strdup(line); | 				ws_key = strdup(line); | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| @@ -90,14 +91,16 @@ dictionary decode_request(int client,const char* method,const char* query) | |||||||
| 		while (line && strcmp("\r\n",line)) | 		while (line && strcmp("\r\n",line)) | ||||||
| 		{ | 		{ | ||||||
| 			//printf("%s\n",line); | 			//printf("%s\n",line); | ||||||
|  | 			trim(line, '\n'); | ||||||
|  | 			trim(line, '\r'); | ||||||
| 			token = strsep(&line,":"); | 			token = strsep(&line,":"); | ||||||
| 			trim(token,' '); | 			trim(token,' '); | ||||||
|  | 			trim(line, ' '); | ||||||
|  | 			dput(xheader,token,line); | ||||||
| 			if(token != NULL &&strcasecmp(token,"Content-Type") == 0) | 			if(token != NULL &&strcasecmp(token,"Content-Type") == 0) | ||||||
| 			{ | 			{ | ||||||
| 				ctype = strsep(&line,":"); | 				ctype = strsep(&line,":"); | ||||||
| 				trim(ctype,' '); | 				trim(ctype,' '); | ||||||
| 				trim(ctype,'\n'); |  | ||||||
| 				trim(ctype,'\r'); |  | ||||||
| 			} else if(token != NULL &&strcasecmp(token,"Content-Length") == 0) | 			} else if(token != NULL &&strcasecmp(token,"Content-Length") == 0) | ||||||
| 			{ | 			{ | ||||||
| 				token = strsep(&line,":"); | 				token = strsep(&line,":"); | ||||||
| @@ -140,10 +143,11 @@ dictionary decode_request(int client,const char* method,const char* query) | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	//if(cookie->key == NULL) {free(cookie);cookie= NULL;} | 	//if(cookie->key == NULL) {free(cookie);cookie= NULL;} | ||||||
| 	if(cookie && !request) | 	if(!request) | ||||||
| 			request = dict(); | 			request = dict(); | ||||||
| 		 | 		 | ||||||
| 	dput(request,"cookie",cookie); | 	dput(request,"cookie",cookie); | ||||||
|  | 	dput(request,"__xheader__",xheader); | ||||||
| 	return request; | 	return request; | ||||||
| } | } | ||||||
| void __px(const char* data,int size) | void __px(const char* data,int size) | ||||||
|   | |||||||
| @@ -30,12 +30,10 @@ sqldb getdb() | |||||||
| 	return getdb(__plugin__.name); | 	return getdb(__plugin__.name); | ||||||
| } | } | ||||||
| #endif | #endif | ||||||
| void header_base(int client) | void set_status(int client,int code,const char* msg) | ||||||
| { | { | ||||||
|  | 	response(client, __s("HTTP/1.0 %d %s", code, msg)); | ||||||
| 	response(client, "HTTP/1.0 200 OK"); |  | ||||||
| 	response(client, __s("Server: %s ", SERVER_NAME)); | 	response(client, __s("Server: %s ", SERVER_NAME)); | ||||||
|  |  | ||||||
| } | } | ||||||
| void redirect(int client,const char*path) | void redirect(int client,const char*path) | ||||||
| { | { | ||||||
| @@ -60,7 +58,7 @@ void textstream(int client) | |||||||
| } | } | ||||||
| void octstream(int client, char* name) | void octstream(int client, char* name) | ||||||
| { | { | ||||||
| 	header_base(client); | 	set_status(client,200,"OK"); | ||||||
| 	__t(client,"Content-Type: application/octet-stream"); | 	__t(client,"Content-Type: application/octet-stream"); | ||||||
| 	__t(client,"Content-Disposition: attachment; filename=\"%s\"", name); | 	__t(client,"Content-Disposition: attachment; filename=\"%s\"", name); | ||||||
| 	response(client,""); | 	response(client,""); | ||||||
| @@ -72,7 +70,7 @@ void jpeg(int client) | |||||||
| } | } | ||||||
| void header(int client, const char* type) | void header(int client, const char* type) | ||||||
| { | { | ||||||
| 	header_base(client); | 	set_status(client,200,"OK"); | ||||||
| 	__t(client,"Content-Type: %s",type); | 	__t(client,"Content-Type: %s",type); | ||||||
| 	response(client,""); | 	response(client,""); | ||||||
| } | } | ||||||
| @@ -240,7 +238,7 @@ int upload(const char* tmp, const char* path) | |||||||
| } | } | ||||||
| void set_cookie(int client,const char* type, dictionary dic) | void set_cookie(int client,const char* type, dictionary dic) | ||||||
| { | { | ||||||
| 	header_base(client); | 	set_status(client,200,"OK"); | ||||||
| 	__t(client,"Content-Type: %s",type); | 	__t(client,"Content-Type: %s",type); | ||||||
| 	association assoc; | 	association assoc; | ||||||
| 	for_each_assoc(assoc,dic){ | 	for_each_assoc(assoc,dic){ | ||||||
| @@ -250,7 +248,7 @@ void set_cookie(int client,const char* type, dictionary dic) | |||||||
| } | } | ||||||
| void clear_cookie(int client,  dictionary dic) | void clear_cookie(int client,  dictionary dic) | ||||||
| { | { | ||||||
| 	header_base(client); | 	set_status(client,200,"OK"); | ||||||
| 	__t(client,"Content-Type: text/html; charset=utf-8"); | 	__t(client,"Content-Type: text/html; charset=utf-8"); | ||||||
| 	association assoc; | 	association assoc; | ||||||
| 	for_each_assoc(assoc,dic){ | 	for_each_assoc(assoc,dic){ | ||||||
|   | |||||||
| @@ -36,7 +36,6 @@ extern plugin_header __plugin__; | |||||||
| extern call __init__; | extern call __init__; | ||||||
|  |  | ||||||
| int response(int, const char*); | int response(int, const char*); | ||||||
| void header_base(int); |  | ||||||
| void header(int,const char*); | void header(int,const char*); | ||||||
| void redirect(int,const char*); | void redirect(int,const char*); | ||||||
| void html(int); | void html(int); | ||||||
| @@ -59,6 +58,7 @@ sqldb getdb(); | |||||||
| sqldb __getdb(char *name); | sqldb __getdb(char *name); | ||||||
| #endif | #endif | ||||||
| void set_cookie(int, const char*,dictionary); | void set_cookie(int, const char*,dictionary); | ||||||
|  | void set_status(int,int,const char*); | ||||||
| void clear_cookie(int, dictionary); | void clear_cookie(int, dictionary); | ||||||
| /*Default function for plugin*/ | /*Default function for plugin*/ | ||||||
| void handler(int, const char*,const char*,dictionary); | void handler(int, const char*,const char*,dictionary); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user