Warning: potential backward incompatibility issue, previously the replacing call can use any account (selected using pjsua_acc_find_for_incoming() and app may override via callback), now it is forced to use the same account.
* Use PJ_ASSERT_RETURN on pjsip_auth_create_digest
* Use PJ_ASSERT_RETURN on pjsua_init_tpselector()
* Fix incorrect check.
* Add return value to pjsip_auth_create_digest() and pjsip_auth_create_digestSHA256()
* Modification based on comments.
* Suppressed various compilation warnings
* Fixed CodeQL warning
* Fixed build warning on Android and Linux
* Fix build warning on Visual Studio
* Update target Android SDK version to 29 (for pjsua2 & app), to avoid gradle error: 'Google Play requires that apps target API level 29 or higher'.
* Add support for Camera2 API to ipjsua android app.
* Fix assertion on Win32 app (MSVC2005) because ICE transport info size is 160 bytes while the allocated buffer is just 144 bytes.
* Enable python unit test on windows for github actions.
* Avoid assertion in pjsua test caused by double calling of pjsua_conf_remove_port()
* Update pjsip_ua_unregister_dlg():
- update the hash key if the dialog being unregistered is used as hash key.
- add an assertion check to make sure that the dlg_set to be removed is valid (can be found in the hash table).
* Change hash key string comparison method.
* Release wav player and recorder pool on pjsua_destroy2()
* Modification based on comments
* Modification based on comments
* modification based on comments
* Added pjsip_tsx_set_timers to change timers at runtime
Added new function pjsip_tsx_set_timers in sip_transaction.c
which allows to change session timers during runtime.
It also allows to change timer values independently,
currently all timers are set at various ratios from
t1 during init. This was required for server which could
change timeout configuration on runtime, but could be
usable in other projects.
* Add synchronization of timer values in pjsip_cfg().
Add synchronization of timer values to pjsip_cfg() and another
function to (re)synchronize timer values from pjsip_cfg(),
`pjsip_tsx_initialize_timer_values()`.
`pjsip_tsx_set_timers` now accepts zeroed arguments to mean
that it should not change that timer value.
Added the following APIs:
pjsip_multipart_find_part_by_header()
pjsip_multipart_find_part_by_header_str()
pjsip_multipart_find_part_by_cid_str()
pjsip_multipart_find_part_by_cid_uri()
* Fix issues in updating media dir to NONE in the middle of a call
* Update PJSUA2 CallSetting::mediaDir declaration for SWIG. Note: adding SWIG template for MediaDirVector as vector of pjmedia_dir enum causes some error: SWIG treats enum as int, so vector of pjmedia_dir will be wrapped as vector of int, as there is already IntVector, SWIG rejects duplicated vector of int.
* Add support to ARM64 configuration for win32 build
* Add changes notes to webrtc and webrtc_aec3 third party sources
* Remove reference to libwebrtc_aec3 from libpjproject. Add reference it manually if libwebrtc_aec3 is needed.
* Fix build error on Release configuration.
- Add new APIs to update/refresh video conference bridge port: `pjmedia_vid_conf_update_port(), pjsua_vid_conf_update_port(), VideoMedia::update()`.
- Use the new API in PJSUA-LIB to update renderer & stream decoder in format changed event.
* - Avoid SSL socket parent/listener getting destroyed during handshake by increasing parent's reference count.
- Add missing SSL socket close when the newly accepted SSL socket is discarded in SIP TLS transport.
* - Fix silly mistake: accepted active socket created without group lock in SSL socket.
- Replace assertion with normal validation check of SSL socket instance in OpenSSL verification callback (verify_cb()) to avoid crash, e.g: if somehow race condition with SSL socket destroy happens or OpenSSL application data index somehow gets corrupted.
- Add fullscreen mode PJMEDIA_VID_DEV_FULLSCREEN_DESKTOP (no video mode change), which is mapped to SDL_WINDOW_FULLSCREEN_DESKTOP.
- Fix resizing while in full-screen.
- Update PJSUA, PJSUA2 & pjsua app, e.g: fullscreen setting was boolean (fullscreen enabled/disabled), now it is enum: disabled, fullscreen, or fullscreen desktop.
* Avoid deadlock when restarting SIP UDP transport due to holding pjsua
lock.
* Add callback to lock/unlock any lock held when waiting for the read spin loop finish.
* Use simpler approach by unlocking before restarting UDP transport.
* Add doc to pjsip_udp_transport_restart() and pjsip_udp_transport_restart2() of the possibility of deadlock.
- Improve trickling state management (fix no SIP INFO when initial INVITE responded immediately with 200, strayed SIP INFO after trickling is done, etc).
- Fix issues when rtcp-mux is enabled.
- Allow process incoming SIP INFO before receiving remote SDP.
- Use regular ICE on re-INVITE (with reinit media flag).
- Avoid calling pj_ice_strans_get_running_comp_cnt() for loop condition.
- Fix bug in pjnath-test: TURN server set wrong peer channel number.
- Added timer for end-of-candidate indication from remote & don't flag ice-mismatch if remote uses default address in trickle ICE
* Implement android AMediaCodec AVC/VPX codec.
* - Change "anmed" to "and_media" prefix for clearity.
- Check if encoder/decoder exists before enabling codec.
* Fix bug on enum info.
* Add support to AMRNB and AMRWB audio codec.
* Modification based on comments.
* - move VPX packetizer from codec implementation.
* - Remove unwanted changes.
- Fix bug on vpx (VP9) packetize method.
* - New method to initialize vpx packetizer config.
- Don't use pt as codec id.
* add compiler option to prioritze using software or hardware codec.
* add documentation related to packetization mode for H264.
* fix some potential compile error.
* Specify video codec PT to support #2656.
* Add option to always use VPIO on coreaudio dev.
* Revert "Add option to always use VPIO on coreaudio dev."
This reverts commit 55d6da5b4b.
* Allow EC to be enabled when sound device is opened on speaker only mode.
* Modify assertion to allow ec to be set on playback only mode.
- Allow <note> element in <tuple> set in pjsip_pres_status.info[0].rpid.note without having RPID element in presence message body.
- Fix wrong parent node for finding note element in get_tuple_note().
- Update docs: fix typo, etc.
* Handle race condition between transport_idle_callback() and pjsip_tpmgr_acquire_transport2().
* Add transport destroy state check as additional of transport shutdown state check
* send keep alive when stream is started.
* modification based on comments.
* Add documentation.
* Modification based on comments.
* Grouped configuration.
Also updated docs:
- on_send_ack(): explicitly mention that ACK request must be created using pjsip_inv_create_ack().
- pjsip_inv_create_ack(): SDP answer to be set using pjsip_inv_set_sdp_answer(), was pjsip_create_sdp_body().
Make several pool sizes settable via compile time macro settings. This can be used to deal with memory fragmentation issues in long running applications that encounter temporary high loads.
* Possible leak tdata when receiving 200 OK response after the invite
session was destroyed.
* Add comments linking the PR to the changes.
* Add safety check.
* Fix possible leaked tdata when ACK is not sent due to timeout.
* - Allow demote SRTP call to RTP when using re-INVITE with
PJSUA_CALL_REINIT_MEDIA
- DTLS renegotiation when receiving re-INVITE with modified media
transport address
* Revert DTLS_DEBUG to 0.
* modification based on comments.
* modified comment.
* Some targets residing in `OBJDIRS` are missing a dependency on that directory, which results in a race condition, causing build to fail sometimes due to the directory not existing when running parallel builds.
* The `PJSUA_LIB` variable is not defined anywhere, resulting in an empty value, and no correct dependency on the pjsua shared library for `pjsua2`. The correct variable seems to be `PJSUA_LIB_LIB`, defined at the start of this same `Makefile`.
* pjsua-test:
- Update pjsua-test module call: wait ICE update before checking media
- Attempt to fix all failed tests by sipp module: changed SIPp port from 6000 to 50070 (port used by recvfrom module)
- Update call module: confirm codec priority after change, fix DTLS-SRTP expect may race with state CONFIRMED
- Add timeout check in telnet-ing to pjsua
- ICE nego may race with call state CONFIRMED, so mod call better just sleep instead of expecting 'ICE nego success'.
* Other unit tests:
- Print stack trace on crash on Linux and DarwinOS via SIGSEGV signal handler.
- Update resolver test: print log on callback error, replace assertion checks with error return, fix comments, sleep periods, fix received packet count may be > 1 if server ignore the request (for example when the test machine experiencing high CPU load).
- Update ccpp.yml: add -g for jobs with unit-tests.
- More lenient on tsx retransmission count check in pjsip-test.
- Update tsx_uac/s_test.c: allow retransmission timing diff from 150 to 500ms to accommodate possible CPU spike on some test machines.
* pjsip: Add new status phrases
Taken from various (newer) SIP RFC's.
* psjip: Make status phrases match the RFC's
Replace homebrew phrases with the standard phrases from the SIP RFC's.
* pjsip: Add new status codes to pjsip_status_code enum
* Update symbols.i
* Fix indentation of symbols.i
Co-authored-by: sauwming <ming@teluu.com>
Handle case when provisional response is sent after a final one
- If 100rel is required, prevent retransmission if the initial send fails, since the retransmission will cause a crash later.
- Otherwise, return error instead of asserting in sip_transaction
* Add option to exclude benchmark tests in unit tests
* Loosen up resolver round-robin testcondition (percent difference allowance from 5% to 10%, the test result variance relies heavily on OS random number distribution).
Note that the regc instance itself hasn't been destroyed since the refcount has been incremented, but acc->regc can already be NULL-ed.
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@6160 74dad513-b988-da41-8d7b-12977e46ad98
- added CXXFLAGS & LDFLAGS parsing (from ndk-build output), CXXFLAGS was set to CFLAGS.
- updated WebRTC instruction set to use SSE2, was generic, for Android emulator (x86 ABI).
- updated C++ library/STL backend to use c++_shared, somehow '-lc++_static' is ignored after the refactor, also the official NDK docs mentions that c++_static may cause undefined behavior for app with multiple shared libraries (note pjsua2 app may use other shared libraries).
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@6120 74dad513-b988-da41-8d7b-12977e46ad98
- pjsip_tpmgr_acquire_transport2() should skip transports being shutdown in the lookup iteration.
- Added some tracing logs in sip_transport.c.
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@6090 74dad513-b988-da41-8d7b-12977e46ad98
- Avoid double pjsip_inv_dec_ref() by evaluating the local var 'state' instead of 'inv->state' in checking DISCONNECTED state in 'inv_set_state()', as the 'on_state_changed()' callback may recursively call 'inv_set_state()' and shift the state to DISCONNECTED.
- Avoid inv sess destroy in the callback by increasing ref count.
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@6087 74dad513-b988-da41-8d7b-12977e46ad98
- Deinit OpenGL immediately when initialization fails, so video device {{{start()}}} and {{{put_frame()}}} will return immediately.
- Introduced new media event {{{PJMEDIA_EVENT_VID_DEV_ERROR}}}, used for notifying app when video device reinit (due to format change) fails.
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@6085 74dad513-b988-da41-8d7b-12977e46ad98
* Do not return IPv6 address for loop transport
* Fixed failed PJSIP test because of result count mismatch due to the additional IPv6 address
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@6025 74dad513-b988-da41-8d7b-12977e46ad98
- Also included in this changeset: ipv6 option of sample pjsua_app will now try IPv6 STUN, bind the account to IPv6 transport and set the IPv6 media
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@5995 74dad513-b988-da41-8d7b-12977e46ad98
* assertion: !Endpoint::instance().mediaExists(*this) in Media::registerMediaPort() when using AudioMedia
Sound device is already registered in the conference bridge, while AudioMediaPlayer/Recorder creation function, i.e. pjsua_player_create(), pjsua_playlist_create(), and pjsua_recorder_create() already call pjmedia_conf_add_port(), so mediaExists() will always return TRUE.
* Endpoint.mediaAdd() should check in its own internal list if the media exists, rather than querying pjsua.
* Calling Endpoint::libDestroy() first, then deleting Endpoint will cause crash, since the mutex to remove the medias has been deleted in libDestroy().
The introduction of the mutex is in r5964.
* DevAudioMedia never removes itself from mediaList, potentially causing infinite loop/crash.
* Call medias, i.e. AudioMediaHelper, also never gets removed from mediaList.
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@5986 74dad513-b988-da41-8d7b-12977e46ad98
* Also add video stream port to video conf when call is on local hold in order for video stream to keep sending keep-alive.
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@5960 74dad513-b988-da41-8d7b-12977e46ad98