- out_len = WRITEBUFFER_LEN - My_Connections[Idx].wdatalen - out->avail_out;
- My_Connections[Idx].wdatalen += out_len;
- My_Connections[Idx].bytes_out += out_len;
- My_Connections[Idx].zip.bytes_out += My_Connections[Idx].zip.wdatalen;
- My_Connections[Idx].zip.wdatalen = 0;
+ assert(out->avail_out <= WRITEBUFFER_LEN);
+ zipbuf_used = WRITEBUFFER_LEN - out->avail_out;
+ Log(LOG_DEBUG, "zipbuf_used: %d\n", zipbuf_used);
+ if (!array_catb( &My_Connections[Idx].wbuf, (char*) zipbuf, zipbuf_used ))
+ return false;
+
+ My_Connections[Idx].bytes_out += zipbuf_used;
+ My_Connections[Idx].zip.bytes_out += array_bytes(&My_Connections[Idx].zip.wbuf);
+ array_trunc(&My_Connections[Idx].zip.wbuf);