Commit Graph

4238 Commits

Author SHA1 Message Date
Ross Beer
ecff05d51c res_pjsip_rfc3326: Order of 'Reason' headers break many endpoints
ASTERISK-27554

Change-Id: If61c7faab7d2fa1031c056ed6268fe928e2391cf
2018-03-07 12:08:29 -04:00
Jenkins2
9f56ad1673 Merge "pjproject: Add cache_pools debugging option." into 13 2018-03-05 07:54:14 -06:00
Jenkins2
d175dc794c Merge "res_pjsip_refer.c: Fix attended transfer race condition crash." into 13 2018-03-01 08:38:51 -06:00
Richard Mudgett
104468ad3a pjproject: Add cache_pools debugging option.
The pool cache gets in the way of finding use after free errors of memory
pool contents.  Tools like valgrind and MALLOC_DEBUG don't know when a
pool is released because it gets put into the cache instead of being
freed.

* Added the "cache_pools" option to pjproject.conf.  Disabling the option
helps track down pool content mismanagement when using valgrind or
MALLOC_DEBUG.  The cache gets in the way of determining if the pool
contents are used after free and who freed it.

To disable the pool caching simply disable the cache_pools option in
pjproject.conf and restart Asterisk.

Sample pjproject.conf setting:
[startup]
cache_pools=no

* Made current users of the caching pool factory initialization and
destruction calls call common routines to create and destroy cached pools.

ASTERISK-27704

Change-Id: I64d5befbaeed2532f93aa027a51eb52347d2b828
2018-02-28 11:38:40 -06:00
Jenkins2
d0e270c973 Merge "modules: Set deprecated modules to not build by default" into 13 2018-02-23 12:48:35 -06:00
Jenkins2
5b5391d7d9 Merge "res_rtp_asterisk: Fix ICE candidate nomination" into 13 2018-02-23 08:13:09 -06:00
Richard Mudgett
3e5864bcc8 res_pjsip_refer.c: Fix attended transfer race condition crash.
The transferrer's session channel was destroyed by the transferrer's
serializer thread in a race condition with the transfer target's
serializer thread during an attended transfer.  The transfer target's
serializer was attempting to clean up a deferred end status on behalf of
the transferrer's channel when it should have passed the action to the
transferrer's serializer.  When the transfer target's serializer lost the
race then both threads wind up trying to end the transferrer's session.

* Push the ast_sip_session_end_if_deferred() call onto the transferrer's
serializer to avoid a race condition that results in a crash.  The
session_end() function that could be called by
ast_sip_session_end_if_deferred() really must be executed by the
transferrer's serializer to avoid this kind of crash.

ASTERISK-27568

Change-Id: Iacda724e7cb24d7520e49b2fd7e504aa398d7238
2018-02-22 17:14:57 -06:00
Sean Bright
220accb461 modules: Set deprecated modules to not build by default
Change-Id: I09090f70224866aead6b3207fa784cfefea7d539
2018-02-22 11:48:00 -05:00
Joshua Colp
b1a0e601c9 Merge "AST-2018-004: Restrict the number of Accept headers in a SUBSCRIBE." into 13 2018-02-21 10:37:20 -06:00
George Joseph
5947fd148b AST-2018-005: res_pjsip_transport_management: Move to core
Since res_pjsip_transport_management provides several attack
mitigation features, its functionality moved to res_pjsip and
this module has been removed.  This way the features will always
be available if res_pjsip is loaded.

ASTERISK-27618
Reported By: Sandro Gauci

Change-Id: I21a2d33d9dda001452ea040d350d7a075f9acf0d
2018-02-21 07:40:10 -07:00
George Joseph
a780386dbb AST-2018-005: Fix tdata leaks when calling pjsip_endpt_send_response(2)
pjsip_distributor:
   authenticate() creates a tdata and uses it to send a challenge or
   failure response.  When pjsip_endpt_send_response2() succeeds, it
   automatically decrements the tdata ref count but when it fails, it
   doesn't.  Since we weren't checking for a return status, we weren't
   decrementing the count ourselves on error and were therefore leaking
   tdatas.

