refactor html-error so send_http_headers() can take extra arg
we already required an extra argument inside the headers sent for 401 and 407 error responses, move those to sent_http_error_message() and refactor send_http_headers() to always take the extra argument. in calling sites where the extra arg isn't needed, use "".
This commit is contained in:
parent
c4231e58bf
commit
48860bbe26
@ -133,7 +133,9 @@ send_html_file (FILE *infile, struct conn_s *connptr)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int send_http_headers (struct conn_s *connptr, int code, const char *message)
|
int send_http_headers (
|
||||||
|
struct conn_s *connptr, int code,
|
||||||
|
const char *message, const char *extra)
|
||||||
{
|
{
|
||||||
const char headers[] =
|
const char headers[] =
|
||||||
"HTTP/1.0 %d %s\r\n"
|
"HTTP/1.0 %d %s\r\n"
|
||||||
@ -142,21 +144,9 @@ int send_http_headers (struct conn_s *connptr, int code, const char *message)
|
|||||||
"%s"
|
"%s"
|
||||||
"Connection: close\r\n" "\r\n";
|
"Connection: close\r\n" "\r\n";
|
||||||
|
|
||||||
const char p_auth_str[] =
|
|
||||||
"Proxy-Authenticate: Basic realm=\""
|
|
||||||
PACKAGE_NAME "\"\r\n";
|
|
||||||
|
|
||||||
const char w_auth_str[] =
|
|
||||||
"WWW-Authenticate: Basic realm=\""
|
|
||||||
PACKAGE_NAME "\"\r\n";
|
|
||||||
|
|
||||||
/* according to rfc7235, the 407 error must be accompanied by
|
|
||||||
a Proxy-Authenticate header field. */
|
|
||||||
const char *add = code == 407 ? p_auth_str : (code == 401 ? w_auth_str : "");
|
|
||||||
|
|
||||||
return (write_message (connptr->client_fd, headers,
|
return (write_message (connptr->client_fd, headers,
|
||||||
code, message, PACKAGE, VERSION,
|
code, message, PACKAGE, VERSION,
|
||||||
add));
|
extra));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -180,8 +170,21 @@ int send_http_error_message (struct conn_s *connptr)
|
|||||||
"<p><em>Generated by %s version %s.</em></p>\n" "</body>\n"
|
"<p><em>Generated by %s version %s.</em></p>\n" "</body>\n"
|
||||||
"</html>\n";
|
"</html>\n";
|
||||||
|
|
||||||
|
const char p_auth_str[] =
|
||||||
|
"Proxy-Authenticate: Basic realm=\""
|
||||||
|
PACKAGE_NAME "\"\r\n";
|
||||||
|
|
||||||
|
const char w_auth_str[] =
|
||||||
|
"WWW-Authenticate: Basic realm=\""
|
||||||
|
PACKAGE_NAME "\"\r\n";
|
||||||
|
|
||||||
|
/* according to rfc7235, the 407 error must be accompanied by
|
||||||
|
a Proxy-Authenticate header field. */
|
||||||
|
const char *add = connptr->error_number == 407 ? p_auth_str :
|
||||||
|
(connptr->error_number == 401 ? w_auth_str : "");
|
||||||
|
|
||||||
send_http_headers (connptr, connptr->error_number,
|
send_http_headers (connptr, connptr->error_number,
|
||||||
connptr->error_string);
|
connptr->error_string, add);
|
||||||
|
|
||||||
error_file = get_html_file (connptr->error_number);
|
error_file = get_html_file (connptr->error_number);
|
||||||
if (!(infile = fopen (error_file, "r"))) {
|
if (!(infile = fopen (error_file, "r"))) {
|
||||||
|
@ -33,7 +33,7 @@ extern int add_error_variable (struct conn_s *connptr, const char *key,
|
|||||||
const char *val);
|
const char *val);
|
||||||
extern int send_html_file (FILE * infile, struct conn_s *connptr);
|
extern int send_html_file (FILE * infile, struct conn_s *connptr);
|
||||||
extern int send_http_headers (struct conn_s *connptr, int code,
|
extern int send_http_headers (struct conn_s *connptr, int code,
|
||||||
const char *message);
|
const char *message, const char *extra);
|
||||||
extern int add_standard_vars (struct conn_s *connptr);
|
extern int add_standard_vars (struct conn_s *connptr);
|
||||||
|
|
||||||
#endif /* !TINYPROXY_HTML_ERROR_H */
|
#endif /* !TINYPROXY_HTML_ERROR_H */
|
||||||
|
@ -122,7 +122,7 @@ err_minus_one:
|
|||||||
add_error_variable (connptr, "deniedconns", denied);
|
add_error_variable (connptr, "deniedconns", denied);
|
||||||
add_error_variable (connptr, "refusedconns", refused);
|
add_error_variable (connptr, "refusedconns", refused);
|
||||||
add_standard_vars (connptr);
|
add_standard_vars (connptr);
|
||||||
send_http_headers (connptr, 200, "Statistic requested");
|
send_http_headers (connptr, 200, "Statistic requested", "");
|
||||||
send_html_file (statfile, connptr);
|
send_html_file (statfile, connptr);
|
||||||
fclose (statfile);
|
fclose (statfile);
|
||||||
pthread_mutex_unlock(&stats_file_lock);
|
pthread_mutex_unlock(&stats_file_lock);
|
||||||
|
Loading…
Reference in New Issue
Block a user