Module: kamailio
Branch: master
Commit: ffef03ec9b0bb974c82dec694675999d62411461
URL: 
https://github.com/kamailio/kamailio/commit/ffef03ec9b0bb974c82dec694675999d62411461

Author: Daniel-Constantin Mierla <[email protected]>
Committer: Daniel-Constantin Mierla <[email protected]>
Date: 2026-03-03T10:30:40+01:00

evapi: added timeout for writing to client sockets

---

Modified: src/modules/evapi/evapi_dispatch.c
Modified: src/modules/evapi/evapi_dispatch.h

---

Diff:  
https://github.com/kamailio/kamailio/commit/ffef03ec9b0bb974c82dec694675999d62411461.diff
Patch: 
https://github.com/kamailio/kamailio/commit/ffef03ec9b0bb974c82dec694675999d62411461.patch

---

diff --git a/src/modules/evapi/evapi_dispatch.c 
b/src/modules/evapi/evapi_dispatch.c
index e8e099eedd7..01bd7dce579 100644
--- a/src/modules/evapi/evapi_dispatch.c
+++ b/src/modules/evapi/evapi_dispatch.c
@@ -412,11 +412,14 @@ int evapi_dispatch_notify(evapi_msg_t *emsg)
        int i;
        int n;
        int wlen;
+       struct timeval tv;
 
        if(_evapi_clients == NULL) {
                return 0;
        }
 
+       tv.tv_sec = EAVPI_CLIENT_SEND_TIMEOUT_US / 1000000;
+       tv.tv_usec = EAVPI_CLIENT_SEND_TIMEOUT_US % 1000000;
        n = 0;
        for(i = 0; i < EVAPI_MAX_CLIENTS; i++) {
                if(_evapi_clients[i].connected == 1 && _evapi_clients[i].sock 
>= 0) {
@@ -425,6 +428,8 @@ int evapi_dispatch_notify(evapi_msg_t *emsg)
                                                        && 
strncmp(_evapi_clients[i].stag.s, emsg->tag.s,
                                                                           
emsg->tag.len)
                                                                           == 
0)) {
+                               setsockopt(_evapi_clients[i].sock, SOL_SOCKET, 
SO_SNDTIMEO, &tv,
+                                               sizeof(struct timeval));
                                wlen = write(
                                                _evapi_clients[i].sock, 
emsg->data.s, emsg->data.len);
                                if(wlen != emsg->data.len) {
diff --git a/src/modules/evapi/evapi_dispatch.h 
b/src/modules/evapi/evapi_dispatch.h
index 37d7c088c30..7f20ba1d00c 100644
--- a/src/modules/evapi/evapi_dispatch.h
+++ b/src/modules/evapi/evapi_dispatch.h
@@ -26,6 +26,7 @@
 #include "../../core/pvar.h"
 
 #define EAVPI_TASK_SEND_TIMEOUT_US 200000
+#define EAVPI_CLIENT_SEND_TIMEOUT_US 500000
 
 int evapi_init_notify_sockets(void);
 

_______________________________________________
Kamailio - Development Mailing List -- [email protected]
To unsubscribe send an email to [email protected]
Important: keep the mailing list in the recipients, do not reply only to the 
sender!

Reply via email to