static void on_generator_dispose(void *_self) { struct rp_generator_t *self = _self; if (self->client != NULL) { h2o_http1client_cancel(self->client); self->client = NULL; } h2o_buffer_dispose(&self->last_content_before_send); h2o_doublebuffer_dispose(&self->sending); }
void h2o_mruby_send_chunked_dispose(h2o_mruby_generator_t *generator) { h2o_mruby_chunked_t *chunked = generator->chunked; h2o_doublebuffer_dispose(&chunked->sending); switch (chunked->type) { case H2O_MRUBY_CHUNKED_TYPE_CALLBACK: h2o_buffer_dispose(&chunked->callback.receiving); close_body_obj(generator); break; case H2O_MRUBY_CHUNKED_TYPE_SHORTCUT: /* note: no need to free reference from chunked->client, since it is disposed at the same moment */ if (chunked->shortcut.remaining != NULL) h2o_buffer_dispose(&chunked->shortcut.remaining); break; } }