app_worker_t *app_wrk;
as = session_get_from_handle (req->hr_pa_session_handle);
- app_wrk = app_worker_get_if_valid (as->app_wrk_index);
- if (app_wrk)
- app_worker_rx_notify (app_wrk, as);
+ if (!(as->flags & SESSION_F_RX_EVT))
+ {
+ app_wrk = app_worker_get_if_valid (as->app_wrk_index);
+ if (app_wrk)
+ {
+ as->flags |= SESSION_F_RX_EVT;
+ app_worker_rx_notify (app_wrk, as);
+ }
+ }
}
/**
http_io_as_write (http_req_t *req, u8 *data, u32 len)
{
int n_written;
- session_t *ts = session_get_from_handle (req->hr_pa_session_handle);
+ session_t *as = session_get_from_handle (req->hr_pa_session_handle);
- n_written = svm_fifo_enqueue (ts->tx_fifo, len, data);
+ n_written = svm_fifo_enqueue (as->rx_fifo, len, data);
ASSERT (n_written == len);
}
if (svm_fifo_max_dequeue (ts->rx_fifo) < hs->left_recv)
{
clib_warning ("not all data in fifo, max deq %u, left recv %u",
- ts->rx_fifo, hs->left_recv);
+ svm_fifo_max_dequeue (ts->rx_fifo), hs->left_recv);
hs->left_recv = 0;
start_send_data (hs, HTTP_STATUS_INTERNAL_ERROR);
hss_session_disconnect_transport (hs);