+ if (s->http_server->http_channel_freelist_max > 0 && s->http_server->http_channel_freelist_count >= s->http_server->http_channel_freelist_max) {
+ while ((s->next = s->http_server->http_channel_freelist)) {
+ nmem_destroy(s->next->nmem);
+ wrbuf_destroy(s->next->wrbuf);
+ xfree(s->next);
+ s->http_server->http_channel_freelist = s->http_server->http_channel_freelist->next;
+ }
+ s->http_server->http_channel_freelist_count = 0;
+ }
+ else {
+ s->next = s->http_server->http_channel_freelist;
+ s->http_server->http_channel_freelist = s;
+ s->http_server->http_channel_freelist_count++;
+ yaz_log(YLOG_DEBUG, "Free %d channels on server.", s->http_server->http_channel_freelist_count);
+ }