Skip to content

Commit f9d2e45

Browse files
Add check for socket shutdown in homa_rpc_handoff
1 parent 0fa4c1b commit f9d2e45

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

homa_incoming.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1263,6 +1263,10 @@ void homa_rpc_handoff(struct homa_rpc *rpc)
12631263
* otherwise enqueue it.
12641264
*/
12651265
homa_sock_lock(hsk);
1266+
if (hsk->shutdown) {
1267+
homa_sock_unlock(hsk);
1268+
return;
1269+
}
12661270
if (!list_empty(&hsk->interests)) {
12671271
#ifndef __STRIP__ /* See strip.py */
12681272
interest = homa_choose_interest(hsk);

test/unit_homa_incoming.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2577,6 +2577,20 @@ TEST_F(homa_incoming, homa_rpc_handoff__private_rpc)
25772577
EXPECT_TRUE(list_empty(&self->hsk.ready_rpcs));
25782578
homa_interest_unlink_private(&interest);
25792579
}
2580+
TEST_F(homa_incoming, homa_rpc_handoff__socket_shutdown)
2581+
{
2582+
struct homa_rpc *crpc = unit_client_rpc(&self->hsk,
2583+
UNIT_OUTGOING, self->client_ip, self->server_ip,
2584+
self->server_port, self->client_id, 20000, 1600);
2585+
2586+
ASSERT_NE(NULL, crpc);
2587+
unit_log_clear();
2588+
2589+
self->hsk.shutdown = 1;
2590+
homa_rpc_handoff(crpc);
2591+
self->hsk.shutdown = 0;
2592+
EXPECT_TRUE(list_empty(&self->hsk.ready_rpcs));
2593+
}
25802594
TEST_F(homa_incoming, homa_rpc_handoff__handoff_to_shared_interest)
25812595
{
25822596
struct homa_rpc *crpc = unit_client_rpc(&self->hsk,

0 commit comments

Comments
 (0)