Changed send_http_message() to use the write_message() function.
Changed httperr() to use the same concept as the write_message() function. Still haven't figured out how to combine the code.
This commit is contained in:
		
							parent
							
								
									b10221fa07
								
							
						
					
					
						commit
						9520866ab3
					
				
							
								
								
									
										81
									
								
								src/utils.c
									
									
									
									
									
								
							
							
						
						
									
										81
									
								
								src/utils.c
									
									
									
									
									
								
							| @ -1,4 +1,4 @@ | |||||||
| /* $Id: utils.c,v 1.20 2001-12-20 04:48:52 rjkaes Exp $
 | /* $Id: utils.c,v 1.21 2001-12-24 00:02:32 rjkaes Exp $
 | ||||||
|  * |  * | ||||||
|  * Misc. routines which are used by the various functions to handle strings |  * Misc. routines which are used by the various functions to handle strings | ||||||
|  * and memory allocation and pretty much anything else we can think of. Also, |  * and memory allocation and pretty much anything else we can think of. Also, | ||||||
| @ -77,33 +77,29 @@ int | |||||||
| send_http_message(struct conn_s *connptr, int http_code, | send_http_message(struct conn_s *connptr, int http_code, | ||||||
| 		  const char *error_title, const char *message) | 		  const char *error_title, const char *message) | ||||||
| { | { | ||||||
| 	static char *headers = | 	static char *headers = \ | ||||||
| 	    "HTTP/1.0 %d %s\r\n" | 		"HTTP/1.0 %d %s\r\n" \ | ||||||
| 	    "Server: %s/%s\r\n" | 		"Server: %s/%s\r\n" \ | ||||||
| 	    "Date: %s\r\n" | 		"Date: %s\r\n" \ | ||||||
| 	    "Content-Type: text/html\r\n" | 		"Content-Type: text/html\r\n" \ | ||||||
| 	    "Content-Length: %d\r\n" "Connection: close\r\n" "\r\n"; | 		"Content-Length: %d\r\n" \ | ||||||
|  | 		"Connection: close\r\n" \ | ||||||
|  | 		"\r\n"; | ||||||
| 
 | 
 | ||||||
| 	char *header_buffer; |  | ||||||
| 	char timebuf[30]; | 	char timebuf[30]; | ||||||
| 	time_t global_time; | 	time_t global_time; | ||||||
| 
 | 
 | ||||||
| 	header_buffer = safemalloc(HEADER_SIZE); |  | ||||||
| 	if (!header_buffer) |  | ||||||
| 		return -1; |  | ||||||
| 
 |  | ||||||
| 	global_time = time(NULL); | 	global_time = time(NULL); | ||||||
| 	strftime(timebuf, sizeof(timebuf), "%a, %d %b %Y %H:%M:%S GMT", | 	strftime(timebuf, sizeof(timebuf), "%a, %d %b %Y %H:%M:%S GMT", | ||||||
| 		 gmtime(&global_time)); | 		 gmtime(&global_time)); | ||||||
| 
 | 
 | ||||||
| 	snprintf(header_buffer, HEADER_SIZE - 1, headers, http_code, | 	write_message(connptr->client_fd, | ||||||
| 		 error_title, PACKAGE, VERSION, timebuf, strlen(message)); | 		      headers, | ||||||
|  | 		      http_code, error_title, PACKAGE, VERSION, timebuf, | ||||||
|  | 		      strlen(message)); | ||||||
| 
 | 
 | ||||||
| 	safe_write(connptr->client_fd, header_buffer, strlen(header_buffer)); |  | ||||||
| 	safe_write(connptr->client_fd, message, strlen(message)); | 	safe_write(connptr->client_fd, message, strlen(message)); | ||||||
| 
 | 
 | ||||||
| 	safefree(header_buffer); |  | ||||||
| 
 |  | ||||||
| 	connptr->send_response_message = TRUE; | 	connptr->send_response_message = TRUE; | ||||||
| 
 | 
 | ||||||
| 	return 0; | 	return 0; | ||||||
| @ -115,31 +111,50 @@ send_http_message(struct conn_s *connptr, int http_code, | |||||||
| int | int | ||||||
| httperr(struct conn_s *connptr, int err, const char *msg) | httperr(struct conn_s *connptr, int err, const char *msg) | ||||||
| { | { | ||||||
| 	static char *message = | 	static char *message = \ | ||||||
| 	    "<html><head><title>%s</title></head>\r\n" | 		"<html><head><title>%s</title></head>\r\n" \ | ||||||
| 	    "<body>\r\n" | 		"<body>\r\n" \ | ||||||
| 	    "<font size=\"+2\">Cache Error!</font><br>\r\n" | 		"<font size=\"+2\">Cache Error!</font><br>\r\n" \ | ||||||
| 	    "An error of type %d occurred: %s\r\n" | 		"An error of type %d occurred: %s\r\n" \ | ||||||
| 	    "<hr>\r\n" | 		"<hr>\r\n" \ | ||||||
| 	    "<font size=\"-1\"><em>Generated by %s (%s)</em></font>\r\n" | 		"<font size=\"-1\"><em>Generated by %s (%s)</em></font>\r\n" \ | ||||||
| 	    "</body></html>\r\n\r\n"; | 		"</body></html>\r\n\r\n"; | ||||||
| 
 | 
 | ||||||
| 	char *message_buffer; | 	char *message_buffer; | ||||||
| 
 | 	char *tmpbuf; | ||||||
| 	message_buffer = safemalloc(MAXBUFFSIZE); | 	size_t size = (1024 * 8);	/* start with 8 KB */ | ||||||
|  | 	ssize_t n; | ||||||
|  | 	int ret; | ||||||
|  | 	 | ||||||
|  | 	message_buffer = safemalloc(size); | ||||||
| 	if (!message_buffer) | 	if (!message_buffer) | ||||||
| 		return -1; | 		return -1; | ||||||
| 
 | 
 | ||||||
| 	snprintf(message_buffer, MAXBUFFSIZE - 1, message, msg, err, msg, | 	/*
 | ||||||
| 		 PACKAGE, VERSION); | 	 * Build a new line. Keep increasing the size until the line fits. | ||||||
|  | 	 * See the write_message() function in sock.c for more information. | ||||||
|  | 	 */ | ||||||
|  | 	while (1) { | ||||||
|  | 		n = snprintf(message_buffer, size, message, msg, err, msg, PACKAGE, VERSION); | ||||||
| 
 | 
 | ||||||
| 	if (send_http_message(connptr, err, msg, message_buffer) < 0) { | 		if (n > -1 && n < size) | ||||||
| 		safefree(message_buffer); | 			break; | ||||||
| 		return -1; | 
 | ||||||
|  | 		if (n > - 1) | ||||||
|  | 			size = n + 1; | ||||||
|  | 		else | ||||||
|  | 			size *= 2; | ||||||
|  | 
 | ||||||
|  | 		if ((tmpbuf = saferealloc(message_buffer, size)) == NULL) { | ||||||
|  | 			safefree(message_buffer); | ||||||
|  | 			return -1; | ||||||
|  | 		} else | ||||||
|  | 			message_buffer = tmpbuf; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	ret = send_http_message(connptr, err, msg, message_buffer); | ||||||
| 	safefree(message_buffer); | 	safefree(message_buffer); | ||||||
| 	return 0; | 	return ret; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void | void | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Robert James Kaes
						Robert James Kaes