From a2fdbb6afbfc52c2f7c2a76ec564dddabf605350 Mon Sep 17 00:00:00 2001 From: evgeny Date: Mon, 19 Oct 2026 14:55:55 +0200 Subject: [PATCH] Define automatic rejection policy for phone busy subscribers --- src/call/call.h | 2 +- src/call/call_proto.h | 1 + src/utun_instance.h | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/call/call.h b/src/call/call.h index 6dc84f52..ab5797f9 100644 --- a/src/call/call.h +++ b/src/call/call.h @@ -40,7 +40,7 @@ int call_busy(struct UTUN_INSTANCE* inst); /* Продолжить исходящий вызов после предупреждения о телефонной занятости. Только uasync. */ void call_continue(struct UTUN_INSTANCE* inst, uint64_t call_id); /* Живой статус ОС: 0=неизвестно, 1=свободен, 2=занят. Только uasync; публикует BGP при изменении. */ -void call_set_phone_state(struct UTUN_INSTANCE* inst, int state, int publish, int notify); +void call_set_phone_state(struct UTUN_INSTANCE* inst, int state, int publish, int notify, int reject); /* Флаги BGP PHONE_KNOWN/BUSY с учётом собственного обычного звонка. Только uasync. */ uint8_t call_phone_status(struct UTUN_INSTANCE* inst); diff --git a/src/call/call_proto.h b/src/call/call_proto.h index 7e10edc9..3912d84d 100644 --- a/src/call/call_proto.h +++ b/src/call/call_proto.h @@ -40,6 +40,7 @@ enum { CALL_REASON_NO_TRAFFIC = 5, CALL_REASON_RING_TIMEOUT = 6, CALL_REASON_CONNECT_FAIL = 7, + CALL_REASON_PHONE_BUSY = 8, /* автоматический отказ: абонент разговаривает по телефону */ }; #pragma pack(push, 1) diff --git a/src/utun_instance.h b/src/utun_instance.h index ea6ba8c1..93ccc235 100644 --- a/src/utun_instance.h +++ b/src/utun_instance.h @@ -264,6 +264,7 @@ struct UTUN_INSTANCE { uint8_t phone_state; // 0=неизвестно, 1=свободен, 2=занят; живое состояние ОС, не сохраняется uint8_t phone_status_hidden; // не публиковать телефонную занятость в BGP uint8_t phone_notify_enabled; // предупреждать вызывающего о телефонной занятости + uint8_t phone_reject_enabled; // отклонять входящие при телефонной занятости; приоритетнее предупреждения struct utun_activity_cbk_entry* activity_cbks; // подписки на смену client_activity struct peer_sleep_cbk_entry* peer_sleep_cbks; // подписки на смену спячки пира (keepalive)