head 1.1; access; symbols; locks; strict; comment @ * @; 1.1 date 2026.11.09.05.37.21; author jnemeth; state Exp; branches; next ; commitid nfklAD0yCz3anK2H; desc @@ 1.1 log @comms/asterisk24: import asterisk-24.0.0 Asterisk is a complete PBX in software. It provides all of the features you would expect from a PBX and more. Asterisk does voice over IP in three protocols, and can interoperate with almost all standards-based telephony equipment using relatively inexpensive hardware. Asterisk provides Voicemail services with Directory, Call Conferencing, Interactive Voice Response, Call Queuing. It has support for three-way calling, caller ID services, ADSI, SIP and H.323 (as both client and gateway). This is a Long Term Support version. It is scheduled to go to security fixes only on October 15th, 2030, and EOL on October 15th, 2031. See here for more information about Asterisk versions: https://docs.asterisk.org/About-the-Project/Asterisk-Versions/ @ text @$NetBSD: patch-main_taskprocessor.c,v 1.1 2025/10/27 06:58:39 jnemeth Exp $ * Fix segfault under NetBSD/aarch64 9.99.80. --- main/taskprocessor.c.orig 2021-01-21 16:28:04.000000000 +0000 +++ main/taskprocessor.c @@@@ -37,6 +37,13 @@@@ #include "asterisk/taskprocessor.h" #include "asterisk/sem.h" +/* XXX, pthread_equal() is misused to compare non-valid thread pointers */ +static int +pt_pthread_equal(pthread_t t1, pthread_t t2) +{ + return t1 == t2; +} + /*! * \brief tps_task structure is queued to a taskprocessor * @@@@ -263,7 +270,7 @@@@ static void default_listener_shutdown(st ast_assert(pvt->poll_thread != AST_PTHREADT_NULL); - if (pthread_equal(pthread_self(), pvt->poll_thread)) { + if (pt_pthread_equal(pthread_self(), pvt->poll_thread)) { res = pthread_detach(pvt->poll_thread); if (res != 0) { ast_log(LOG_ERROR, "pthread_detach(): %s\n", strerror(errno)); @@@@ -1268,7 +1275,7 @@@@ int ast_taskprocessor_is_task(struct ast int is_task; ao2_lock(tps); - is_task = pthread_equal(tps->thread, pthread_self()); + is_task = pt_pthread_equal(tps->thread, pthread_self()); ao2_unlock(tps); return is_task; } @