Просмотр исходного кода

make the buffer resize stuff work
and make listener connections not have bufs


svn:r584

Roger Dingledine 20 лет назад
Родитель
Сommit
58ec05877a
2 измененных файлов с 13 добавлено и 9 удалено
  1. 5 5
      src/or/buffers.c
  2. 8 4
      src/or/connection.c

+ 5 - 5
src/or/buffers.c

@@ -45,8 +45,8 @@ static INLINE int buf_ensure_capacity(buf_t *buf, size_t capacity)
   new_len = buf->len*2;
   while (new_len < capacity)
     new_len *= 2;
-  log_fn(LOG_DEBUG,"Growing buffer from %ld to %ld bytes.",
-         buf->len, new_len);
+  log_fn(LOG_DEBUG,"Growing buffer from %d to %d bytes.",
+         (int)buf->len, (int)new_len);
   buf_resize(buf,new_len);
   return 0;
 }
@@ -63,9 +63,9 @@ static INLINE void buf_shrink_if_underfull(buf_t *buf) {
   new_len = buf->len / 2;
   while (buf->datalen < new_len/4 && new_len/2 > MIN_BUF_SHRINK_SIZE) 
     new_len /= 2;
-  log_fn(LOG_DEBUG,"Shrinking buffer from %ld to %ld bytes.",
-         buf->len, new_len);
-  buf_resize(buf->buf, new_len);
+  log_fn(LOG_DEBUG,"Shrinking buffer from %d to %d bytes.",
+         (int)buf->len, (int)new_len);
+  buf_resize(buf, new_len);
 }
 
 /* Remove the first 'n' bytes from buf.

+ 8 - 4
src/or/connection.c

@@ -80,8 +80,10 @@ connection_t *connection_new(int type) {
   memset(conn,0,sizeof(connection_t)); /* zero it out to start */
 
   conn->type = type;
-  conn->inbuf = buf_new();
-  conn->outbuf = buf_new();
+  if(!connection_is_listener(conn)) { /* listeners never use their buf */
+    conn->inbuf = buf_new();
+    conn->outbuf = buf_new();
+  }
 
   conn->timestamp_created = now;
   conn->timestamp_lastread = now;
@@ -93,8 +95,10 @@ connection_t *connection_new(int type) {
 void connection_free(connection_t *conn) {
   assert(conn);
 
-  buf_free(conn->inbuf);
-  buf_free(conn->outbuf);
+  if(!connection_is_listener(conn)) {
+    buf_free(conn->inbuf);
+    buf_free(conn->outbuf);
+  }
   if(conn->address)
     free(conn->address);