From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server-vie001.gnuweeb.org X-Spam-Level: X-Spam-Status: No, score=-1.2 required=5.0 tests=ALL_TRUSTED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,URIBL_DBL_BLOCKED_OPENDNS, URIBL_ZEN_BLOCKED_OPENDNS autolearn=ham autolearn_force=no version=3.4.6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gnuweeb.org; s=new2025; t=1753921652; bh=nIXL4DW3ziPFQFLAjtsGecHqPiSA8YeEQcKW6i5W3KA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Transfer-Encoding:Message-ID:Date:From: Reply-To:Subject:To:Cc:In-Reply-To:References:Resent-Date: Resent-From:Resent-To:Resent-Cc:User-Agent:Content-Type: Content-Transfer-Encoding; b=hKnhyZHtmrwPjXQ/ZWrmPBv1G6+Ho6Kbt/nULUHvEmAnom8EMHpDwdAhrNzLFkW5v XUK3uc51eHbxcxyOmr6roFwW7um2gvufLi61bbgcFCT6+rRBx/AHxCbE9A/pAkxCot qgCbi60x0HEF7eIJBbrOWbtGSqhGoXFlXcQjqyra/peoTHr/D9equjg42pTBIAEKNV 9jfRbLcOnEO2+IqiEibEgalIjeYLkAsDdAIvbxrmC/Uv2QwGfgcLbWykJ4jQ4edOJK cPC8+zJk3v3gRzGVrTqNsK6vGheQageH0U1PZoZPPYqder8k81p8rcFnumXRYytFJ3 r1Ib0AGzJJLlw== Received: from localhost.localdomain (unknown [68.183.184.174]) by server-vie001.gnuweeb.org (Postfix) with ESMTPSA id 3DDB03126EDD; Thu, 31 Jul 2025 00:27:31 +0000 (UTC) From: Alviro Iskandar Setiawan To: Ammar Faizi Cc: Alviro Iskandar Setiawan , GNU/Weeb Mailing List Subject: [PATCH gwproxy v1 1/2] io_uring: Add auth-file hot reload support Date: Thu, 31 Jul 2025 07:27:23 +0700 Message-Id: <20250731002724.294967-2-alviro.iskandar@gnuweeb.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20250731002724.294967-1-alviro.iskandar@gnuweeb.org> References: <20250731002724.294967-1-alviro.iskandar@gnuweeb.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: Handle auth-file hot reload from io_uring as well. Signed-off-by: Alviro Iskandar Setiawan --- src/gwproxy/ev/io_uring.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/gwproxy/ev/io_uring.c b/src/gwproxy/ev/io_uring.c index d6e9b9a..e0e3be2 100644 --- a/src/gwproxy/ev/io_uring.c +++ b/src/gwproxy/ev/io_uring.c @@ -746,6 +746,28 @@ static int handle_ev_dns_query(struct gwp_wrk *w, void *udata) return handle_socks5_connect_target(w, gcp); } +static void prep_socks5_auth_reload(struct gwp_wrk *w) +{ + static const size_t l = sizeof(struct inotify_event) + NAME_MAX + 1; + struct gwp_ctx *ctx = w->ctx; + struct io_uring_sqe *s; + + assert(ctx->socks5); + s = get_sqe_nofail(w); + io_uring_prep_read(s, ctx->ino_fd, ctx->ino_buf, l, 0); + s->user_data = EV_BIT_SOCKS5_AUTH_FILE; +} + +static int handle_ev_socks5_auth_file(struct gwp_wrk *w) +{ + struct gwp_ctx *ctx = w->ctx; + + prep_socks5_auth_reload(w); + gwp_socks5_auth_reload(ctx->socks5); + pr_info(&ctx->lh, "Reloaded SOCKS5 authentication file"); + return 0; +} + static int handle_event(struct gwp_wrk *w, struct io_uring_cqe *cqe) { void *udata = (void *)CLEAR_EV_BIT(cqe->user_data); @@ -795,6 +817,9 @@ static int handle_event(struct gwp_wrk *w, struct io_uring_cqe *cqe) pr_dbg(&ctx->lh, "Handling client send no callback event: %d", cqe->res); r = (cqe->res < 0) ? cqe->res : 0; break; + case EV_BIT_SOCKS5_AUTH_FILE: + pr_dbg(&ctx->lh, "Handling SOCKS5 auth file reload event: %d", cqe->res); + return handle_ev_socks5_auth_file(w); case EV_BIT_TARGET_CANCEL: gcp = udata; pr_dbg(&ctx->lh, "Handling target cancel event: %d", cqe->res); @@ -890,6 +915,9 @@ int gwp_ctx_thread_entry_io_uring(struct gwp_wrk *w) pr_info(&ctx->lh, "Worker %u started (io_uring)", w->idx); + if (w->idx == 0 && ctx->cfg.as_socks5 && ctx->ino_fd >= 0) + prep_socks5_auth_reload(w); + io_uring_set_iowait(&w->iou->ring, false); arm_accept(w); while (!ctx->stop) { -- Alviro Iskandar Setiawan