commit fe24bed4c712eaf1671850ed04504079acd33097
| author | 斟酌 鵬兄 <tgckpg@gmail.com> |
| date | 2026-05-30T18:41:31Z |
| subject | Removed the duplicated accepted_client struct |
commit fe24bed4c712eaf1671850ed04504079acd33097
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date: 2026-05-30T18:41:31Z
Removed the duplicated accepted_client struct
---
src/stream_conn.c | 16 +++++++---------
src/stream_conn.h | 6 +++++-
src/stream_listener.c | 34 +++++++++++++++++++++-------------
src/stream_route.h | 13 -------------
src/worker.h | 3 +--
5 files changed, 34 insertions(+), 38 deletions(-)
diff --git a/src/stream_conn.c b/src/stream_conn.c
index eab4f13..464c247 100644
--- a/src/stream_conn.c
+++ b/src/stream_conn.c
@@ -407,15 +407,13 @@ void worker_adopt_client_fd(struct worker *w, struct worker_stream_client_msg *a
bufferevent_enable(conn->upstream, EV_READ | EV_WRITE);
}
-int dispatch_client_fd(struct worker *w, struct accepted_client *ac)
+int dispatch_client_fd(struct worker *w,
+ const struct route *route,
+ evutil_socket_t fd,
+ const struct sockaddr *addr,
+ socklen_t addr_len)
{
- return worker_enqueue_stream_client(
- w,
- ac->route,
- ac->fd,
- (const struct sockaddr *)&ac->peer_addr,
- ac->peer_addr_len
- );
+ return worker_enqueue_stream_client(w, route, fd, addr, addr_len);
}
#ifdef FUZZ
@@ -436,7 +434,7 @@ int stream_route_adopt_client_for_fuzz(
w.base = base;
w.id = 0;
- struct accepted_client ac;
+ struct worker_stream_client_msg ac;
memset(&ac, 0, sizeof(ac));
ac.fd = client_fd;
diff --git a/src/stream_conn.h b/src/stream_conn.h
index 275761b..25b1673 100644
--- a/src/stream_conn.h
+++ b/src/stream_conn.h
@@ -5,7 +5,11 @@
struct worker_stream_client_msg;
-int dispatch_client_fd(struct worker *w, struct accepted_client *ac);
+int dispatch_client_fd(struct worker *w,
+ const struct route *route,
+ evutil_socket_t fd,
+ const struct sockaddr *addr,
+ socklen_t addr_len);
void free_conn(conn_t *conn);
void set_client_idle_timeout(conn_t *conn, const struct route *r);
diff --git a/src/stream_listener.c b/src/stream_listener.c
index 1aa4255..d7e0732 100644
--- a/src/stream_listener.c
+++ b/src/stream_listener.c
@@ -16,31 +16,39 @@ static void accept_cb(
int socklen,
void *arg
) {
+ struct stream_route_ctx *ctx = arg;
+ struct worker *w;
+ int rc;
+
(void)listener;
- struct stream_route_ctx *ctx = arg;
- struct accepted_client ac = {
- .fd = client_fd,
- .route = ctx->route,
- };
-
- if (addr != NULL && socklen > 0 && (size_t)socklen <= sizeof(ac.peer_addr)) {
- memcpy(&ac.peer_addr, addr, (size_t)socklen);
- ac.peer_addr_len = (socklen_t)socklen;
- } else {
- LOG_ERROR("invalid accepted client address", "socklen", _LOGV(socklen));
+ if (addr == NULL || socklen <= 0 || (size_t)socklen > sizeof(struct sockaddr_storage)) {
+ LOG_ERROR("invalid accepted client address",
+ "socklen", _LOGV(socklen)
+ );
evutil_closesocket(client_fd);
return;
}
- struct worker *w = worker_pool_next(ctx->worker_pool);
+ w = worker_pool_next(ctx->worker_pool);
if (!w) {
LOG_ERROR("no worker available", "socklen", _LOGV(socklen));
evutil_closesocket(client_fd);
return;
}
- if (dispatch_client_fd(w, &ac) != 0) {
+ rc = dispatch_client_fd(
+ w,
+ ctx->route,
+ client_fd,
+ addr,
+ (socklen_t)socklen
+ );
+ if (rc != 0) {
+ LOG_ERROR("failed to dispatch accepted client",
+ "worker", _LOGV(w->id),
+ "err", _LOGV(rc)
+ );
evutil_closesocket(client_fd);
}
}
diff --git a/src/stream_route.h b/src/stream_route.h
index f9d809e..747ed14 100644
--- a/src/stream_route.h
+++ b/src/stream_route.h
@@ -33,19 +33,6 @@ typedef struct conn_s {
bool close_client_after_drain;
} conn_t;
-struct accepted_client {
- const struct route *route;
- evutil_socket_t fd;
-
- struct sockaddr_storage peer_addr;
- socklen_t peer_addr_len;
-};
-
-struct accepted_client_node {
- struct accepted_client client;
- struct accepted_client_node *next;
-};
-
int start_stream_route(
struct event_base *accept_base,
struct worker_pool *wpool,
diff --git a/src/worker.h b/src/worker.h
index 6742d9f..68a5ce0 100644
--- a/src/worker.h
+++ b/src/worker.h
@@ -11,8 +11,6 @@
#include "compat.h"
#include "route.h"
-struct accept_client_node;
-
struct worker {
unsigned int id;
@@ -48,6 +46,7 @@ struct worker_msg {
union {
struct worker_stream_client_msg stream_client;
+// struct worker_datagram_packet_msg datagram_packet;
} payload;
};