static void server_close_all_streams(server_t server) { stream_t s, next, *spp; for (spp = &server->used_chain; (s = *spp) != NULL; s = next) { next = s->next; server_stream_destroy(server, s); *spp = next; s->next = server->free_chain; server->free_chain = s; } }
static void server_close_bad_streams(server_t server) { int i; for (i = server->streamsnum - 1; i >= 0; i--) { stream_t stream = server->streams + i; if (!stream->good) { server_stream_destroy(server, stream); if (i != server->streamsnum - 1) { // move the last one here *stream = server->streams[server->streamsnum - 1]; stream_move(stream, server->streams + server->streamsnum - 1); } server->streamsnum--; } } }