- http_transmit_headers(ChrPtr(MimeType), is_static, chunked);
-#ifdef HAVE_OPENSSL
- if (is_https)
- client_write_ssl(WCC->HBuf);
+ if ((detect_mime != 0) && (bytes_read != 0))
+ {
+ /* need to read first chunk to detect mime, though the client doesn't care */
+ size_t bytes_read = 0;
+ const char *CT;
+
+ ServerRc = read_serv_chunk(
+ Buf,
+ total_len,
+ &bytes_read);
+
+ if (ServerRc != 6)
+ {
+ FreeStrBuf(&BufHeader);
+ FreeStrBuf(&Buf);
+ return;
+ }
+ CT = GuessMimeType(SKEY(WCC->WBuf));
+ FlushStrBuf(WCC->WBuf);
+ StrBufPlain(MimeType, CT, -1);
+ CheckGZipCompressionAllowed(SKEY(MimeType));
+ detect_mime = 0;
+ FreeStrBuf(&Buf);
+ }
+
+ memset(&WriteBuffer, 0, sizeof(IOBuffer));
+ if (chunked && !DisableGzip && WCC->Hdr->HR.gzip_ok)
+ {
+ is_gzip = 1;
+ SC = StrBufNewStreamContext (eZLibEncode, &Err);
+ if (SC == NULL) {
+ syslog(LOG_ERR, "Error while initializing stream context: %s", Err);
+ FreeStrBuf(&Buf);
+ return;
+ }
+
+ memset(&ReadBuffer, 0, sizeof(IOBuffer));
+ ReadBuffer.Buf = WCC->WBuf;
+
+ WriteBuffer.Buf = NewStrBufPlain(NULL, SIZ*2);;
+ pBuf = WriteBuffer.Buf;
+ }