+ if (buffered_data_bytes + buf_size > (1ULL << 30)) {
+ // More than 1GB of backlog; the client obviously isn't keeping up,
+ // so kill it instead of going out of memory. Note that this
+ // won't kill the client immediately, but will cause the next callback
+ // to kill the client.
+ should_quit = true;
+ buffered_data.clear();
+ has_buffered_data.notify_all();
+ return;
+ }
+