]> ruderich.org/simon Gitweb - tlsproxy/tlsproxy.git/commitdiff
Prepare HTTP_RESPONSE_FORMAT for additional headers.
authorSimon Ruderich <simon@ruderich.org>
Mon, 29 Jul 2013 02:35:24 +0000 (04:35 +0200)
committerSimon Ruderich <simon@ruderich.org>
Mon, 29 Jul 2013 02:35:24 +0000 (04:35 +0200)
src/connection.c

index 54e5671fc8fc14fd21e85f1c5ce1688707ea8011..08a72809a2f30c308f6e9e3fc4b7acd3575e48ad 100644 (file)
 
 /* Format string used to send HTTP/1.0 error responses to the client.
  *
- * %s is used 4 times, first three are the error code (no %n$s!), the last is
- * the message. */
+ * %s is used 5 times, first is the error code, then additional headers, next
+ * two are the error code (no %n$s!), the last is the message. */
 #define HTTP_RESPONSE_FORMAT "HTTP/1.0 %s\r\n\
 Content-Type: text/html; charset=US-ASCII\r\n\
-\r\n\
+%s\r\n\
 <!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n\
 <html>\n\
 <head><title>%s</title></head>\n\
@@ -548,13 +548,13 @@ static int read_http_request(FILE *client_fd, char *request, size_t length) {
 static void send_bad_request(FILE *client_fd) {
     const char error[] = "400 Bad Request";
     const char msg[]   = "Your browser sent an invalid request.";
-    fprintf(client_fd, HTTP_RESPONSE_FORMAT, error, error, error, msg);
+    fprintf(client_fd, HTTP_RESPONSE_FORMAT, error, "", error, error, msg);
     fflush(client_fd);
 }
 static void send_forwarding_failure(FILE *client_fd) {
     const char error[] = "503 Forwarding failure";
     const char msg[]   = "Failed to connect to server, check logs.";
-    fprintf(client_fd, HTTP_RESPONSE_FORMAT, error, error, error, msg);
+    fprintf(client_fd, HTTP_RESPONSE_FORMAT, error, "", error, error, msg);
     fflush(client_fd);
 }
 static void tls_send_invalid_cert_message(gnutls_session_t session) {
@@ -566,7 +566,7 @@ static void tls_send_invalid_cert_message(gnutls_session_t session) {
                 + 3 * sizeof(error) + sizeof(msg)];
 
     result = snprintf(buffer, sizeof(buffer), HTTP_RESPONSE_FORMAT,
-                                              error, error, error, msg);
+                                              error, "", error, error, msg);
     assert(result > 0 && (size_t)result < sizeof(buffer));
 
     gnutls_record_send(session, buffer, strlen(buffer));