- if (!force_download) {
- if (!strcasecmp(ChrPtr(ContentType), "application/octet-stream")) {
- StrBufExtract_token(Buf, WCC->Hdr->HR.ReqLine, 2, '/');
- CT = GuessMimeByFilename(SKEY(Buf));
- CheckGZipCompressionAllowed (CT, strlen(CT));
- }
- if (!strcasecmp(ChrPtr(ContentType), "application/octet-stream")) {
- CT = GuessMimeType(SKEY(WCC->WBuf));
- CheckGZipCompressionAllowed (CT, strlen(CT));
- }
- }
- http_transmit_thing(CT, 0);
- } else {
- StrBufCutLeft(Buf, 4);
- switch (ErrorDetail) {
- default:
- case ERROR + MESSAGE_NOT_FOUND:
- hprintf("HTTP/1.1 404 %s\n", ChrPtr(Buf));
- break;
- case ERROR + NOT_LOGGED_IN:
- hprintf("HTTP/1.1 401 %s\n", ChrPtr(Buf));
- break;
-
- case ERROR + HIGHER_ACCESS_REQUIRED:
- hprintf("HTTP/1.1 403 %s\n", ChrPtr(Buf));
- break;
- case ERROR + INTERNAL_ERROR:
- case ERROR + TOO_BIG:
- hprintf("HTTP/1.1 500 %s\n", ChrPtr(Buf));
- break;
- }
- output_headers(0, 0, 0, 0, 0, 0);
- hprintf("Content-Type: text/plain\r\n");
- begin_burst();
- wc_printf(_("An error occurred while retrieving this part: %s\n"),
- ChrPtr(Buf));
- end_burst();