This is an automated email from the git hooks/post-receive script.
git pushed a commit to reference refs/pull/36/head
in repository terminology.
View the commit online.
commit 7b4528feef839a8776669a4addb08b010045dbf6
Author: [email protected] <[email protected]>
AuthorDate: Sun Mar 22 14:34:26 2026 -0600
fix: handle send errors and add defensive comment in tymux notify
Remove broken clients from the session when termsrv_msg_send fails
during flush+notify, preventing silent repeated failures on the same
dead fd. Add a comment explaining the defensive dirty-flag check in
the animator callback.
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
---
src/bin/termd_tymux.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/src/bin/termd_tymux.c b/src/bin/termd_tymux.c
index 95768340..31d8b5c2 100644
--- a/src/bin/termd_tymux.c
+++ b/src/bin/termd_tymux.c
@@ -351,7 +351,7 @@ static void
_tymux_flush_and_notify(TermDTymux *sess)
{
TermSrvMsgNotify pay;
- Eina_List *l;
+ Eina_List *l, *ln;
TermDClient *c;
_flush_screen_to_shm(sess);
@@ -372,8 +372,11 @@ _tymux_flush_and_notify(TermDTymux *sess)
else
pay.backlog_head_seq = 0;
- EINA_LIST_FOREACH(sess->clients, l, c)
- termsrv_msg_send(c->fd, TSRV_MSG_NOTIFY, &pay, sizeof(pay));
+ EINA_LIST_FOREACH_SAFE(sess->clients, l, ln, c)
+ {
+ if (termsrv_msg_send(c->fd, TSRV_MSG_NOTIFY, &pay, sizeof(pay)) < 0)
+ _client_remove(sess, c);
+ }
}
static Eina_Bool
@@ -382,6 +385,9 @@ _tymux_notify_anim_cb(void *data)
TermDTymux *sess = data;
sess->notify_anim = NULL;
+ /* Defensive: dirty is always EINA_TRUE when the animator fires
+ * (it is set before scheduling), but guard against future callers
+ * of ecore_animator_add that might not set dirty first. */
if (sess->dirty)
{
sess->dirty = EINA_FALSE;
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.