sched: KIST scheduler should handle limited or failed connection write
This is specific to KIST as far as I can tell. KIST will flush cells one by one from the circuit queue to the outbuf as long as the socket TCP limit allows it. Now, I've seen on a normal relay using KIST flushing **164** cells at once onto the outbuf. This is fine, it is only 83968 bytes. Then, at some point, it will write to the kernel with `connection_handle_write(conn, 0)`. The returned value is ignored which is not good because that function will limit the number of bytes written to up to a maximum of ~8KB (~16 cells): ``` max_to_write = force ? (ssize_t)conn->outbuf_flushlen : connection_bucket_write_limit(conn, now); ``` We do not call the function with `force = 1` which would make us flush them all. And we probably don't want to do that because force=0 is respecting our bandwidth rate if any. So, I think we might want to have KIST to be a bit more wise here and on a per-channel basis, decide on a maximum number of cells it can flush which would respect our bucket size and priority?
issue