diff --git a/lnet/klnds/socklnd/socklnd.c b/lnet/klnds/socklnd/socklnd.c index 7118a80dcfb890b3be65f3e68e3de9f1e2d56e06..05b9e5ccc3675bb6b0f9a7b5845fe15a889e1a1a 100644 --- a/lnet/klnds/socklnd/socklnd.c +++ b/lnet/klnds/socklnd/socklnd.c @@ -1504,12 +1504,13 @@ ksocknal_terminate_conn (ksock_conn_t *conn) /* wake up the scheduler to "send" all remaining packets to /dev/null */ spin_lock_bh (&sched->kss_lock); + /* a closing conn is always ready to tx */ + conn->ksnc_tx_ready = 1; + if (!conn->ksnc_tx_scheduled && !list_empty(&conn->ksnc_tx_queue)){ list_add_tail (&conn->ksnc_tx_list, &sched->kss_tx_conns); - /* a closing conn is always ready to tx */ - conn->ksnc_tx_ready = 1; conn->ksnc_tx_scheduled = 1; /* extra ref for scheduler */ ksocknal_conn_addref(conn);