From 8a2f29c9b5415846de5b7cf6407af68196830407 Mon Sep 17 00:00:00 2001 From: zhanghongyu Date: Mon, 29 Aug 2022 22:53:20 +0800 Subject: [PATCH] usrsock_server: fix unblock socket connect error Signed-off-by: zhanghongyu --- netutils/usrsock_rpmsg/usrsock_rpmsg_server.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/netutils/usrsock_rpmsg/usrsock_rpmsg_server.c b/netutils/usrsock_rpmsg/usrsock_rpmsg_server.c index 6cd3c8b32..46b8f0c43 100644 --- a/netutils/usrsock_rpmsg/usrsock_rpmsg_server.c +++ b/netutils/usrsock_rpmsg/usrsock_rpmsg_server.c @@ -178,7 +178,7 @@ static int usrsock_rpmsg_send_ack(struct rpmsg_endpoint *ept, ack.head.events = events; ack.xid = xid; - ack.result = result; + ack.result = result == -EINPROGRESS ? 0 : result; return rpmsg_send(ept, &ack, sizeof(ack)); } @@ -317,14 +317,15 @@ static int usrsock_rpmsg_connect_handler(struct rpmsg_endpoint *ept, { ret = psock_connect(&priv->socks[req->usockid], (const struct sockaddr *)(req + 1), req->addrlen); - if (ret == -EINPROGRESS) - { - inprogress = true; - ret = 0; - } } retr = usrsock_rpmsg_send_ack(ept, 0, req->head.xid, ret); + if (ret == -EINPROGRESS) + { + inprogress = true; + ret = 0; + } + if (retr >= 0 && ret >= 0 && priv->pfds[req->usockid].ptr == NULL) { pthread_mutex_lock(&priv->mutex);