Commit 27220fb3 authored by Nick Mathewson's avatar Nick Mathewson 🥔
Browse files

r15719@tombo: nickm | 2007-12-26 14:02:12 -0500

 More tweaks on 0-byte TLS writes.


svn:r12989
parent 80151b42
Loading
Loading
Loading
Loading
+15 −7
Original line number Diff line number Diff line
@@ -231,7 +231,8 @@ buf_shrink_freelists(int free_all)
      int n_to_skip = freelists[i].cur_length - n_to_free;
      chunk_t **chp = &freelists[i].head;
      chunk_t *chunk;
      log_notice(LD_MM, "FL for %d: keep %d, drop %d.",
      log_info(LD_MM, "Cleaning freelist for %d-byte chunks: keeping %d, "
               "dropping %d.",
               (int)freelists[i].alloc_size, n_to_skip, n_to_free);
      while (n_to_skip) {
        tor_assert((*chp)->next);
@@ -670,12 +671,19 @@ flush_chunk_tls(tor_tls_t *tls, buf_t *buf, chunk_t *chunk,
{
  int r;
  size_t forced;
  char *data;

  forced = tor_tls_get_forced_write_size(tls);
  if (forced > sz)
    sz = forced;
  if (chunk) {
    data = chunk->data;
    tor_assert(sz <= chunk->datalen);
  r = tor_tls_write(tls, chunk->data, sz);
  } else {
    data = NULL;
    tor_assert(sz == 0);
  }
  r = tor_tls_write(tls, data, sz);
  if (r < 0)
    return r;
  if (*buf_flushlen > (size_t)r)
@@ -742,7 +750,7 @@ flush_buf_tls(tor_tls_t *tls, buf_t *buf, size_t flushlen, size_t *buf_flushlen)
  check_no_tls_errors();

  check();
  while (sz >= 0) {
  do {
    size_t flushlen0;
    if (buf->head) {
      if ((ssize_t)buf->head->datalen >= sz)
@@ -759,7 +767,7 @@ flush_buf_tls(tor_tls_t *tls, buf_t *buf, size_t flushlen, size_t *buf_flushlen)
      return r;
    flushed += r;
    sz -= r;
  }
  } while (sz > 0);
  return flushed;
}