Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
645 commits
Select commit Hold shift + click to select a range
6c24457
Fixed SIP TLS to update local address only if IP version is correct (…
sauwming Sep 26, 2025
7cdd155
Merge upstream/master into master
Sep 28, 2025
21d651d
Avoid deadlock involving ioqueue read callback (#4569)
nanangizz Sep 29, 2025
7eccd2c
Improve performance of pj_get_timestamp on Darwin (#4567)
saghul Sep 30, 2025
921c441
Merge upstream/master into master
Oct 5, 2025
9713978
Copy bound addr to get the port settings for stun sock (#4614)
trengginas Oct 6, 2025
680c329
Update aectest to support WebRTC AEC3 (#4616)
nanangizz Oct 6, 2025
7e847be
Fix android video codec overflow (#4617)
wxiaoguang Oct 9, 2025
b772200
Fix failed android unit test on video call (#4621)
trengginas Oct 9, 2025
33d66a0
Fix wrong TCP/TLS source port in Contact & Via (#4627)
nanangizz Oct 10, 2025
9cc0309
Fix SDP negotiation for audio with asymmetric encoding parameters (#4…
nanangizz Oct 10, 2025
9a36f7c
Merge upstream/master into master
Oct 12, 2025
40f6c97
Defer response for incoming SIP MESSAGE requests (#4598)
wosrediinanatour Oct 13, 2025
64177d1
CI test: more lenient timestamp test (#4632)
nanangizz Oct 13, 2025
fc9f0d8
Printf format style params decoration (#4625)
LeonidGoltsblat Oct 14, 2025
a4b0b7b
Fix C++11 compatibility errors with std::make_unique and inline stati…
Copilot Oct 14, 2025
7be99a9
Fix build fail for Android due to incorrect AMediaCodec detection (#4…
trengginas Oct 14, 2025
8d5a561
Signed-off-by: Pesala Silva <pesala.silva@ifs.com>Bug_Fixes_and_optim…
PesalaDeSilva Oct 14, 2025
2776fe3
Fix Coverity and build warnings across multiple modules (#4637)
Copilot Oct 14, 2025
5daf06c
Add pjsip_tls_transport_restart2() and pjsua_transport_lis_restart() …
Copilot Oct 16, 2025
0adcacb
Avoid setup change upon DTLS reinvite (#4639)
sauwming Oct 16, 2025
a4348e3
Merge upstream/master into master
Oct 19, 2025
3cadcc8
Pj file io (#4638)
LeonidGoltsblat Oct 20, 2025
86505a7
Avoid using PJ_EEOF to indicate SSL renegotiation (#4642)
nanangizz Oct 20, 2025
e3cfd0e
Add manual host candidates for ICE (#4618)
nanangizz Oct 20, 2025
c8a6f92
pj_threading on external threads (#4626)
LeonidGoltsblat Oct 20, 2025
3a2e7a7
Expose SIP ioqueue handle via pjsua2 Endpoint (#4599)
IkerAriz Oct 20, 2025
18595ca
Add API to get number of queued DTMF transmission digits (#4645)
Copilot Oct 21, 2025
9be0310
Add option to specify contact URI when making call (PJSUA and PJSUA2)…
Copilot Oct 22, 2025
3a5dfe4
Fix Coverity OVERLAPPING_COPY warning by checking format specifier (#…
Copilot Oct 23, 2025
209cda9
Merge upstream/master into master
Oct 26, 2025
11373d2
Handle empty elements in generic array header parsing (Supported, Acc…
Copilot Oct 30, 2025
a5e7968
Merge upstream/master into master
Nov 2, 2025
864bb28
Prevent crash when pjsip_inv_verify_request3() return error (#4503)
trengginas Nov 4, 2025
de22a95
Update doxygen.h (#4662)
prepstarr Nov 5, 2025
0aaab93
Race condition during AEC settings modification when sound device is …
sauwming Nov 7, 2025
3b285cf
Extended TX DTMF configuration and features in stream (#4663)
mike2307 Nov 7, 2025
55964d8
Fix use-after-free issue when rewriting SDP pt (#4661)
sauwming Nov 7, 2025
a8350bb
Merge upstream/master into master
Nov 9, 2025
4c46ef9
Fix build warnings on Windows, Linux, and Mac (#4667)
Copilot Nov 10, 2025
04662e3
Direct OpenSSL objects for TLS credentials (key, certificate) (#4566)
nanangizz Nov 11, 2025
40470cf
Add dual-octet VP8 picture ID to payload descriptor (#4660)
Copilot Nov 11, 2025
b59898e
Fixed crash if pjsua is destroyed prematurely (#4671)
sauwming Nov 11, 2025
4ea19ee
Fix linker warnings for non-existent library search paths on macOS (#…
Copilot Nov 11, 2025
d08863e
Update CI tests to include parallel conference bridge (#4672)
nanangizz Nov 11, 2025
e69191e
Try to use SCHED_RR when setting Posix's thread max priority (#4654)
trengginas Nov 12, 2025
5410a92
Fix compile warnings on VS2022 (#4673)
nanangizz Nov 12, 2025
8a17607
Update default Android API level to at least 23 (#4677)
nanangizz Nov 12, 2025
5010b87
Suppress PJ_TODO warnings in CI builds and fix compiler warnings (#4675)
Copilot Nov 13, 2025
784c6ae
pjsua_media: Clear media arrays to avoid potentially uninitialized ac…
amubiera Nov 13, 2025
6685053
Handle redundancy payload type mapping ensuring symmetric PT (#4548)
trengginas Nov 13, 2025
7c6532d
Fix compile warnings on gcc/llvm (#4678)
nanangizz Nov 14, 2025
756c1e5
Merge upstream/master into master
Nov 16, 2025
bb89daf
PJSUA2 call.hpp should include account.hpp (#4680)
nanangizz Nov 17, 2025
47e8500
Fix assertion in DTLS-SRTP (#4682)
nanangizz Nov 17, 2025
8bb8573
More race condition during AEC settings modification when sound devic…
nanangizz Nov 20, 2025
6e9bd2e
Merge commit from fork
nanangizz Nov 20, 2025
09c97a7
Various fixes for iOS pjsua sample app (#4685)
sauwming Nov 20, 2025
472c96c
Set started flag after restarting audio device when modifying EC sett…
nanangizz Nov 20, 2025
f9dd87e
Fix libc++ duplicate libraries warning on Mac (#4691)
sauwming Nov 21, 2025
4a70a36
Fix issues reported by Coverity (#4690)
nanangizz Nov 21, 2025
fa58762
Fix compile warnings in Opus on MSVC (#4692)
nanangizz Nov 21, 2025
83c4fc0
Merge upstream/master into master
Nov 23, 2025
50b4164
Acquire pjsua lock before transport manager lock to maintain consiste…
nanangizz Nov 25, 2025
6cab30c
Changed version to 2.16
sauwming Nov 26, 2025
92e624f
Changed version to 2.16-dev
sauwming Nov 26, 2025
1730b54
Merge upstream/master into master
Nov 30, 2025
359c579
Fix pj/os.h header file (#4695)
silentindark Dec 3, 2025
e918953
Merge upstream/master into master
Dec 7, 2025
f8561ad
Fix use of external pool with video stream (#4705)
kunkku Dec 10, 2025
b927209
Add conference reference to pjmedia_conf_op_info/pjmedia_vid_conf_op_…
trengginas Dec 11, 2025
655cd98
Merge upstream/master into master
Dec 14, 2025
d5c57d3
Fix build failure with recent libyuv: unknown type uint8 (#4701)
nanangizz Dec 15, 2025
565f398
Assertion in video stream's sending manager thread (#4710)
nanangizz Dec 15, 2025
e7fb19b
Fix UDP media transport destruction without group lock (#4713)
sauwming Dec 15, 2025
277d0a6
pcap: Fix bad length read when swap is required (#4712)
orgads Dec 15, 2025
1b259c1
Fix Assert when parsing IPv6 Contact header (#4711)
f-izzo Dec 16, 2025
b8cc451
pcaputil: Fill packet timestamps (#4716)
orgads Dec 16, 2025
58546d7
Fix PCAP byte swapping on big-endian machines (#4715)
Copilot Dec 16, 2025
56c73a2
CMake improvements and macOS support (#4704)
saghul Dec 17, 2025
ff24b9e
Fixed crash when freeing OpenSSL private key and cert (#4718)
sauwming Dec 18, 2025
288918c
Merge upstream/master into master
Dec 21, 2025
f345302
Disconnecting ports queued for removal (#4700)
nanangizz Dec 23, 2025
9ffdbd7
Enable ioqueue read callback without holding lock by default (#4721)
Copilot Dec 24, 2025
b5862b9
Merge upstream/master into master
Dec 29, 2025
fa7f7e2
Fix port ID reuse when quickly removing and adding conference bridge …
Copilot Jan 5, 2026
eab6c19
Enable Address Sanitizer in specified CI tests (#4725)
Copilot Jan 8, 2026
02d0090
Fix processing peer reflexive ICE candidates with empty checklist (#4…
saghul Jan 9, 2026
d31fdb0
Avoid generate `#define WORDS_BIGENDIAN 0` when compiling with CMake …
joelpelaez Jan 9, 2026
9b6c207
Enable Thread Sanitizer for vid-openh264 CI jobs (#4734)
Copilot Jan 9, 2026
046dbd6
Add pjmedia_ice_parse_cand (#4729)
saghul Jan 9, 2026
f46c955
Merge upstream/master into master
Jan 11, 2026
0acf032
Fix crashes on linux/aarch64 due to misaligned atomic operations when…
coral Jan 13, 2026
b799a1b
Fix lock order inversion in pjmedia codec manager for all audio codec…
Copilot Jan 13, 2026
8b2189d
Lock order inversion issue in sip endpoint (#4740)
sauwming Jan 15, 2026
9caa8d4
Always use crypto library for GCM test for rstp when building with CM…
joelpelaez Jan 16, 2026
96e1786
Merge upstream/master into master
Jan 18, 2026
4aaa566
Per RFC 3550 - RTP timestamp should initally be random. (#4747)
seanbright Jan 20, 2026
4eb14e6
oss-fuzz: Add new fuzzer and corpus for RTP implementation (#4743)
arthurscchan Jan 20, 2026
c8d7599
Fix lock order inversion in sip transaction's mod_tsx_layer (#4748)
sauwming Jan 21, 2026
726f645
Enable PESQ tests and add ViSQOL as an alternative tool (#4741)
trengginas Jan 22, 2026
9ab23a9
Disable session recording (siprec) by default (#4749)
nanangizz Jan 22, 2026
d30474d
Remove `siprec` from Supported header when session recording is inact…
nanangizz Jan 23, 2026
913d7c4
Signal PJMEDIA_EVENT_AUD_DEV_ERROR on audio device failures (#4754)
Copilot Jan 23, 2026
30838cf
Fix incorrect capture angle when setting orientation (#4751)
trengginas Jan 23, 2026
97b0dfd
Merge upstream/master into master
Jan 25, 2026
d862568
Contact not updated on IP change (#4752)
nanangizz Jan 27, 2026
437d754
Avoid race when using the same op key in ioq send/recv/accept (#4758)
sauwming Jan 27, 2026
96c16eb
pjsua: Add audio play/rec commands to CLI framework (#4723)
vasilevalex Jan 27, 2026
222d19a
Lock ordering issue between sip dialog and sip transaction (#4755)
sauwming Jan 28, 2026
08e07a6
size of additional short rtp header has to be 8 (#4762)
lukas-nowak Jan 29, 2026
5d91298
oss-fuzz: Add new fuzzer for srtp transport implementation (#4761)
arthurscchan Jan 29, 2026
cf6fa52
Merge upstream/master into master
Feb 1, 2026
513f80e
Update iOS sample apps provisioning profiles (#4769)
sauwming Feb 2, 2026
2ede44e
Lock order inversion issue in sip transport (#4764)
sauwming Feb 2, 2026
d8819b6
pjsip: Avoid stale 408 triggering BYE on tsx termination (#4768)
hishamtk Feb 2, 2026
f308282
Fixed HTTPS client test destinatiom address (#4771)
sauwming Feb 3, 2026
0151987
Lock ordering issue between sip dialog and sip transaction (2) (#4759)
sauwming Feb 4, 2026
26077d6
fix parsing rtcp-fb attribute (#4775)
dmitmaloukas Feb 5, 2026
cbda9eb
OSS-Fuzz: Add Jitter Buffer handling in fuzz-rtp and seed corpus (#4772)
arthurscchan Feb 5, 2026
ae06b96
Merge upstream/master into master
Feb 8, 2026
41b9f72
oss-fuzz: Fix fuzz-stun to explore more stun path (#4777)
arthurscchan Feb 9, 2026
954259f
Update third party speex codec to handle signed integer overflow issu…
trengginas Feb 10, 2026
e7ff05d
Fix issues with MAUI samples (#4778)
trengginas Feb 10, 2026
063b3a1
Merge commit from fork
nanangizz Feb 11, 2026
5d131d9
Fix heap buffer overflow in responding basic authentication in HTTP c…
nanangizz Feb 11, 2026
91dee06
Fix wrong operator in ICE credential verification (#4789)
nanangizz Feb 12, 2026
bf8e5f3
oss-fuzz: Add fuzzers for pjsip presence parser (#4791)
arthurscchan Feb 12, 2026
4f64836
oss-fuzz: Add TURN protocol fuzzing to fuzz-stun (#4783)
arthurscchan Feb 12, 2026
6182c7a
Revert PR #4759: Lock chain/unchain causes crashes and deadlocks (#4797)
Copilot Feb 13, 2026
8ea1e1c
Update ICE password length in some pjsua test scenarios (#4798)
nanangizz Feb 13, 2026
0b90185
pcaputil: Convert rtp timestamp endianness earlier (#4782)
orgads Feb 13, 2026
5aee54f
Merge commit from fork
nanangizz Feb 13, 2026
907016f
Merge upstream/master into master
Feb 15, 2026
337a71f
Fix heap-use-after-free when processing incoming RTP/RTCP after strea…
nanangizz Feb 16, 2026
5fa52ea
Prevent INVITE retransmissions from being treated as new requests (#4…
nanangizz Feb 16, 2026
bb24789
OSS-Fuzz: Add other sip parsing to fuzz-sip (#4795)
arthurscchan Feb 16, 2026
f821c21
Merge commit from fork
sauwming Feb 16, 2026
136ecbc
Fix ioqueue unregister test stuck due to packet loss (#4800)
nanangizz Feb 17, 2026
9b0a4e8
Skip locking in setting and getting Buddy's user data (#4788)
nanangizz Feb 17, 2026
ffb731a
Fix heap-use-after-free in Call::answer() by using temporary pool (#4…
Copilot Feb 19, 2026
79b304f
Fix lock order inversion in ioqueue write and connect callbacks (#4806)
Copilot Feb 19, 2026
9c3113d
Add compile-time flag to disable dialog event package (#4810)
Copilot Feb 20, 2026
8839ffa
Destroy transaction if endpoint sending fails (#4803)
sauwming Feb 20, 2026
2565196
Fix null pointer dereference in call_param constructor (#4811)
Copilot Feb 20, 2026
9da59ba
Merge upstream/master into master
Feb 22, 2026
ad87b2f
oss-fuzz: Add fuzzer for video codec processing (#4780)
arthurscchan Feb 23, 2026
ff4e665
Add logging for echo canceller setup failures in sound device initial…
Copilot Feb 23, 2026
fea85c4
OSS-Fuzz: Include auth and dialog processing in fuzz-sip (#4815)
arthurscchan Feb 27, 2026
840eaa1
Merge upstream/master into master
Mar 1, 2026
0b8ccca
Signed-off-by: Pesala Silva <pesala.silva@ifs.com> Fixing_provisional…
PesalaDeSilva Mar 2, 2026
63e7490
Fix udp_ioqueue_unreg_test hang on IOCP CI and rate-limit UDP mismatc…
nanangizz Mar 3, 2026
6c90245
Merge commit from fork
nanangizz Mar 5, 2026
e06ff6c
Merge commit from fork
nanangizz Mar 5, 2026
5fac48c
Fix flaky select_test on busy CI runners (#4833)
nanangizz Mar 5, 2026
aecf5f5
OSS-Fuzz: Add fuzzer for sip transaction and util (#4820)
arthurscchan Mar 5, 2026
7bf9632
Fix undefined behavior: left shift of negative signed integers in G.7…
nanangizz Mar 5, 2026
94227f2
Fix null pointer dereference in STUN session send_response() (#4827)
nanangizz Mar 5, 2026
31a42e6
Fix uninitialized memory in ioqueue select() implementation (#4826)
nanangizz Mar 5, 2026
3b14e20
Fix deadlock in UDP transport detach with PJ_IOQUEUE_CALLBACK_NO_LOCK…
nanangizz Mar 5, 2026
cba22a9
Add CLAUDE.md for AI-assisted development context (#4836)
nanangizz Mar 5, 2026
f40e39f
Reject account deletion while active calls exist (#4830)
nanangizz Mar 6, 2026
aec1846
Fix left-shift of negative signed integers in GSM codec (#4834)
nanangizz Mar 6, 2026
bf1ecd4
OSS-Fuzz: Add targets to fuzz-rtcp (#4837)
arthurscchan Mar 6, 2026
8f067eb
OSS-Fuzz: Fix fuzz-stun to include turn session and ice processing (#…
arthurscchan Mar 6, 2026
7b7e408
Merge upstream/master into master
Mar 8, 2026
06291c5
oss-fuzz: Add fuzzer for Audio codec processing (#4770)
arthurscchan Mar 9, 2026
882e48f
Fix flaky CI tests: port conflicts, parallel scheduling, macOS ASan, …
nanangizz Mar 9, 2026
14e2388
OSS-Fuzz: Add fuzzer for stream processing (#4821)
arthurscchan Mar 9, 2026
37986fd
Fix dialog-transaction lock chaining with proper cleanup and layering…
Copilot Mar 10, 2026
5e35b3c
Fix fuzz Makefile: replace spaces with tab on AUDIO link line (#4845)
nanangizz Mar 10, 2026
450f838
Fixed tdata double dec ref in Fuzzer sip transaction (#4840)
sauwming Mar 10, 2026
4225a93
Fixed SIP Multipart CID URI length check (#4844)
sauwming Mar 10, 2026
3c3408b
Add zero padding in TURN ChannelData (#4841)
sauwming Mar 10, 2026
66fe416
Fixed potential ptime integer overflow calculation in audio stream (#…
sauwming Mar 10, 2026
b710011
Fix uninitialized padding bytes in STUN attribute encoders (#4842)
Copilot Mar 10, 2026
c9caced
Merge commit from fork
sauwming Mar 10, 2026
f6327a8
Fix ASan asan_poisoning crash on macOS ARM64 worker threads (#4846)
nanangizz Mar 11, 2026
0fd9725
OSS-Fuzz: Add fuzzer for sdp sdes process (#4838)
arthurscchan Mar 12, 2026
4ca4972
Fix assertion in sending request to an empty IPv6 address (#4847)
sauwming Mar 12, 2026
785eff6
Add concurrency, test robustness, and test runner guidelines (#4851)
nanangizz Mar 12, 2026
db3cfde
Asynchronous SIP client authentication (#4816)
nanangizz Mar 12, 2026
3c5c3e8
Enforce C89/gnu89 standard in CI build-only tests (#4850)
nanangizz Mar 13, 2026
b695545
Fix select_test using correct nfds for pj_sock_select() (#4852)
nanangizz Mar 13, 2026
1446fce
OSS-Fuzz: Add fuzzer targeting sip-dialog implementation (#4848)
arthurscchan Mar 13, 2026
2b7c8b5
Optimize CI: conditional jobs, test rebalancing, macOS platform-aware…
nanangizz Mar 13, 2026
83aa137
OSS-Fuzz: Fix fuzz-sip-transaction to avoid network sending (#4849)
arthurscchan Mar 13, 2026
5c997b5
Fix use-of-uninitialized-value in pjsip_auth_clt_init_req (#4855)
Copilot Mar 13, 2026
8e0bcc6
Fix Coverity issues from async auth feature (#4854)
nanangizz Mar 13, 2026
3a01939
Merge upstream/master into master
Mar 15, 2026
7a9a81f
Fix occasional crash on send manager startup (#4856)
kunkku Mar 16, 2026
5311aee
Merge commit from fork
sauwming Mar 16, 2026
e41510b
oss-fuzz: Add fuzzer for auth response (#4858)
arthurscchan Mar 17, 2026
f0fa32a
Merge commit from fork
sauwming Mar 17, 2026
d7aee4c
Fixed SDP multicast parsing and EOF checks (#4861)
sauwming Mar 17, 2026
d49472d
Fix signed integer overflow in Content-Length header parsing (#4863)
Copilot Mar 17, 2026
3f84a97
Improve DNS packet parser robustness (#4862)
nanangizz Mar 17, 2026
d8887ce
Fix race condition in pjmedia codec_test_vectors (#4868)
nanangizz Mar 18, 2026
88a7b65
Fix SChannel SSL robustness issues (#4867)
nanangizz Mar 18, 2026
b252452
Add experimental WebSocket client to pjlib-util (#4859)
nanangizz Mar 18, 2026
316f1aa
Add experimental AI media port with OpenAI Realtime backend (#4866)
nanangizz Mar 18, 2026
a10bacc
Fix adaptive silence detector threshold collapse in quiet environment…
nanangizz Mar 18, 2026
dbcf7fd
Add Python 3 importsym script and regenerate symbols.i (#4871)
nanangizz Mar 18, 2026
b3031cb
OSS-Fuzz: Add fuzzer for dns records parsing (#4857)
arthurscchan Mar 19, 2026
65fe079
Add PJSUA2 AudioMediaAiPort wrapper for AI media port (#4870)
nanangizz Mar 19, 2026
8f0279b
Fix MinGW/MSYS2 compile error in os_core_win32.c (#4875)
nanangizz Mar 19, 2026
f9fde6f
Merge upstream/master into master
Mar 22, 2026
f7af85d
Fix Opus maxaveragebitrate fmtp handling (#4885)
nanangizz Mar 24, 2026
092001d
Update contact when connection disconnect after a successful Registra…
trengginas Mar 24, 2026
a3704ae
Prevent writing to position -1. (#4877)
mcsmit Mar 24, 2026
1ef3ab6
OSS-Fuzz: Add more targets for fuzz-audio (#4880)
arthurscchan Mar 24, 2026
0d7b50c
Fix MSVC Opus library linking and make it configurable (#4865) (#4888)
nanangizz Mar 25, 2026
16d1199
OSS-Fuzz: Fix fuzz-sdes (#4883)
arthurscchan Mar 25, 2026
0ca444b
unit-test: Fix memleak (#4882)
arthurscchan Mar 25, 2026
0e8589b
Reset contact_rewritten flag on transport disconnect (#4886)
nanangizz Mar 25, 2026
33deded
OSS-Fuzz: Add fuzzer for ICE implementation (#4879)
arthurscchan Mar 26, 2026
336b99f
OSS-Fuzz: Add fuzzer for multipart parsing (#4874)
arthurscchan Mar 27, 2026
4257f88
Filter CI badge status to master branch only (#4894)
nanangizz Mar 27, 2026
b8e9d8a
Fix race in dialog-transaction lock chain by not unchaining (#4893)
nanangizz Mar 27, 2026
2d8f1bb
Merge upstream/master into master
Mar 29, 2026
f4c7d08
Merge commit from fork
nanangizz Mar 30, 2026
27cda61
CMakeLists.txt: read version from version.mak instead of hardcoding i…
Copilot Mar 30, 2026
4cffa47
Set inv UAS cancelling to TRUE when receiving incoming CANCEL (#4898)
sauwming Apr 1, 2026
c88d729
CMake: fix install/export so find_package(Pj) works for consumers (#4…
nanangizz Apr 2, 2026
a850e39
Fix SIP parser when receiving malformed header (#4902)
sauwming Apr 3, 2026
480c320
Merge upstream/master into master
Apr 5, 2026
e68451a
pjsua_init: Fix for -Werror=format-truncation= with GCC 13.2.0 (#4903)
amubiera Apr 6, 2026
3dc79e6
Fix build warnings in SIP parser and test files (#4906)
Copilot Apr 8, 2026
a471c59
Fix compile warnings in pjsua_core.c and pjmedia endpoint.h (#4908)
nanangizz Apr 8, 2026
e28b6c5
Update bundled libgsm from 1.0-pl23 to 1.0-pl24 (#4907)
nanangizz Apr 8, 2026
af42c36
Fix callback not being called after activesock shutdown (#4864) (#4878)
azertyfun Apr 8, 2026
97deb02
Refactor SSL socket send path and improve test coverage (#4909)
nanangizz Apr 10, 2026
d413958
Merge upstream/master into master
Apr 12, 2026
c82123e
Fix stack buffer overflow in pjsip_auth_create_digest2() (#4912)
nanangizz Apr 13, 2026
d3f8ba0
Redesign SSL send path with producer-consumer queue (#4910)
nanangizz Apr 13, 2026
36d0628
Make norefersub in Supported header configurable (#4904)
wosrediinanatour Apr 13, 2026
8c1c9de
Make it easier to set alternative SONAME for pjproject libraries. (#4…
jkroonza Apr 13, 2026
e9b58f8
Fix use-after-free in STUN retransmit timer callback (#4913)
nanangizz Apr 13, 2026
097a6cb
Fix race condition in GnuTLS/mbedTLS SSL handshake and read (#4914)
nanangizz Apr 13, 2026
17897e8
Merge commit from fork
nanangizz Apr 14, 2026
f78526e
Fix thread descriptor corruption in DirectShow capture callback (#4915)
nanangizz Apr 15, 2026
18d3098
Move --ci-mode to common test framework and error on unknown test arg…
nanangizz Apr 15, 2026
649bb3f
Streamline AI coding assistant instructions (#4922)
nanangizz Apr 15, 2026
7535598
Fix race condition between ICE transport detach and RTP/RTCP callback…
nanangizz Apr 15, 2026
95ac685
Fix flaky CI: widen tsx retransmission timing tolerance in ci-mode (#…
nanangizz Apr 15, 2026
2cf88a5
Fix Coverity warnings across multiple components (#4920)
nanangizz Apr 15, 2026
4bcbd7b
Fix race conditions in async conference bridge (#4916)
nanangizz Apr 15, 2026
0941039
Fix GnuTLS renegotiation failure on GNUTLS_E_GOT_APPLICATION_DATA (#4…
nanangizz Apr 15, 2026
9c76e61
Fix 'braces around scalar initializer' errors with certain compilers.…
amubiera Apr 16, 2026
8a901fc
Merge upstream/master into master
Apr 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
root = true

# properties
[*.{h,c,hpp,cpp,m,java}]
[*.{h,c,hpp,cpp,m,java,ac}]
insert_final_newline = true
indent_style = space
indent_size = 4
Expand Down
5 changes: 4 additions & 1 deletion .git-blame-ignore-revs
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
# expand tab to spaces and remove $Id$ (#3292)
5ac9104514499d648f68991ef796368c51b4dfec
5ac9104514499d648f68991ef796368c51b4dfec

# expand tab to spaces and cleanup formatting in aconfigure.ac (#4154)
22464d7a052ab5b7775496bb52211ea66dc2d62d
3 changes: 1 addition & 2 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@ body:
id: alt-solution
attributes:
label: Describe alternatives you've considered
description: A clear and concise description of any alternative solutions or features you've
considered.
description: A clear and concise description of any alternative solutions or features you've considered.
- type: textarea
id: context
attributes:
Expand Down
2 changes: 1 addition & 1 deletion .github/PULL_REQUEST_TEMPLATE/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
## Checklist:
<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
- [ ] My code follows the code style of this project.
- [ ] My code follows the **[CODING STYLE of this project](https://docs.pjsip.org/en/latest/get-started/coding-style.html)**.
- [ ] My change requires a change to the documentation.
- [ ] I have updated the documentation accordingly.
- [ ] I have read the **CONTRIBUTING** document.
Expand Down
165 changes: 165 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
# PJSIP/PJPROJECT

Open-source multimedia communication library in C (SIP, SDP, RTP, STUN, TURN, ICE).

## Build & Test

- **Build**: `./configure && make -j3` (timeout 120s+, NEVER CANCEL)
- **Skip `make dep`** — it often produces corrupt `.depend` files. `make` generates deps automatically. If build fails with "missing separator" in `.depend`, run `find . -name "*.depend" -delete` and retry.
- **Targeted build**: `cd pjlib/build && make` (or `pjsip/build`, etc.)
- **Full clean**: `make clean` (required when switching SSL backends or configure options)
- Get target arch: `make infotarget` (e.g., `x86_64-pc-linux-gnu`)
- **Three build systems** — when adding/removing source files, update all three:
1. GNU Makefile (e.g., `pjlib/build/Makefile`)
2. MSVC project (e.g., `pjlib/build/pjlib.vcxproj`)
3. CMake (`CMakeLists.txt`)

### Running Tests

Run via Makefile (NEVER CANCEL, 5+ min each, timeout 600s):
```
make pjlib-test # core library
make pjsip-test # SIP stack
make pjsua-test # high-level API (Python)
```

Run specific test directly — **must run from the bin/ directory**:
```
cd pjlib/bin && ./pjlib-test-x86_64-pc-linux-gnu timer_test
cd pjlib/bin && ./pjlib-test-x86_64-pc-linux-gnu --list
```
Options: `-w N` (worker threads), `--shuffle`, `--ci-mode`, `--stop-err`

Quick smoke test: `cd tests/pjsua && python3 run.py mod_run.py scripts-run/100_simple.py`

### Minimum Validation (mandatory after every change)

- **Always run `make -j3`** — zero errors, zero warnings (`-Wall` enabled).
- For targeted builds: `cd pjlib/build && make` or `cd pjsip/build && make`.
- **Known warning**: `PJ_TODO(id)` macro triggers `-Wunused-label` intentionally. Suppress with `#define PJ_TODO(x)` in `config_site.h`.

### Configure Options

- `--with-gnutls=/usr/` — GnuTLS instead of OpenSSL (requires `make clean` first)
- `--disable-ssl` — disable SSL/TLS
- `--enable-shared` — shared libraries
- Feature toggles: `#define` in `pjlib/include/pj/config_site.h`

### Config Site

- `pjlib/include/pj/config_site.h` — local configuration overrides, NOT tracked by git
- CI uses `config_site_test.h` (copied to `config_site.h` in workflows)
- SSL tests will fail with timeouts in sandboxed environments — expected

## Repository Structure

```
pjlib/ # Base framework (OS abstraction, data structures, pool allocator)
pjlib-util/ # Utilities (DNS, STUN, XML, JSON, WebSocket)
pjnath/ # NAT traversal (STUN, TURN, ICE)
pjmedia/ # Media framework (codecs, transport, audio/video)
pjsip/ # SIP stack (transactions, dialogs, UA layer)
pjsip-apps/ # Applications and samples
third_party/ # Bundled third-party libs (srtp, resample, etc.)
tests/pjsua/ # Python-based PJSUA tests
.github/ # CI workflows
```

### Architecture Layers (top → bottom)

1. **PJSUA2** (C++) / **PJSUA** (C high-level) — `pjsip/include/pjsua-lib/`
2. **PJSIP UA** — dialogs, calls, presence — `pjsip/include/pjsip-ua/`
3. **PJSIP Core** — transactions, transport, parsing — `pjsip/include/pjsip/`
4. **PJMEDIA** — media sessions, codecs, RTP — `pjmedia/include/pjmedia/`
5. **PJNATH** — ICE, STUN, TURN — `pjnath/include/pjnath/`
6. **PJLIB** — pool allocator, OS abstraction — `pjlib/include/pj/`

### Key Files

- `pjlib/include/pj/config_site.h` — main configuration overrides
- `pjlib/include/pj/config.h` — default configuration values
- `build.mak` — generated build configuration
- ICE/NAT: `pjnath/include/pjnath/ice_strmtp.h`
- Call handling: `pjsip/src/pjsua-lib/pjsua_call.c`
- Transport: `pjsip/include/pjsip/sip_transport.h`

## Coding Conventions

Follow: https://docs.pjsip.org/en/latest/get-started/coding-style.html

Documentation source (for when the docs site is not directly accessible):
https://github.com/pjsip/pjproject_docs

### Essentials
- **ANSI C (C89/C90)** for core modules. No declarations after statements.
- **4 spaces** indentation (no tabs). ~80 char lines.
- **K&R braces**: same line for control statements, next line for functions/structs.
- **`/* */` comments** for C code, `/** */` for Doxygen on public APIs.
- **Module prefixes**: `pj_` (pjlib), `pjsip_` (sip), `pjmedia_` (media), `pjnath_` (nat)
- **Constants**: ALL_CAPS with prefix (`PJSIP_MAX_URL_SIZE`, `PJ_TRUE`)

### Memory Management
- Core C modules use **pool-based allocation** (`pj_pool_t`).
- Use `PJ_POOL_ALLOC_T()`, `PJ_POOL_ZALLOC_T()`, `pj_pool_alloc()`.
- Pools freed as a whole — no individual deallocation.
- **No `malloc()`/`free()`** in core C code.

### String Handling
- `pj_str_t` (pointer + length), NOT null-terminated.
- Never assume null-termination. Use `pj_strcmp()`, `pj_stricmp()`.

### Error Handling
- Functions return `pj_status_t`. `PJ_SUCCESS` (0) = success.
- Always check return values. Use `PJ_ASSERT_RETURN()` for preconditions.

### Logging
- `PJ_LOG(level, (sender, format, ...))` — note double parentheses.
- Each file defines `THIS_FILE`. Levels: 0 (fatal) to 6 (trace).

## Architecture Notes

### Threading Model
- Single-threaded (polling) or multi-threaded.
- Use `pj_mutex_t` / `pj_lock_t` — NOT pthread directly.
- Callbacks may fire from worker threads — be thread-safe.
- **Avoid invoking user callbacks while holding a mutex** — release lock first to prevent deadlock.

### Group Lock (`pj_grp_lock_t`)
- Mutual exclusion + reference counting + lock ordering in one primitive.
- `add_ref()` before scheduling timer/callback, `dec_ref()` in the callback.
- Never destroy a lock that other threads may reference — use ref counting.
- Lock ordering: PJSUA_LOCK > dialog grp_lock > transaction grp_lock.
- Debug: enable `PJ_GRP_LOCK_DEBUG` in `config_site.h`.

### Platform Differences
- **I/O Queue backends**: epoll (Linux), kqueue (macOS/BSD), select (portable), IOCP (Windows)
- IOCP backend has different threading semantics than epoll/select.

## Do's and Don'ts

### DO:
- Reference existing patterns before writing new code
- Follow module prefix naming strictly
- Check `pj_status_t` return values everywhere
- Declare all variables at top of block (C89)
- Add Doxygen `/** */` for new public APIs
- Prefer param structs over many positional arguments for extensibility

### DON'T:
- Don't use malloc/free in core C modules
- Don't assume null-terminated strings with `pj_str_t`
- Don't add C++ in core C modules
- Don't modify public headers without understanding downstream impact
- Don't destroy objects with pending timers/async callbacks
- Don't declare variables after statements (C89)

## CI Integration

- GitHub Actions: `.github/workflows/` (Linux, Mac, Windows)
- Uses `cirunner` tool for test execution with timeouts
- Tests multiple configurations (SSL/no-SSL, GnuTLS, video codecs, etc.)
- `--ci-mode` widens timing tolerances for slow CI runners

### Writing Robust Tests
- **No precise timing** — use generous tolerances or event-driven sync. CI runners can be 5-10x slower.
- Verify ASan compatibility for platform-specific features (sigaltstack, thread stacks).
Loading
Loading