summaryrefslogtreecommitdiff
path: root/third-party
AgeCommit message (Collapse)Author
2017-12-22Remove as much trailing whitespace as possible.Sean Bright
Change-Id: I873c1c6d00f447269bd841494459efccdd2c19c0
2017-12-13pjsip: Ignore state changes from old transactions.Joshua Colp
When we fail over to a new target we create a new transaction and it becomes the current INVITE transaction. This does not prevent the previous transaction from raising state changes and causing the session to be prematurely disconnected if a transport error occurs immediately. This change backports a fix from PJSIP that eliminates the incorrect state change and reduces when they would be raised in the first place. ASTERISK-27408 Change-Id: Id22d087591782eee31311753d11e7eca4b95ef34
2017-12-04pjproject: Clean up disabling of WebRTC support.Joshua Colp
The definition in config_site.h and the argument to the configure script are not necessary to disable WebRTC support. The correct argument, --disable-libwebrtc, is already passed. ASTERISK-26980 Change-Id: I27da2c894f87914956a72710222e17462d8a44bc
2017-11-22pjsip: 183 without To tag does not negotiate mediaKevin Harwell
If a 183 with sdp response is receive without a To tag the sdp is not negotiated. According to RFC 3261 section 12.1.2 while a To tag is required, the client needs to still be able to handle the missing tag case for backwards compatibility. This patch, accepted by and applied to pjproject, makes it so if an incoming 180/183 with SDP comes in without a To tag it gets appropriately handled. ASTERISK-27442 #close Change-Id: Ic9d6b01e05e8f4874eebbd7adfe05d932025d203
2017-11-21Merge "BuildSystem: pjsip_evsub_set_uas_timeout was not used." into 13Joshua Colp
2017-11-20BuildSystem: pjsip_evsub_set_uas_timeout was not used.Alexander Traud
ASTERISK-27435 Change-Id: Id318a7ae6d7d69b53f911d30bf3eece64852f15c
2017-11-19Build: Fix OSX build issues.Corey Farrell
OSX does not support 'readlink -f' or 'sed -r'. Replace readlink with the GNU make macro 'realpath'. Replace sed with grep in one place, cut in the other. ASTERISK-27332 Change-Id: I5d34ecca905384decb22ead45c913ae5e8aff748
2017-11-14Merge "bundled_pjproject: Update to 2.7.1" into 13Joshua Colp
2017-11-14Merge "bundled_pjproject: sip_parser: Fix return code in pjsip_find_msg" ↵Jenkins2
into 13
2017-11-13bundled_pjproject: sip_parser: Fix return code in pjsip_find_msgGeorge Joseph
The default return code for pjsip_find_msg was PJ_SUCCESS so if a Content-Length header wasn't found at all, pjsip_find_msg was returning PJ_SUCCESS instead of PJSIP_EMISSINGHDR. Also added the volatile keyword to a few variables that are used both inside and outside the PJ_TRY/PJ_CATCH block. Partial fix for ASTERISK_27408 Change-Id: If82ba9de921e3d57df9c68cf96ee45ccc1491f7a
2017-11-13bundled_pjproject: Update to 2.7.1Ben Ford
Update from 2.7 to 2.7.1 for bundled pjproject. Changed version and removed patch files included in the update. Change-Id: I55cea8e734b318c2df9daf86aa0802c559ec8357
2017-11-10pjsip: Add patch to allow all transports to be destroyed.Joshua Colp
If a transport is created with the same transport type, source IP address, and source port as one that already exists the old transport is moved into a linked list called "tp_list". If this old transport is later shutdown it will not be destroyed as the process checks whether the transport is valid or not. This check does not look at the "tp_list" when making the determination causing the transport to not be destroyed. This change updates the logic to query not just the main storage method for transports but also the "tp_list". Upstream issue https://trac.pjsip.org/repos/ticket/2061 ASTERISK-27411 Change-Id: Ic5c2bb60226df0ef1c8851359ed8d4cd64469429
2017-11-08AST-2017-009: pjproject: Add validation of numeric header valuesGeorge Joseph
Parsing the numeric header fields like cseq, ttl, port, etc. all had the potential to overflow, either causing unintended values to be captured or, if the values were subsequently converted back to strings, a buffer overrun. To address this, new "strto" functions have been created that do range checking and those functions are used wherever possible in the parser. * Created pjlib/include/limits.h and pjlib/include/compat/limits.h to either include the system limits.h or define common numeric limits if there is no system limits.h. * Created strto*_validate functions in sip_parser that take bounds and on failure call the on_str_parse_error function which prints an error message and calls PJ_THROW. * Updated sip_parser to validate the numeric fields. * Fixed an issue in sip_transport that prevented error messages from being properly displayed. * Added "volatile" to some variables referenced in PJ_CATCH blocks as the optimizer was sometimes optimizing them away. * Fixed length calculation in sip_transaction/create_tsx_key_2543 to account for signed ints being 11 characters, not 9. ASTERISK-27319 Reported by: Youngsung Kim at LINE Corporation Change-Id: I48de2e4ccf196990906304e8d7061f4ffdd772ff
2017-10-20res_pjproject.c: Upgrade bundled PJPROJECT to 2.7Richard Mudgett
Update patches included in bundled PJPROJECT for the new version. ASTERISK-27355 Change-Id: I9ac5dbbffaadca25ad24fac8b9ab615e5ace6083
2017-09-25pjproject: Patch to correct STUN FINGERPRINT usageSean Bright
Change-Id: I0e453253dff1388b0186b36c754457c1d0d12db6
2017-08-15configure: Check cache for valid pjproject tarball before downloading.Richard Mudgett
On a fresh Asterisk source directory, the bundled pjproject tarball is unconditionally downloaded even if the tarball is already in a specified cache directory. * Made check if the pjproject tarball is valid in the cache directory before downloading the tarball on a fresh source directory. Change-Id: Ic7ec842d3c97ecd8dafbad6f056b7fdbce41cae5
2017-08-09configure: Add --with-download-cache optionGeorge Joseph
To make building without an internet connection easier, a new ./configure option '--with-download-cache' was added that sets the cache for externals (like pjproject, the codecs and the DPMA), AND the sounds files. It can also be specified as an environment variable named "AST_DOWNLOAD_CACHE". The existing '--with-sounds-cache' option / SOUNDS_CACHE_DIR env variable and '--with-externals-cache' option / EXTERNALS_CACHE_DIR env variable remain and if specified, will override '--with-downloads-cache'. Change-Id: I5c3cf15ee61e8fe191b52732303e969854f8d861
2017-08-01bundled_pjproject: Improve SSL/TLS error handlingGeorge Joseph
OpenSSL has 2 levels or error processing. It's possible for the top layer to return SSL_ERROR_SYSCALL but the lower layer return no error, in which case processing should continue. Only the top layer was being examined though so connections were being torn down when they didn't need to be. This patch adds the examination of the lower level codes, and if they return no errors, allows processing to continue. ASTERISK-27001 Reported-by: Ian Gilmour patches: pjproject-2.6.patch submitted by Ian Gilmour (license 6889) Updated-by: George Joseph and Sauw Ming (Teluu) Merged to upstream pjproject on 7/27/2017 (commit 5631) Change-Id: I23844ca0c68ef1ee550f14d46f6dae57d33b7bd2
2017-07-18pjsip: Increase maximum packet size.Benjamin Keith Ford
The maximum packet size for PJSIP has been increased to handle the multiple streams being added for WebRTC. Change-Id: I9ea1e8d02668c544acadcb1c6200e1cc1bd588b3
2017-07-05Merge "pjproject_bundled: Allow passing configure options to bundled" into 13Jenkins2
2017-06-30pjproject_bundled: Allow passing configure options to bundledGeorge Joseph
There wasn't any good way to pass options like --host or --build down to the pjproject configure which makes cross-compiling difficult. * Added a new PJPROJECT_CONFIGURE_OPTS environment variable which can be used to pass arbitrary options to pjproject configure. * Automatically set the pjproject configure --host and --build options to match those supplied for the asterisk configure. ASTERISK-27097 #close Reported-by: Kinsey Moore Change-Id: I5fa776e110262851173002a26ffe1172e4c35b2e
2017-06-29chan_pjsip: Fix ability to send UPDATE on COLPGeorge Joseph
When connected_line_method is "invite", we're supposed to determine if the client can support UPDATE and if it can, send UPDATE instead of INVITE to avoid the SDP renegotiation. Not only was pjproject not setting the PJSIP_INV_SUPPORT_UPDATE flag, we were testing that invite_tsx wasn't NULL which isn't always the case. * Updated chan_pjsip/update_connected_line_information to drop the requirement that invite_tsx isn't NULL. * Submitted patch to pjproject sip_inv.c that sets the PJSIP_INV_SUPPORT_UPDATE flag correctly. * Updated pjsip.conf.sample to clarify what happens when "invite" is specified. ASTERISK-27095 Change-Id: Ic2381b3567b8052c616d96fbe79564c530e81560
2017-06-13pjproject_bundled: Use the asterisk github mirror for downloadGeorge Joseph
We now mirror the pjproject tarball and md5 at https://github.com/asterisk/third-party/tree/master/pjproject To improve download reliability, we now get the tarball from our mirror instead of from pjsip.org. ASTERISK-27052 #close Reported-by: 'alex' Change-Id: I60236587a8935bfa71fcc391f4e2ecb31918c08a
2017-05-19Merge "AST-2017-003: Handle zero-length body parts correctly." into 13Jenkins2
2017-05-19AST-2017-002: Ensure transaction key buffer is large enough.Mark Michelson
ASTERISK-26938 #close Change-Id: I266490792fd8896a23be7cb92f316b7e69356413
2017-05-19AST-2017-003: Handle zero-length body parts correctly.Mark Michelson
ASTERISK-26939 #close Change-Id: I7ea235ab39833a187db4e078f0788bd0af0a24fd
2017-04-26pjproject_bundled: Add --disable-libwebrtc to configureGeorge Joseph
Without the disable, pjproject tries to build it's internal webrtc implementation which requires sse2. This fails on platforms without sse2. ASTERISK-26930 #close Reported-by: abelbeck Change-Id: I07231f9160c35cfa42b194d3aad4e7d51fd9a410
2017-04-07pjproject_bundled: Crash on pj_ssl_get_info() while ioqueue_on_read_complete().Alexander Traud
When the Asterisk channel driver res_pjsip offers SIP-over-TLS, sometimes, not reproducible, Asterisk crashed in pj_ssl_sock_get_info() because a NULL pointer was read. This change avoids this crash. ASTERISK-26927 #close Change-Id: I24a6011b44d1426d159742ff4421cf806a52938b
2017-04-05pjproject_bundled: Add 3 upstream patchesGeorge Joseph
0035-r5572-svn-backport-dialog-transaction-deadlock.patch 0036-r5573-svn-backport-ua-pjsua-transaction-deadlock.patch 0037-r5576-svn-backport-session-timer-crash.patch Also removed the progress bar from wget download to stdout. ASTERISK-26905 #close Reported-by: Ross Beer Change-Id: I268fb3cf71a3bb24283ff0d24bd8b03239d81256
2017-03-27core: Remove embedded module supportSean Bright
This has not worked for some time and is no longer actively maintained. Change-Id: I5110b0db69c152761b58fa025cb0a53b0e544d99
2017-03-23pjproject_bundled: raise timeout value used when downloadingKevin Harwell
After configuring Asterisk with '--with-pjproject-bundled' the configure/build process attempts to download pjproject from its download site. Currently, a timeout of 10 seconds is used that will stop the download process if pjproject has not been fully downloaded in that time. For some systems this was not enough time and the process was timing out too early. This patch raises the download timeout value to '60'. Also, this patch fixes another bug where the DOWNLOAD_TIMEOUT variable was not being properly exported due to a naming error. DOWNLOAD_MAX_TIMEOUT is now properly renamed to DOWNLOAD_TIMEOUT. ASTERISK-26814 #close Change-Id: Ia56e4e8a3d39db76bc8a1852b2cf07ec10b39842
2017-03-22Merge "pjsip: prevent memory corruption on creation of xml bodies" into 13zuul
2017-03-21pjsip: prevent memory corruption on creation of xml bodiesJoshua Elson
ASTERISK-26776 #close Change-Id: I884b6f4e8233a355d0be687ec78d41bc0e4d3fd2
2017-03-14Merge "res_pjsip_transport_websocket: Add support for IPv6." into 13Joshua Colp
2017-03-10pjproject_bundled: Reduce the need for rebuildsGeorge Joseph
Bundled pjproject should now only rebuild if one of the menuselect "Compiler Flags" options changes. Change-Id: If114a2e16b9e77af371a600d6a5e197bbf28fe43
2017-03-08res_pjsip_transport_websocket: Add support for IPv6.Joshua Colp
This change adds a PJSIP patch (which has been contributed upstream) to allow the registration of IPv6 transport types. Using this the res_pjsip_transport_websocket module now registers an IPv6 Websocket transport and uses it for the corresponding traffic. ASTERISK-26685 Change-Id: Id1f9126f995b31dc38db8fdb58afd289b4ad1647
2017-02-23pjproject_bundled: Update for pjproject 2.6George Joseph
* Removed all 2.5.5 functional patches. * Updated usages of pj_release_pool to be "safe". * Updated configure options to disable webrtc. * Updated config_site.h to disable webrtc in pjmedia. * Added Richard Mudgett's recent resolver patches. Change-Id: Ib400cc4dfca68b3d07ce14d314e829bfddc252c7
2017-02-20pjproject: Fixes to resolve DNS SRV crashes.Richard Mudgett
* Re #1945 (misc): Don't trigger SRV complete callback when there is a parse error. * srv_resolver.c: Don't try to send query if already considered resolved. ** In resolve_hostnames() don't try to resolve a query that is already considered resolved. ** In resolve_hostnames() fix DNS typo in comments. ** In build_server_entries() move a common expression assigning to cnt earlier. * sip_transport.c: Fix tdata object name to actually contain the pointer. It helps if the logs referencing a tdata object buffer actually have a name that includes the correct pointer as part of the name. Also since the tdata has its own pool it helps if any logs referencing the pool have the same name as the tdata object. This change brings tdata logging in line with how tsx objects are named. ASTERISK-26669 #close ASTERISK-26738 #close Change-Id: I56af2ded25476b3e870ca586ee69ed6954ef75af
2017-02-20pjproject: Increase SENDER_WIDTH column size for 64-bit system logs.Richard Mudgett
ASTERISK-26669 ASTERISK-26738 Change-Id: Ibae6fc8cae69a1f04df0c577c4c11200499d6fe0
2017-02-15res_pjsip_pubsub: Correctly implement persisted subscriptionsGeorge Joseph
This patch fixes 2 original issues and more that those 2 exposed. * When we send a NOTIFY, and the client either doesn't respond or responds with a non OK, pjproject only calls our pubsub_on_evsub_state callback, no others. Since pubsub_on_evsub_state (which does the sub_tree cleanup) does not expect to be called back without the other callbacks being called first, it just returns leaving the sub_tree orphaned. Now pubsub_on_evsub_state checks the event for PJSIP_EVENT_TSX_STATE which is what pjproject will set to tell us that it was the transaction that timed out or failed and not the subscription itself timing our or being terminated by the client. If is TSX_STATE, pubsub_on_evsub_state now does the proper cleanup regardless of the state of the subscription. * When a client renews a subscription, we don't update the persisted subscription with the new expires timestamp. This causes subscription_persistence_recreate to prune the subscription if/when asterisk restarts. Now, pubsub_on_rx_refresh calls subscription_persistence_update to apply the new expires timestamp. This exposed other issues however... * When creating a dialog from rdata (which sub_persistence_recreate does from the packet buffer) there must NOT be a tag on the To header (which there will be when a client refreshes a subscription). If there is one, pjsip_dlg_create_uas will fail. To address this, subscription_persistence_update now accepts a flag that indicates that the original packet buffer must not be updated. New subscribes don't set the flag and renews do. This makes sure that when the rdata is recreated on asterisk startup, it's done from the original subscribe packet which won't have the tag on To. * When creating a dialog from rdata, we were setting the dialog's remote (SUBSCRIBE) cseq to be the same as the local (NOTIFY) cseq. When the client tried to resubscribe after a restart with the correct cseq, we'd reject the request with an Invalid CSeq error. * The acts of creating a dialog and evsub by themselves when recreating a subscription does NOT restart pjproject's subscription timer. The result was that even if we did correctly recreate the subscription, we never removed it if the client happened to go away or send a non-OK response to a NOTIFY. However, there is no pjproject function exposed to just set the timer on an evsub that wasn't created by an incoming subscribe request. To address this, we create our own timer using ast_sip_schedule_task. This timer is used only for re-establishing subscriptions after a restart. An earlier approach was to add support for setting pjproject's timer (via a pjproject patch) and while that patch is still included here, we don't use that call at the moment. While addressing these issues, additional debugging was added and some existing messages made more useful. A few formatting changes were also made to 'pjsip show scheduled tasks' to make displaying the subscription timers a little more friendly. ASTERISK-26696 ASTERISK-26756 Change-Id: I8c605fc1e3923f466a74db087d5ab6f90abce68e
2017-01-23pjproject_bundled: Fix setting max log levelGeorge Joseph
An earlier attempt to prevent pjsua from spitting out an extra 6795 lines of debug output every time the testsuite called it was also turning off the ability for asterisk to output debug info when it needed to. This patch reverts the earlier fix and instead adds a pjproject patch that sets the startup log level to 1 for pjsua pjsystest and the pjsua python binding. This is an asterisk-only patch that does not affect pjproject functionality and will not be submitted upstream. Change-Id: I347a8b58b2626f2906ccfc1d339e907627a0c9e8
2017-01-08pjproject_bundled: Fix compilation with MALLOC_DEBUGGeorge Joseph
When MALLOC_DEBUG was specified, make was failing. Immediately remaking would work. The issues was in the ordering of the make dependencies. Change-Id: If6030b54fc693f3179f32bfd20c6b5d5f1b3f7cd
2017-01-03pjproject_bundled: Compile pjsua with max log level = 2George Joseph
A while back, we changed config_site.h to set PJ_LOG_MAX_LEVEL = 6. This allowed us to control the log level better from inside Asterisk. An unfortunate side effect of this was that the pjsua binary and python bindings were also compiled with log level set to 6 so whenever a testsuite test that uses pjsua runs, it spits out 6795 lines of debug in an instant even before the test starts. I believe this overruns the Jenkins capture buffer and prevents the test from properly terminating. In turn, this results in the testsuite just hanging until the job is killed. It's more frequent on the higher end agents because they can spit out the messages faster. Unfortunately, the messages are all spit out before we have control of the python pj.Lib instance where we can set logging levels so the only alternative was to actually compile pjsua and _pjsua.so with an overridden PJ_LOG_MAX_LEVEL. Although defining a lower max level was done in the Makefile, the define in config_site.h had to be wrapped with "#ifndef" so the change would take effect. Change-Id: I2af9e7d48dde1927279c586c9c725d868fe6f3ff
2016-12-18pjproject_bundled: Make build single threadedGeorge Joseph
There were just too many issues in various environments with multi threaded building of pjproject. It doesn't really speed things up anyway since asterisk is already being compiled in parallel. Change-Id: Ie5648fb91bb89b4224b6bf43a0daa1af793c4ce1
2016-12-09pjproject_bundled: Retry download if previously saved tarball is badGeorge Joseph
If a tarball is corrupted during download, the makefile will attempt to download it again. If the tarball somehow gets corrupted after it's downloaded however, the makefile was just failing. We now retry the download. ASTERISK-26653 #close Change-Id: I1b24d454852d80186f60c5a65dc4624ea8a1c359
2016-12-07Merge "Bundled pjproject: Fix finding SIP transactions." into 13Joshua Colp
2016-12-07Bundled pjproject: Fix finding SIP transactions.Richard Mudgett
Occasionally SIP message transactions are not found when they should be. In the particular case an incoming INVITE transaction is CANCELed but the INVITE transaction cannot be found so a 481 response is returned for the CANCEL. The problematic calls have a '_' character in the Via branch parameter. The problem is in the pjproject PJ_HASH_USE_OWN_TOLOWER feature's code. The problem with the "own tolower" code is that it does not calculate the same hash value as when the pj_tolower() function is used. The "own tolower" code will erroneously modify the ASCII characters '@', '[', '\\', ']', '^', and '_'. Calls to pj_hash_calc_tolower() can use the PJ_HASH_USE_OWN_TOLOWER substitute algorithm when enabled. Calls to pj_hash_get_lower(), pj_hash_set_lower(), and pj_hash_set_np_lower() call find_entry() which never uses the PJ_HASH_USE_OWN_TOLOWER algorithm. As a result you may not be able to find a hash tabled entry because the calculated hash values would differ. * Simply disable PJ_HASH_USE_OWN_TOLOWER. ASTERISK-26490 #close Change-Id: If89bfdb5f301b8b685881a9a2a6e0c3c5af32253
2016-12-06pjproject_bundled: Fix missing inclusion of symbolsGeorge Joseph
Added back in a -g3, and an -O3 when DONT_OPTIMIZE is not set, to the CFLAGS. Not sure how they went missing. Also fixed an uninstall problem where we weren't removing the symlink from libasteriskpj.so.2 to libasteriskpj.so. While I was there, I fixed it for libasteriskssl as well. Change-Id: I9e00873b1e9082d05b5549d974534b48a2142556
2016-11-30PJPROJECT logging: Made easier to get available logging levels.Richard Mudgett
Use of the new logging is as simple as issuing the new CLI command or setting the new pjproject.conf option. Other options that can affect the logging are how you have the pjproject log levels mapped to Asterisk log types in pjproject.conf and if you have configured Asterisk to log the DEBUG type messages. Altering the pjproject.conf level mapping shouldn't be necessary for most installations as the default mapping is sensible. Configuring Asterisk to log the DEBUG message type is standard practice for collecting debug information. * Added CLI "pjproject set log level" command to dynamically adjust the maximum pjproject log message level. * Added CLI "pjproject show log level" command to see the currently set maximum pjproject log message level. * Added pjproject.conf startup section "log_level" option to set the initial maximum pjproject log message level so all messages could be captured from initialization. * Set PJ_LOG_MAX_LEVEL to 6 to compile in all defined logging levels into bundled pjproject. Pjproject will use the currently set run time log level to determine if a log message is generated just like Asterisk verbose and debug logging levels. * In log_forwarder(), made always log enabled and mapped pjproject log messages. DEBUG mapped log messages are no longer gated by the current Asterisk debug logging level. * Removed RAII_VAR() from res_pjproject.c:get_log_level(). ASTERISK-26630 #close Change-Id: I6dca12979f482ffb0450aaf58db0fe0f6d2e5389
2016-11-21Merge "pjproject_bundled: Improve reliability of pjproject download" into 13Joshua Colp