Przeglądaj źródła

sched: Extra careful in channel_outbuf_length()

In case we don't have a connection object in the channel, just be careful and
recover.

Signed-off-by: David Goulet <dgoulet@torproject.org>
David Goulet 6 lat temu
rodzic
commit
3d2d8d6841
1 zmienionych plików z 6 dodań i 0 usunięć
  1. 6 0
      src/or/scheduler_kist.c

+ 6 - 0
src/or/scheduler_kist.c

@@ -116,6 +116,12 @@ static scheduler_t *kist_scheduler = NULL;
 static inline size_t
 channel_outbuf_length(channel_t *chan)
 {
+  /* In theory, this can not happen because we can not scheduler a channel
+   * without a connection that has its outbuf initialized. Just in case, bug
+   * on this so we can understand a bit more why it happened. */
+  if (BUG(BASE_CHAN_TO_TLS(chan)->conn == NULL)) {
+    return 0;
+  }
   return buf_datalen(TO_CONN(BASE_CHAN_TO_TLS(chan)->conn)->outbuf);
 }