hc_handle.conn_index = new_hc_index;
ts->opaque = hc_handle.as_u32;
- HTTP_DBG (1, "half-open hc index %x, hc [%u]%x", ho_hc_index,
- ts->thread_index, new_hc_index);
+ HTTP_DBG (1, "half-open hc index %x, hc [%u]%x", ts->thread_index,
+ ho_hc_index, new_hc_index);
if ((rv = http_vfts[hc->version].transport_connected_callback (hc)))
{
hc_index = http_vfts[hr_handle.version].hc_index_get_by_req_index (
hr_handle.req_index, as->thread_index);
- HTTP_DBG (1, "hc [%u]%x", hc_index, as->connection_index);
+ HTTP_DBG (1, "hc [%u]%x", as->thread_index, hc_index);
hc = http_conn_get_w_thread (hc_index, as->thread_index);
http_conn_t *hc;
http_req_handle_t hr_handle;
- HTTP_DBG (1, "hc [%u]%x", vlib_get_thread_index (), req->hr_hc_index);
+ HTTP_DBG (1, "hc [%u]%x", req->c_thread_index, req->hr_hc_index);
hr_handle.as_u32 = req->hr_req_handle;
hc = http_conn_get_w_thread (req->hr_hc_index, req->c_thread_index);
{
http2_conn_ctx_t *h2c;
- ASSERT (!clib_llist_elt_is_linked (req, sched_list));
-
HTTP_DBG (1, "tunnel received data from app");
+ /* zero-copy proxy app can program new tx event before we were able to send
+ * previous payload, because fifos are shared, UDP/TCP clears evt on rx and
+ * proxy app program new tx evt for http */
+ if (clib_llist_elt_is_linked (req, sched_list))
+ {
+ http_req_deschedule (&req->base, sp);
+ return HTTP_SM_STOP;
+ }
+
/* add data back to stream scheduler */
HTTP_DBG (1, "adding to data queue req_index %x",
((http_req_handle_t) req->base.hr_req_handle).req_index);
app_worker_t *app_wrk;
int rv;
- HTTP_DBG (1, "hc [%u]%x req %x", hc->hc_hc_index, hc->c_thread_index,
+ HTTP_DBG (1, "hc [%u]%x req %x", hc->c_thread_index, hc->hc_hc_index,
req->hr_req_handle);
/* allocate app session and initialize */