res_pjsip_session:
   session_reinvite_on_rx_request wasn't decrementing the ref count
   if an error happened while sending a 491 response.
   pre_session_setup wasn't decrementing the ref count if
   while sending an error after a pjsip_inv_verify_request failure.

res_pjsip:
   ast_sip_send_response wasn't decrementing the ref count on error.

ASTERISK-27618
Reported By: Sandro Gauci

Change-Id: Iab33a6c7b6fba96148ed465b690ba8534ac961bf
2018-02-21 07:39:38 -07:00
Joshua Colp
de5df002a0 AST-2018-004: Restrict the number of Accept headers in a SUBSCRIBE.
When receiving a SUBSCRIBE request the Accept headers from it are
stored locally. This operation has a fixed limit of 32 Accept headers
but this limit was not enforced. As a result it was possible for
memory outside of the allocated space to get written to resulting
in a crash.

This change enforces the limit so only 32 Accept headers are
processed.

ASTERISK-27640
Reported By: Sandro Gauci

Change-Id: I99a814b10b554b13a6021ccf41111e5bc95e7301
2018-02-21 14:29:26 +00:00
Jenkins2
450afe655c Merge "res_http_websocket: Don't leak memory on read failure" into 13 2018-02-20 13:48:36 -06:00
Jenkins2
e35152b550 Merge "res_pjsip_header_funcs: Various cleanups" into 13 2018-02-19 17:56:31 -06:00
Jenkins2
e34db67cfb Merge "res_pjsip: Use pjsip_sip_uri.user_param instead of other_param" into 13 2018-02-19 11:58:01 -06:00
Sean Bright
5ebc94da02 res_http_websocket: Don't leak memory on read failure
Change-Id: Ic449ea832bc81a1671c0e910c5fbe8c683e3da89
2018-02-19 08:25:01 -05:00
Thomas Guebels
9325de11f8 res_rtp_asterisk: Fix ICE candidate nomination
If the ICE role is not set right away, we might have a role conflict
that stays undetected and ICE finishing with successful tests and no
candidate nominated. This was introduced by ASTERISK-27088.

To avoid this, we set the role as soon as before but only if the ICE
state permits it: still checking and not yet nominating candidates or
completed.

ASTERISK-27646

Change-Id: I5dbc69ad63cacbb067922850fbb113d479bd729c
2018-02-19 11:31:38 +01:00
Sean Bright
1a7ad4c9cf res_pjsip_header_funcs: Various cleanups
* Prefer strcasecmp() over stricmp()
 * Use a list with no lock since we never actually lock
 * Minor cleanups to error messages

Change-Id: I8446f44795ee8f3072e1c1f9193c6912dfc0c42b
2018-02-18 09:07:17 -05:00
Sean Bright
9ad9433257 res_pjsip: Endpoint destruction does not free DTLS configuration
ASTERISK-27679 #close
Reported by: Mak Dee

Change-Id: I89a2783a11be0763bf123d1619ed176b6225cf42
2018-02-16 14:38:17 -05:00
Alexander Traud
139dd38193 res_calendar: Specialized calendars depend on symbols of general calendar.
ASTERISK-27680

Change-Id: Ifb77912e424fe3710a025c18526fada673ec0b79
2018-02-16 05:59:15 -06:00
Sean Bright
54efc0c637 res_pjsip: Use pjsip_sip_uri.user_param instead of other_param
There is a dedicated slot in the pjsip_sip_uri for the 'user'
parameter, so use that instead of adding to the list of generic URI
parameters.

Change-Id: I0a0ce8a60ecee27489735bf56fd707719d8c2ed6
2018-02-15 14:36:26 -05:00
Jenkins2
5c98924d64 Merge "endpoint identifiers: Some code cleanup." into 13 2018-02-06 05:30:45 -06:00
Jenkins2
e3a2b699db Merge "res_pjsip/config_domain_aliases.c: Add check for missing domain." into 13 2018-02-05 16:01:28 -06:00
Richard Mudgett
da987df122 res_pjsip/config_domain_aliases.c: Add check for missing domain.
What is the point of defining an alias and not saying what is being
aliased?

