netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] net/smc: sync err info when TCP connection is refused
@ 2022-04-17 12:33 yacanliu
  2022-04-19 10:23 ` Tony Lu
  2022-04-21  8:09 ` Paolo Abeni
  0 siblings, 2 replies; 4+ messages in thread
From: yacanliu @ 2022-04-17 12:33 UTC (permalink / raw)
  To: kgraul, davem, kuba, pabeni; +Cc: linux-s390, netdev, linux-kernel, liuyacan

From: liuyacan <liuyacan@corp.netease.com>

In the current implementation, when TCP initiates a connection
to an unavailable [ip,port], ECONNREFUSED will be stored in the
TCP socket, but SMC will not. However, some apps (like curl) use
getsockopt(,,SO_ERROR,,) to get the error information, which makes
them miss the error message and behave strangely.

Signed-off-by: liuyacan <liuyacan@corp.netease.com>
---
 net/smc/af_smc.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/net/smc/af_smc.c b/net/smc/af_smc.c
index fc7b6eb22..bbb1a4ce5 100644
--- a/net/smc/af_smc.c
+++ b/net/smc/af_smc.c
@@ -1475,6 +1475,8 @@ static void smc_connect_work(struct work_struct *work)
 		smc->sk.sk_state = SMC_CLOSED;
 		if (rc == -EPIPE || rc == -EAGAIN)
 			smc->sk.sk_err = EPIPE;
+		else if (rc == -ECONNREFUSED)
+			smc->sk.sk_err = ECONNREFUSED;
 		else if (signal_pending(current))
 			smc->sk.sk_err = -sock_intr_errno(timeo);
 		sock_put(&smc->sk); /* passive closing */
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-04-21  8:10 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-04-17 12:33 [PATCH] net/smc: sync err info when TCP connection is refused yacanliu
2022-04-19 10:23 ` Tony Lu
2022-04-19 10:37   ` Karsten Graul
2022-04-21  8:09 ` Paolo Abeni

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).