if (do_httpheaders) {
wprintf("Content-type: text/html\r\n"
- "Server: %s / %s\n", SERVER, serv_info.serv_software
+ "Server: %s / %s\n"
+ "Connection: close\r\n",
+ SERVER, serv_info.serv_software
+ );
+ }
+
+ if (cache) {
+ wprintf("Pragma: public\r\n"
+ "Cache-Control: max-age=3600, must-revalidate\r\n"
+ "Last-modified: %s\r\n",
+ httpnow
+ );
+ }
+ else {
+ wprintf("Pragma: no-cache\r\n"
+ "Cache-Control: no-store\r\n"
);
- if (!cache)
- wprintf("Connection: close\r\n"
- "Pragma: no-cache\r\n"
- "Cache-Control: no-store\r\n"
- );
}
stuff_to_cookie(cookie, WC->wc_session, WC->wc_username,
wprintf("<div id=\"content\">\n");
if (strlen(WC->ImportantMessage) > 0) {
+ wprintf("<div id=\"fix_scrollbar_bug\">\n");
do_template("beginbox_nt");
wprintf("<SPAN CLASS=\"errormsg\">"
"%s</SPAN><br />\n", WC->ImportantMessage);
do_template("endbox");
+ wprintf("</div>\n");
strcpy(WC->ImportantMessage, "");
}
*/
void http_transmit_thing(char *thing, size_t length, char *content_type,
int is_static) {
- if (is_static) {
- output_headers(0, 0, 0, 0, 0, 0, 1);
- }
- else {
- output_headers(0, 0, 0, 0, 0, 0, 0);
- }
+
+ output_headers(0, 0, 0, 0, 0, 0, is_static);
+
wprintf("Content-type: %s\r\n"
- "Content-length: %ld\r\n"
"Server: %s\r\n"
- "Connection: close\r\n"
- "\r\n",
+ "Connection: close\r\n",
content_type,
- (long) length,
- SERVER
+ SERVER);
+
+#ifdef HAVE_ZLIB
+ /* If we can send the data out compressed, please do so. */
+ if (WC->gzip_ok) {
+ char *compressed_data = NULL;
+ uLongf compressed_len;
+
+ compressed_len = (uLongf) ((length * 101) / 100) + 100;
+ compressed_data = malloc(compressed_len);
+
+ if (compress_gzip((Bytef *) compressed_data,
+ &compressed_len,
+ (Bytef *) thing,
+ (uLongf) length, Z_BEST_SPEED) == Z_OK) {
+ wprintf("Content-encoding: gzip\r\n"
+ "Content-length: %ld\r\n"
+ "\r\n",
+ (long) compressed_len
+ );
+ client_write(compressed_data, (size_t)compressed_len);
+ free(compressed_data);
+ return;
+ }
+ }
+#endif
+
+ /* No compression ... just send it out as-is */
+ wprintf("Content-length: %ld\r\n"
+ "\r\n",
+ (long) length
);
client_write(thing, (size_t)length);
}
if (buf[0] == '2') {
bytes = extract_long(&buf[4], 0);
content = malloc(bytes + 2);
- extract(content_type, &buf[4], 3);
+ extract_token(content_type, &buf[4], 3, '|', sizeof content_type);
output_headers(0, 0, 0, 0, 0, 0, 0);
read_server_binary(content, bytes);
serv_puts("CLOS");
serv_gets(buf);
if (buf[0] == '2') {
bytes = extract_long(&buf[4], 0);
- extract(content_type, &buf[4], 3);
+ extract_token(content_type, &buf[4], 3, '|', sizeof content_type);
content = malloc(bytes + 2);
read_server_binary(content, bytes);
strcpy(cmd, hptr->line);
hptr = hptr->next;
- extract_token(method, cmd, 0, ' ');
+ extract_token(method, cmd, 0, ' ', sizeof method);
extract_action(action, cmd);
while (hptr != NULL) {
if (!strncasecmp(buf, "Cookie: webcit=", 15)) {
safestrncpy(cookie, &buf[15], sizeof cookie);
cookie_to_stuff(cookie, NULL,
- c_username, c_password, c_roomname);
+ c_username, sizeof c_username,
+ c_password, sizeof c_password,
+ c_roomname, sizeof c_roomname);
}
else if (!strncasecmp(buf, "Authorization: Basic ", 21)) {
CtdlDecodeBase64(c_httpauth_string, &buf[21], strlen(&buf[21]));
- extract_token(c_httpauth_user, c_httpauth_string, 0, ':');
- extract_token(c_httpauth_pass, c_httpauth_string, 1, ':');
+ extract_token(c_httpauth_user, c_httpauth_string, 0, ':', sizeof c_httpauth_user);
+ extract_token(c_httpauth_pass, c_httpauth_string, 1, ':', sizeof c_httpauth_pass);
}
else if (!strncasecmp(buf, "Content-length: ", 16)) {
ContentLength = atoi(&buf[16]);
save_edit("Your bio", "EBIO", 0);
} else if (!strcasecmp(action, "confirm_move_msg")) {
confirm_move_msg();
- } else if (!strcasecmp(action, "confirm_delete_room")) {
- confirm_delete_room();
} else if (!strcasecmp(action, "delete_room")) {
delete_room();
} else if (!strcasecmp(action, "validate")) {
display_inetconf();
} else if (!strcasecmp(action, "save_inetconf")) {
save_inetconf();
+ } else if (!strcasecmp(action, "setup_wizard")) {
+ do_setup_wizard();
} else if (!strcasecmp(action, "diagnostics")) {
output_headers(1, 1, 1, 0, 0, 0, 0);