Change-Id: I98a892016ed61dcf5efeb6619fd748925103f0be
2018-02-05 14:01:15 -06:00
Jenkins2
88e323a2a0 Merge "res_sorcery_realtime.c: Fix ref leak if object failed to apply." into 13 2018-02-05 12:57:54 -06:00
Jenkins2
d2df34f204 Merge "res_pjsip.c: Fix documentation typos." into 13 2018-02-03 10:28:22 -06:00
Richard Mudgett
1adf90320d endpoint identifiers: Some code cleanup.
res_pjsip_endpoint_identifier_user.c:
* Fix copy/paste error in find_endpoint().  We were using a constant
"anonymous" string instead of the passed in endpoint_name when checking
the transport domain for an endpoint match.
* Eliminate RAII_VAR in find_endpoint().
* Remove always true check in find_transport_state_in_use().
* Remove useless CMD_STOP in find_transport_state_in_use().

res_pjsip_endpoint_identifier_anonymous.c:
* Eliminate RAII_VAR in anonymous_identify().
* Remove always true check in find_transport_state_in_use().
* Remove useless CMD_STOP in find_transport_state_in_use().

Change-Id: I86924c31db5bd225ca0c1219c761b668c6f91189
2018-02-02 17:57:06 -06:00
Richard Mudgett
93a1ffc834 res_pjsip.c: Fix documentation typos.
Change-Id: I82ae0b92bfa2ece84a5c684efd9eefdc83ebd068
2018-02-02 17:48:19 -06:00
Richard Mudgett
5d16cefd63 res_sorcery_realtime.c: Fix ref leak if object failed to apply.
Change-Id: I3c7106ff77009754725cee790eadf5da44154ab6
2018-02-02 17:45:04 -06:00
Joshua Elson
8125b825d3 res_pjsip_mwi.c: Fix null pointer crash
ASTERISK-27652 #close

Change-Id: I78a0d38bfd8d0d82830f3d53da04872d6b67284d
2018-02-01 15:32:31 -06:00
George Joseph
7debdd285c res_pjsip_pubsub: Prune subs with reliable transports at startup
In an earlier release, inbound registrations on a reliable transport
were pruned on Asterisk restart since the TCP connection would have
been torn down and become unusable when Asterisk stopped.  This same
process is now also applied to inbound subscriptions.

Also fixed issues in res_pjsip_registrar where it wasn't handling the
monitoring correctly when multiple registrations came in over the same
transport.

To accomplish this, the pjsip_transport_event feature needed to
be refactored to allow multiple monitors (multiple subcriptions or
registrations from the same endpoint) to exist on the same transport.
Since this changed the API, any external modules that may have used the
transport monitor feature (highly unlikey) will need to be changed.

ASTERISK-27612
Reported by: Ross Beer

Change-Id: Iee87cf4eb9b7b2b93d5739a72af52d6ca8fbbe36
2018-02-01 10:32:26 -07:00
Jenkins2
58ba7490a9 Merge "res_pjsip_registrar_expire: Mark module deprecated." into 13 2018-02-01 10:45:17 -06:00
Jenkins2
c9bff6be9b Merge "res_pjsip_session: Prevent crash during shutdown." into 13 2018-01-31 17:10:28 -06:00
Corey Farrell
698b28e9c7 res_pjsip_registrar_expire: Mark module deprecated.
The functionality of this module was already moved to
res_pjsip_registrar, mark it deprecated and add message to CHANGES.

Change-Id: I90c7d52c7e15e85fde3389d5eaccb05b97848813
2018-01-31 16:15:46 -05:00
Richard Mudgett
2c4dde0ed0 res_pjsip_registrar.c: Fix compiler error.
Need to include signal.h to define pthread_kill() and SIGURG.

Change-Id: I10ae3aa4bf8e7386ac29ade78c0f2caed8e674fa
2018-01-31 11:00:52 -06:00
Corey Farrell
4c8c0e4c22 res_pjsip_session: Prevent crash during shutdown.
pjproject does not have a function to reverse pjsip_inv_usage_init.
This means we need to ignore any calls to the functions once shutdown is
final.

ASTERISK-27571 #close

