s = session_get (tc->s_index, tc->thread_index);
if (s->session_state >= SESSION_STATE_TRANSPORT_CLOSING)
return;
+
+ /* Wait for reply from app before sending notification as the
+ * accept might be rejected */
+ if (s->session_state == SESSION_STATE_ACCEPTING)
+ {
+ s->session_state = SESSION_STATE_TRANSPORT_CLOSING;
+ return;
+ }
+
s->session_state = SESSION_STATE_TRANSPORT_CLOSING;
app_wrk = app_worker_get (s->app_wrk_index);
app_worker_close_notify (app_wrk, s);
svm_fifo_dequeue_drop_all (s->tx_fifo);
if (s->session_state >= SESSION_STATE_TRANSPORT_CLOSING)
return;
+ if (s->session_state == SESSION_STATE_ACCEPTING)
+ {
+ s->session_state = SESSION_STATE_TRANSPORT_CLOSING;
+ return;
+ }
s->session_state = SESSION_STATE_TRANSPORT_CLOSING;
app_wrk = app_worker_get (s->app_wrk_index);
app_worker_reset_notify (app_wrk, s);