if (err)
                goto close;
 
-out:
        rtrs_iu_free(iu, srv_path->s.dev->ib_dev, 1);
        return;
 close:
+       rtrs_iu_free(iu, srv_path->s.dev->ib_dev, 1);
        close_path(srv_path);
-       goto out;
 }
 
 static int post_recv_info_req(struct rtrs_srv_con *con)
                        q_size = SERVICE_CON_QUEUE_DEPTH;
                else
                        q_size = srv->queue_depth;
+               if (srv_path->state != RTRS_SRV_CONNECTING) {
+                       rtrs_err(s, "Path state invalid. state %s\n",
+                                rtrs_srv_state_str(srv_path->state));
+                       return -EIO;
+               }
+
+               if (!srv_path->s.con[cid]) {
+                       rtrs_err(s, "Conn not set for %d\n", cid);
+                       return -EIO;
+               }
 
                err = post_recv_io(to_srv_con(srv_path->s.con[cid]), q_size);
                if (err) {