Change-Id: Ia550fcba563e2328f03162d79fb185f16b7c9b9d
2018-01-31 00:07:44 -05:00
George Joseph
5b699c812e res_pjsip_registrar_expire: Refactor into res_pjsip_register
res_pjsip_registrar_expire remains as an empty module for now.

Change-Id: Ib93698938bae548d2199cb542f3692d1a171239f
2018-01-29 12:46:36 -07:00
Sean Bright
b353c90627 res_pjsip: Document tlsv1_1 and tlsv1_2 methods
Change-Id: I67ed9039bf3f132fb20ee7a750e0aef0f704d7d3
2018-01-18 15:55:20 -05:00
Jenkins2
16f211c647 Merge "res_pjsip: Split type=identify to IP address and SIP header matching priorities" into 13 2018-01-17 11:32:39 -06:00
Jenkins2
d7f5421ea4 Merge "res_stasis_recording: Allow symbolic links in configured recordings dir." into 13 2018-01-16 09:27:11 -06:00
Jenkins2
5ebb32d3e3 Merge "config_transport: Enable TCP_NODELAY on TLS transports" into 13 2018-01-15 10:36:04 -06:00
George Joseph
948b852f48 config_transport: Enable TCP_NODELAY on TLS transports
We did this for TCP transports already but I'm not sure why we
didn't do it for TLS transports.

ASTERISK_27474 #not_final_fix

Change-Id: I5b1ef4b882f7b859e718236686b7898751dbb262
2018-01-13 12:55:25 -07:00
Corey Farrell
f01bac230d res_stasis_recording: Allow symbolic links in configured recordings dir.
If any component of ast_config_AST_RECORDING_DIR is a symbolic link we
would incorrectly assume the ARI user was trying to escape the recording
path.  Create additional check to check the recording directory's
realpath, only deny access if both do not match.

This is needed by the testsuite when run by 'run-local'.

Change-Id: I9145e841865edadcb5f75cead3471ad06bbb56c0
2018-01-12 19:05:12 -06:00
Alexander Traud
f07b0df627 res_config_pgsql: Avoid typecasting an int to unsigned char.
clang 5.0 warned about this.

ASTERISK-27576

Change-Id: If41f400a51973c06cdb9b75462e535b616bfe385
2018-01-12 09:26:36 -06:00
Richard Mudgett
f35960d55b res_pjsip: Split type=identify to IP address and SIP header matching priorities
The type=identify endpoint identification method can match by IP address
and by SIP header.  However, the SIP header matching has limited
usefulness because you cannot specify the SIP header matching priority
relative to the IP address matching.  All the matching happens at the same
priority and the order of evaluating the identify sections is
indeterminate.  e.g., If you had two type=identify sections where one
matches by IP address for endpoint alice and the other matches by SIP
header for endpoint bob then you couldn't predict which endpoint is
matched when a request comes in that matches both.

* Extract the SIP header matching criteria into its own "header" endpoint
identification method so the user can specify the relative priority of the
SIP header and the IP address matching criteria in the global
endpoint_identifier_order option.  The "ip" endpoint identification method
now only matches by IP address.

ASTERISK-27491

Change-Id: I9df142a575b7e1e3471b7cda5d3ea156cef08095
2018-01-11 14:14:08 -06:00
Jenkins2
231caefd9b Merge "res_pjsip_endpoint_identifier_ip.c: Remove unnecessary requirement." into 13 2018-01-11 13:27:49 -06:00
Jenkins2
60a66b56a5 Merge "res_pjsip.c: Update the endpoint identification documentation." into 13 2018-01-11 08:18:11 -06:00
Jenkins2
d72d6f6223 Merge "res_pjsip.c: Fix ident_to_str() and refactor ident_handler()." into 13 2018-01-10 17:10:59 -06:00
Joshua Colp
7f2d6f51ed Merge "res_pjsip_endpoint_identifier_ip.c: Allow multiple IdentifyDetail AMI events." into 13 2018-01-10 06:55:10 -06:00
Joshua Colp
a1eb5b06a8 Merge "res_stasis: Reduce RAII_VAR usage." into 13 2018-01-10 06:40:39 -06:00