]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: sock: add EPERM case in sock_handle_system_err
authorValentine Krasnobaeva <vkrasnobaeva@haproxy.com>
Tue, 23 Apr 2024 21:42:47 +0000 (23:42 +0200)
committerWilly Tarreau <w@1wt.eu>
Tue, 30 Apr 2024 19:39:32 +0000 (21:39 +0200)
setns() may return EPERM if thread, that tries to move into different
namespace, do not have CAP_SYS_ADMIN capability in its Effective set.
So, extending sock_handle_system_err() with this error allows to send
appropriate log message and set SF_ERR_PRXCOND (SC termination
flag in log) as stream termination error code. This error code can be
simply checked with SF_ERR_MASK at protocol layer.

src/sock.c

index a134505918ca5fac4b59e88ddfeba21ecebb55c3..4f2ba1a761ab9a099458c73ebf4413f7f71a57ec 100644 (file)
@@ -236,6 +236,13 @@ static int sock_handle_system_err(struct connection *conn, struct proxy *be)
                        conn->err_code = CO_ER_NOPROTO;
                        break;
 
+               case EPERM:
+                       send_log(be, LOG_EMERG,
+                                "Proxy %s has insufficient permissions to open server socket.\n",
+                                be->id);
+
+                       return SF_ERR_PRXCOND;
+
                default:
                        send_log(be, LOG_EMERG,
                                 "Proxy %s cannot create a server socket: %s\n",