72 lines
2.3 KiB
Diff
72 lines
2.3 KiB
Diff
|
|
From 624efd60495403743fc251b7d689d920841e44c8 Mon Sep 17 00:00:00 2001
|
||
|
|
From: caixiaomeng <caixiaomeng2@.com>
|
||
|
|
Date: Fri, 11 Oct 2024 17:54:04 +0800
|
||
|
|
Subject: [PATCH] fix xalarm_upgrade not return val and fail when thread
|
||
|
|
stopped
|
||
|
|
|
||
|
|
---
|
||
|
|
src/libso/xalarm/register_xalarm.c | 11 ++++++++++-
|
||
|
|
src/python/xalarm/register_xalarm.py | 10 +++++++---
|
||
|
|
2 files changed, 17 insertions(+), 4 deletions(-)
|
||
|
|
|
||
|
|
diff --git a/src/libso/xalarm/register_xalarm.c b/src/libso/xalarm/register_xalarm.c
|
||
|
|
index 952a28b..6768242 100644
|
||
|
|
--- a/src/libso/xalarm/register_xalarm.c
|
||
|
|
+++ b/src/libso/xalarm/register_xalarm.c
|
||
|
|
@@ -156,7 +156,11 @@ static void *alarm_recv(void *arg)
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
printf("recv error len:%d errno:%d\n", recvlen, errno);
|
||
|
|
- }
|
||
|
|
+ } else if (recvlen == 0) {
|
||
|
|
+ printf("connection closed by xalarmd, maybe connections reach max num or service stopped.\n");
|
||
|
|
+ g_register_info.thread_should_stop = 1;
|
||
|
|
+ break;
|
||
|
|
+ }
|
||
|
|
}
|
||
|
|
return NULL;
|
||
|
|
}
|
||
|
|
@@ -211,6 +215,11 @@ bool xalarm_Upgrade(struct alarm_subscription_info id_filter, int client_id)
|
||
|
|
printf("%s: invalid args\n", __func__);
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
+
|
||
|
|
+ if (g_register_info.thread_should_stop) {
|
||
|
|
+ printf("%s: upgrade failed, alarm thread has stopped\n", __func__);
|
||
|
|
+ return false;
|
||
|
|
+ }
|
||
|
|
set_alarm_id(id_filter);
|
||
|
|
|
||
|
|
return true;
|
||
|
|
diff --git a/src/python/xalarm/register_xalarm.py b/src/python/xalarm/register_xalarm.py
|
||
|
|
index 39623bd..2a6dabf 100644
|
||
|
|
--- a/src/python/xalarm/register_xalarm.py
|
||
|
|
+++ b/src/python/xalarm/register_xalarm.py
|
||
|
|
@@ -148,15 +148,19 @@ def xalarm_unregister(clientId: int) -> None:
|
||
|
|
ALARM_REGISTER_INFO = None
|
||
|
|
|
||
|
|
|
||
|
|
-def xalarm_upgrade(clientId: int, id_filter: list) -> None:
|
||
|
|
+def xalarm_upgrade(id_filter: list, clientId: int) -> bool:
|
||
|
|
global ALARM_REGISTER_INFO
|
||
|
|
if clientId < 0:
|
||
|
|
sys.stderr.write("xalarm_upgrade: invalid client\n")
|
||
|
|
- return
|
||
|
|
+ return False
|
||
|
|
if ALARM_REGISTER_INFO is None:
|
||
|
|
sys.stderr.write("xalarm_upgrade: alarm has not registered\n")
|
||
|
|
- return
|
||
|
|
+ return False
|
||
|
|
+ if ALARM_REGISTER_INFO.thread_should_stop:
|
||
|
|
+ sys.stderr.write("xalarm_upgrade: upgrade failed, alarm thread has stopped\n")
|
||
|
|
+ return False
|
||
|
|
ALARM_REGISTER_INFO.id_filter = id_filter
|
||
|
|
+ return True
|
||
|
|
|
||
|
|
|
||
|
|
def xalarm_getid(alarm_info: Xalarm) -> int:
|
||
|
|
--
|
||
|
|
2.27.0
|
||
|
|
|
||
|
|
|