h2_task *h2_task_create(long session_id, int stream_id, apr_pool_t *stream_pool, h2_mplx *mplx) { h2_task *task = apr_pcalloc(stream_pool, sizeof(h2_task)); if (task == NULL) { ap_log_perror(APLOG_MARK, APLOG_ERR, APR_ENOMEM, stream_pool, "h2_task(%ld-%d): create stream task", session_id, stream_id); h2_mplx_out_close(mplx, stream_id); return NULL; } APR_RING_ELEM_INIT(task, link); task->id = apr_psprintf(stream_pool, "%ld-%d", session_id, stream_id); task->stream_id = stream_id; task->mplx = mplx; /* We would like to have this happening when our task is about * to be processed by the worker. But something corrupts our * stream pool if we shift this to the worker thread. * TODO. */ task->conn = h2_conn_create(mplx->c, stream_pool); if (task->conn == NULL) { return NULL; } ap_log_perror(APLOG_MARK, APLOG_DEBUG, 0, stream_pool, "h2_task(%s): created", task->id); return task; }
h2_task *h2_task_create(long session_id, int stream_id, apr_pool_t *stream_pool, h2_mplx *mplx, conn_rec *c) { h2_task *task = apr_pcalloc(stream_pool, sizeof(h2_task)); if (task == NULL) { ap_log_perror(APLOG_MARK, APLOG_ERR, APR_ENOMEM, stream_pool, "h2_task(%ld-%d): create stream task", session_id, stream_id); h2_mplx_out_close(mplx, stream_id); return NULL; } APR_RING_ELEM_INIT(task, link); task->id = apr_psprintf(stream_pool, "%ld-%d", session_id, stream_id); task->stream_id = stream_id; task->mplx = mplx; task->c = c; ap_log_perror(APLOG_MARK, APLOG_DEBUG, 0, stream_pool, "h2_task(%s): created", task->id); return task; }
h2_task *h2_task_create(long session_id, const h2_request *req, apr_pool_t *pool, h2_mplx *mplx, int eos) { h2_task *task = apr_pcalloc(pool, sizeof(h2_task)); if (task == NULL) { ap_log_perror(APLOG_MARK, APLOG_ERR, APR_ENOMEM, pool, APLOGNO(02941) "h2_task(%ld-%d): create stream task", session_id, req->id); h2_mplx_out_close(mplx, req->id, NULL); return NULL; } task->id = apr_psprintf(pool, "%ld-%d", session_id, req->id); task->stream_id = req->id; task->pool = pool; task->mplx = mplx; task->c = h2_conn_create(mplx->c, task->pool); task->request = req; task->input_eos = eos; return task; }