From 59019b6384e014071c4c39fa9cbf9612f0195618 Mon Sep 17 00:00:00 2001 From: disolaterx Date: Wed, 21 Oct 2026 19:41:50 +0530 Subject: [PATCH] [mod_event_socket] Look up myevents headers once per event instead of once per listener event_handler() fetched the unique-id and Job-Owner-UUID headers inside the listener loop for every myevents listener. Each lookup walks the event's header list, so an event cost about two list scans per myevents listener while globals.listener_mutex was held. Fetch both headers once before the loop. --- .../event_handlers/mod_event_socket/mod_event_socket.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/mod/event_handlers/mod_event_socket/mod_event_socket.c b/src/mod/event_handlers/mod_event_socket/mod_event_socket.c index f72d33c8618..c61a25049f5 100644 --- a/src/mod/event_handlers/mod_event_socket/mod_event_socket.c +++ b/src/mod/event_handlers/mod_event_socket/mod_event_socket.c @@ -277,6 +277,8 @@ static void event_handler(switch_event_t *event) listener_t *l, *lp, *last = NULL; time_t now = switch_epoch_time_now(NULL); switch_status_t qstatus; + const char *uuid; + const char *job_owner_uuid; switch_assert(event != NULL); @@ -284,6 +286,9 @@ static void event_handler(switch_event_t *event) return; } + uuid = switch_event_get_header(event, "unique-id"); + job_owner_uuid = switch_event_get_header_nil(event, "Job-Owner-UUID"); + switch_mutex_lock(globals.listener_mutex); lp = listen_list.listeners; @@ -373,11 +378,10 @@ static void event_handler(switch_event_t *event) } if (send && switch_test_flag(l, LFLAG_MYEVENTS)) { - char *uuid = switch_event_get_header(event, "unique-id"); if (!uuid || (l->session && strcmp(uuid, switch_core_session_get_uuid(l->session)))) { send = 0; } - if (l->session && !strcmp(switch_core_session_get_uuid(l->session), switch_event_get_header_nil(event, "Job-Owner-UUID"))) { + if (l->session && !strcmp(switch_core_session_get_uuid(l->session), job_owner_uuid)) { send = 1; } }