diff --git a/src/or/buffers.c b/src/or/buffers.c index 2f6c64cc5d..c88fa62a11 100644 --- a/src/or/buffers.c +++ b/src/or/buffers.c @@ -192,6 +192,9 @@ int decompress_buf_to_buf(char **buf_in, int *buflen_in, int *buf_datalen_in, { case Z_OK: case Z_STREAM_END: + log(LOG_DEBUG, "Uncompressed (%d/%d); filled (%d/%d)", + *buf_datalen_in-zstream->avail_in, *buf_datalen_in, + *buf_datalen_out-zstream->avail_out, *buf_datalen_out); memmove(*buf_in, zstream->next_in, zstream->avail_in); *buf_datalen_in = zstream->avail_in; *buf_datalen_out = *buflen_out - zstream->avail_out; diff --git a/src/or/connection.c b/src/or/connection.c index c9d2c2dc5a..41d07293fe 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -744,7 +744,7 @@ repeat_connection_package_raw_inbuf: return -1; } - log(LOG_DEBUG,"connection_package_raw_inbuf(): (%d) Packaging %d bytes (%d waiting).",conn->s,cell.length, amount_to_process); + log(LOG_DEBUG,"connection_package_raw_inbuf(): (%d) Packaging %d bytes (%d waiting).",conn->s,cell.length, conn->inbuf_datalen); *(uint16_t *)(cell.payload+2) = htons(conn->topic_id); *cell.payload = TOPIC_COMMAND_DATA; diff --git a/src/or/connection_exit.c b/src/or/connection_exit.c index 24b1f21b40..b797d71983 100644 --- a/src/or/connection_exit.c +++ b/src/or/connection_exit.c @@ -196,6 +196,7 @@ int connection_exit_process_data_cell(cell_t *cell, circuit_t *circ) { connection_t *conn; int topic_command; int topic_id; + int len; static int num_seen=0; /* an outgoing data cell has arrived */ @@ -248,16 +249,19 @@ int connection_exit_process_data_cell(cell_t *cell, circuit_t *circ) { if(conn->state != EXIT_CONN_STATE_OPEN) { log(LOG_DEBUG,"connection_exit_process_data_cell(): data received while resolving/connecting. Queueing."); } - log(LOG_DEBUG,"connection_exit_process_data_cell(): put %d bytes on outbuf.",cell->length - TOPIC_HEADER_SIZE); #ifdef USE_ZLIB - if(connection_decompress_to_buf(cell->payload + TOPIC_HEADER_SIZE, - cell->length - TOPIC_HEADER_SIZE, - conn, Z_SYNC_FLUSH) < 0) { + log(LOG_DEBUG,"connection_exit_process_data_cell(): uncompressing %d bytes onto outbuf...",cell->length - TOPIC_HEADER_SIZE); + len = connection_decompress_to_buf(cell->payload + TOPIC_HEADER_SIZE, + cell->length - TOPIC_HEADER_SIZE, + conn, Z_SYNC_FLUSH); + log(LOG_DEBUG,"%d bytes written", len); + if (len<0) { log(LOG_INFO,"connection_exit_process_data_cell(): write to buf failed. Marking for close."); conn->marked_for_close = 1; return 0; } #else + log(LOG_DEBUG,"connection_exit_process_data_cell(): put %d bytes on outbuf.",cell->length - TOPIC_HEADER_SIZE); if(connection_write_to_buf(cell->payload + TOPIC_HEADER_SIZE, cell->length - TOPIC_HEADER_SIZE, conn) < 0) { log(LOG_INFO,"connection_exit_process_data_cell(): write to buf failed. Marking for close.");