diff options
author | np <np@FreeBSD.org> | 2016-03-29 01:41:07 +0000 |
---|---|---|
committer | np <np@FreeBSD.org> | 2016-03-29 01:41:07 +0000 |
commit | 0e3e40ed07a47e345b790e7133a53715d5b109c9 (patch) | |
tree | 36df56f60be28f02a11dbaff517cb34d42fb7199 /sys/contrib | |
parent | 0d21619c69891febed967cea0c75ab963de2a138 (diff) | |
download | FreeBSD-src-0e3e40ed07a47e345b790e7133a53715d5b109c9.zip FreeBSD-src-0e3e40ed07a47e345b790e7133a53715d5b109c9.tar.gz |
krping wasn't designed to take more than one client. Fail any connect
requests if cb->state is not IDLE.
Submitted by: Krishnamraju Eraparaju @ Chelsio
Reviewed by: Steve Wise @ Open Grid Computing
Sponsored by: Chelsio Communications
Diffstat (limited to 'sys/contrib')
-rw-r--r-- | sys/contrib/rdma/krping/krping.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/sys/contrib/rdma/krping/krping.c b/sys/contrib/rdma/krping/krping.c index e99ff7f..3ad881e 100644 --- a/sys/contrib/rdma/krping/krping.c +++ b/sys/contrib/rdma/krping/krping.c @@ -266,8 +266,13 @@ static int krping_cma_event_handler(struct rdma_cm_id *cma_id, break; case RDMA_CM_EVENT_CONNECT_REQUEST: - cb->state = CONNECT_REQUEST; - cb->child_cm_id = cma_id; + if (cb->state == IDLE) { + cb->state = CONNECT_REQUEST; + cb->child_cm_id = cma_id; + } else { + PRINTF(cb, "Received connection request in wrong state" + " (%d)\n", cb->state); + } DEBUG_LOG(cb, "child cma %p\n", cb->child_cm_id); wake_up_interruptible(&cb->sem); break; |