\r
CL_ASSERT( wr_type == WR_RDMA_WRITE || wr_type == WR_RDMA_READ );\r
\r
- /* Check the state of the socket */\r
- if( socket_info->socket_state != IBSP_CONNECTED )\r
+ cl_spinlock_acquire( &socket_info->mutex );\r
+ switch( socket_info->socket_state )\r
{\r
+ case IBSP_CONNECTED:\r
+ case IBSP_DISCONNECTED:\r
+ break;\r
+\r
+ default:\r
+ cl_spinlock_release( &socket_info->mutex );\r
IBSP_ERROR_EXIT(\r
("Socket is not in connected socket_state state=%s\n",\r
IBSP_SOCKET_STATE_STR( socket_info->socket_state )) );\r
*lpErrno = WSAENOTCONN;\r
return SOCKET_ERROR;\r
}\r
+ cl_spinlock_release( &socket_info->mutex );\r
\r
if( socket_info->qp_error )\r
{\r
return SOCKET_ERROR;\r
}\r
\r
- /* Check the state of the socket */\r
- if( socket_info->socket_state != IBSP_CONNECTED )\r
+ cl_spinlock_acquire( &socket_info->mutex );\r
+ switch( socket_info->socket_state )\r
{\r
+ case IBSP_CONNECTED:\r
+ case IBSP_DISCONNECTED:\r
+ break;\r
+\r
+ default:\r
+ cl_spinlock_release( &socket_info->mutex );\r
IBSP_ERROR_EXIT(\r
("Socket is not in connected socket_state state=%s\n",\r
IBSP_SOCKET_STATE_STR( socket_info->socket_state )) );\r
*lpErrno = WSAENOTCONN;\r
return SOCKET_ERROR;\r
}\r
+ cl_spinlock_release( &socket_info->mutex );\r
\r
if( socket_info->qp_error != 0 )\r
{\r
CL_ASSERT( lpOverlapped != NULL );\r
\r
cl_spinlock_acquire( &socket_info->mutex );\r
- /* Check the state of the socket */\r
switch( socket_info->socket_state )\r
{\r
case IBSP_CONNECTED:\r
break;\r
\r
default:\r
- IBSP_ERROR_EXIT( ("Socket is not in connected socket_state \n") );\r
+ cl_spinlock_release( &socket_info->mutex );\r
+ IBSP_ERROR_EXIT(\r
+ ("Socket is not in connected socket_state state=%s\n",\r
+ IBSP_SOCKET_STATE_STR( socket_info->socket_state )) );\r
*lpErrno = WSAENOTCONN;\r
return SOCKET_ERROR;\r
}\r