Commit Graph

4118 Commits

Author SHA1 Message Date
Joshua Colp 1e68c8e738 Merge "res_pjsip: Use sorcery prefix operation for contact lookup" into 13 2017-11-20 16:53:25 -06:00
Joshua Colp 3356c796a0 Merge "res_fax: Remove checks for unsigned values being >= 0." into 13 2017-11-20 12:51:18 -06:00
Joshua Colp be3a33f3d1 Merge "res_snmp: Declare RONLY if net-snmp headers do not." into 13 2017-11-20 12:18:22 -06:00
Joshua Colp e0f9d4d808 Merge "res_pjsip: Fix warning by deferring implicit type cast." into 13 2017-11-20 09:44:36 -06:00
Corey Farrell 366cc259bc res_pjsip: Fix warning by deferring implicit type cast.
Mac doesn't like the comparison of -1 to an enum, so store the result of
ast_sip_str_to_dtmf to an int so we can check for the negative return
value.  ast_sip_str_to_dtmf returns an int so this is only delaying the
implicit type cast.

Change-Id: I0c262c1719ee951aae1f437d733a301cf5f8ad29
2017-11-19 14:28:41 -05:00
Corey Farrell d68e54b7ab res_snmp: Declare RONLY if net-snmp headers do not.
Some net-snmp builds do not provide the RONLY declare, only
NETSNMP_OLDAPI_RONLY.  Map RONLY to NETSNMP_OLDAPI_RONLY to get around
this error.

Change-Id: Ida5c7ad9406515825485c4d3b4a34fd6ad0da577
2017-11-18 20:28:30 -06:00
Corey Farrell 0f270cbe9e res_fax: Remove checks for unsigned values being >= 0.
It's impossible for gwtimeout or fdtimeout to be less than 0 because
they are unsigned int's.  Remove checks and unreachable branches.

Change-Id: Ib2286960621e6ee245e40013c84986143302bc78
2017-11-18 20:05:11 -06:00
Sean Bright 3c72064d3f res_pjsip: Use reasonable buffer lengths for endpoint identification
Domains themselves can be up to 255 characters long (per RFC 1035), so
our current buffer sizes are wholly inadequate for many use cases.

Change-Id: If3f30a68307f1365a1fe06bc4b854c62842c9292
2017-11-17 11:22:10 -05:00
Sean Bright 60cfe00c4e res_pjsip_transport_websocket: Give transport a meaningful description
We were not \0 terminating this string, so any attempt to print it would
in the best case show an empty string and in the worst case potentially
crash.

Change-Id: I63d96ef8f7516ac02a0f91e22dfa8acdc615042c
2017-11-16 17:29:06 -05:00
Sean Bright db2677133c res_pjsip: Use sorcery prefix operation for contact lookup
This improves performance for registrations assuming that
res_config_astdb is not in use.

Change-Id: I86f37aa9ef07a4fe63448cb881bbadd996834bb1
2017-11-16 16:48:29 -05:00
Joshua Colp 8d55b132b9 Merge "sorcery: Add ast_sorcery_retrieve_by_prefix()" into 13 2017-11-16 10:59:23 -06:00
Jenkins2 9fb2da7963 Merge "pjsip / hep: Provide correct local address for Websockets." into 13 2017-11-16 10:57:28 -06:00
Joshua Colp c2dddb001a pjsip / hep: Provide correct local address for Websockets.
Previously for PJSIP the local address of WebSocket connections
was set to the remote address. For logging purposes this is
not particularly useful.

The WebSocket API has been extended to allow the local
address to be queried and this is used in PJSIP to set the
local address to the correct value.

The PJSIP HEP support has also been tweaked so that reliable
transports always use the local address on the transport
and do not try to (wrongly) guess. As they are connection
based it is impossible for the source to be anything else.

ASTERISK-26758
ASTERISK-27363

Change-Id: Icd305fd038ad755e2682ab2786e381f6bf29e8ca
2017-11-14 12:09:22 +00:00
Sean Bright cf062303e3 sorcery: Add ast_sorcery_retrieve_by_prefix()
Some consumers of the sorcery API use ast_sorcery_retrieve_by_regex
only so that they can anchor the potential match as a prefix and not
because they truly need regular expressions.

Rather than using regular expressions for simple prefix lookups, add
a new operation - ast_sorcery_retrieve_by_prefix - that does them.

Patches against 13 and 15 have a compatibility layer needed to
maintain ABI that is not needed in master.

Change-Id: I56f4e20ba1154bd52281f995c27a429a854f6a79
2017-11-13 15:08:50 -05:00
Jenkins2 bcd2241c47 Merge "res_pjsip_pubsub: Ensure remote URI contains URI only." into 13 2017-11-13 06:32:28 -06:00
Kevin Harwell e3bc8f7815 Merge "res_pjsip_registrar.c: Fix named AOR and pjproject group deadlock." into 13 2017-11-09 11:48:50 -06:00
Joshua Colp 7296d3e5af Merge "res_pjsip_history: Fix multiple leaks on vector append failure." into 13 2017-11-09 03:44:21 -06:00
Jenkins2 88d3773330 Merge "res_pjsip_pubsub: Fix multiple leaks on failure to append vectors." into 13 2017-11-08 20:56:26 -06:00
George Joseph 62e70c70a5 Merge "AST-2017-011 - res_pjsip_session: session leak when a call is rejected" into 13 2017-11-08 09:44:40 -06:00
Jenkins2 936a85419e Merge "res_pjproject.c: Fix ast_strdup() alloc failure." into 13 2017-11-08 07:06:15 -06:00
Jenkins2 cdafec0f7a Merge "res_pjsip_outbound_registration: Fix leak on vector add failure." into 13 2017-11-08 07:03:37 -06:00
Kevin Harwell 4b3e03ae87 AST-2017-011 - res_pjsip_session: session leak when a call is rejected
A previous commit made it so when an invite session transitioned into a
disconnected state destruction of the Asterisk pjsip session object was
postponed until either a transport error occurred or the event timer
expired. However, if a call was rejected (for instance a 488) before the
session was fully established the event timer may not have been initiated,
or it was canceled without triggering either of the session finalizing states
mentioned above.

Really the only time destruction of the session should be delayed is when a
BYE is being transacted. This is because it's possible in some cases for the
session to be disconnected, but the BYE is still transacting.

This patch makes it so the session object always gets released (no more
memory leak) when the pjsip session is in a disconnected state. Except when
the method is a BYE. Then it waits until a transport error occurs or an event
timeout.

ASTERISK-27345 #close

Reported by: Corey Farrell

Change-Id: I1e724737b758c20ac76d19d3611e3d2876ae10ed
2017-11-08 05:46:37 -07:00
Joshua Colp 4e8271c2a5 Merge "res_stasis: Fix multiple leaks." into 13 2017-11-08 04:59:15 -06:00
Jenkins2 fe78531d5e Merge "res_pjsip_config_wizard: Fix leaks and add check for malloc failure." into 13 2017-11-07 22:48:08 -06:00
Corey Farrell 16df0e9786 res_pjsip_pubsub: Fix multiple leaks on failure to append vectors.
Change-Id: I68ece0073ea79667ca41eb10405f516f1d30d482
2017-11-07 22:38:04 -05:00
Corey Farrell cf91dde509 res_pjsip_history: Fix multiple leaks on vector append failure.
Change-Id: I41e8d5183ace284095cc721f3b1fb32ade3f940f
2017-11-07 22:31:07 -05:00
Jenkins2 5c47ee4476 Merge "res_pjsip: Fix leak on error in ast_sip_auth_vector_init." into 13 2017-11-07 17:38:38 -06:00
Joshua Colp 40f906add4 Merge "res_pjsip: Avoid crash when contact uri is empty string" into 13 2017-11-07 12:04:41 -06:00
Richard Mudgett 7ad4c19b20 res_pjsip_registrar.c: Fix named AOR and pjproject group deadlock.
One of the patches for ASTERISK_27147 introduced a deadlock regression.
When the connection oriented transport shut down, the code attempted to
remove the associated contact.  However, that same transport had just
requested a registration that we hadn't responded to yet.  Depending
upon timing we could deadlock.

* Made send the REGISTER response after we completed processing the
request contacts and released the named AOR lock to avoid the deadlock.

ASTERISK-27391

Change-Id: I89a90f87cb7a02facbafb44c75d8845f93417364
2017-11-07 12:00:24 -06:00
Jenkins2 8824ed44dc Merge "res_pjsip: Ignore empty TLS configuration" into 13 2017-11-07 10:29:42 -06:00
Corey Farrell c1a608f862 res_stasis: Fix multiple leaks.
* res/stasis/app.c JSON passed to app_send needs to be released.
* res/stasis_message.c: objects leak if vector append fails.

Change-Id: I8dd5385b9f50a5cadf2b1d16efecffd6ddb4db4a
2017-11-07 11:24:51 -05:00
Aaron An d95bfcd013 res_pjsip: Avoid crash when contact uri is empty string
Asterisk will crash if contact uri is invalid, so contact_apply_handler
should check if the uri is NULL or empty.

ASTERISK-27393 #close
Reported-by: Aaron An
Tested-by: AaronAn

Change-Id: Ia0309bdc6b697c73c9c736e1caec910b77ca69f5
2017-11-07 10:33:06 -05:00
Jenkins2 01064bd6bc Merge "stasis/app.c: Optimize stasis_app_get_debug_by_name()" into 13 2017-11-07 07:32:58 -06:00
Richard Mudgett ec58521a48 res_pjproject.c: Fix ast_strdup() alloc failure.
Change-Id: I74688038e7afe3a279359cce53aadb28ade51ead
2017-11-07 07:10:27 -06:00
Jenkins2 37863c163c Merge "Fix ast_(v)asprintf() malloc failure usage conditions." into 13 2017-11-07 06:41:50 -06:00
Corey Farrell 69af7eb663 res_pjsip_outbound_registration: Fix leak on vector add failure.
Change-Id: I774b88b3c9da41edd4dc8d78f095481f52f2bd46
2017-11-06 18:56:33 -05:00
Corey Farrell 4f75655cb6 res_pjsip_config_wizard: Fix leaks and add check for malloc failure.
wizard_apply_handler():
- Free host if we fail to add it to the vector.

wizard_mapped_observer():
- Check for otw allocation failure.
- Free otw if we fail to add it to the vector.

Change-Id: Ib5d3bcabbd9c24dd8a3c9cc692a794a5f60243ad
2017-11-06 18:46:54 -05:00
Corey Farrell e4fba95022 res_pjsip: Fix leak on error in ast_sip_auth_vector_init.
Change-Id: Ib0fc7a18f3135ca8990c3984c9e15f6d26e556e8
2017-11-06 18:31:51 -05:00
Corey Farrell b96dd55add res_pjproject: Handle error from adding to the buildopts vector.
Change-Id: I076c7bd207c7989a23005395ce1735392657be65
2017-11-06 18:20:25 -05:00
Joshua Colp 56e32ca355 res_pjsip_pubsub: Ensure remote URI contains URI only.
This change makes it so that any user of the pubsub
API that requests the remote URI receives only the URI.
Previously the entire string was returned, which could
contain a display name.

ASTERISK-27290

Change-Id: If1d0cd6630f0a264856d31d2a67933109187a017
2017-11-06 18:00:38 +00:00
Richard Mudgett 33d02f5090 stasis/app.c: Optimize stasis_app_get_debug_by_name()
* Eliminate RAII_VAR()
* Short circuit application name lookup if global debug enabled.

Change-Id: I5f78b7bd6ca7fd2c3b07cbbe036c6a93b4681123
2017-11-06 11:49:41 -06:00
Richard Mudgett 9013415593 Fix ast_(v)asprintf() malloc failure usage conditions.
When (v)asprintf() fails, the state of the allocated buffer is undefined.
The library had better not leave an allocated buffer as a result or no one
will know to free it.  The most likely way it can return failure is for an
allocation failure.  If the printf conversion fails then you actually have
a threading problem which is much worse because another thread modified
the parameter values.

* Made __ast_asprintf()/__ast_vasprintf() set the returned buffer to NULL
on failure.  That is much more useful than either an uninitialized pointer
or a pointer that has already been freed.  Many uses won't have to check
for failure to ensure that the buffer won't be double freed or prevent an
attempt to free an uninitialized pointer.

* stasis.c: Fixed memory leak in multi_object_blob_to_ami() allocated by
ast_asprintf().

* ari/resource_bridges.c:ari_bridges_play_helper(): Remove assignment to
the wrong thing which is now not needed even if assigning to the right
thing.

Change-Id: Ib5252fb8850ecf0f78ed0ee2ca0796bda7e91c23
2017-11-06 11:46:06 -06:00
Jenkins2 0eee42626a Merge "Prevent unload of modules which implement an Optional API." into 13 2017-11-06 09:41:29 -06:00
Jenkins2 19c9200429 Merge "Add missing menuselect dependencies." into 13 2017-11-06 08:46:22 -06:00
Joshua Colp 1479d2603e Merge "Stasis/ARI: Fix off-nominal path json memory leaks." into 13 2017-11-06 08:39:20 -06:00
Sean Bright 250c173cfb res_pjsip: Ignore empty TLS configuration
When using realtime, fields that are not explicitly set by an
administrator are still presented to sorcery as empty strings. Handle
this case explicitly.

In this particular case, if any of these fields are required for TLS
support, their existence should be validated in the 'apply' handler once
we have a complete transport definition.

ASTERISK-27032 #close
Reported by: seanchann.zhou

Change-Id: Ie3b5fb421977ccdb33e415d4ec52c3fd192601b7
2017-11-06 09:15:10 -05:00
Jenkins2 22602ec7dd Merge "res_stasis_mailbox.c: Fix leak of mailbox container." into 13 2017-11-06 06:27:29 -06:00
Richard Mudgett 3bce5a9dfa Stasis/ARI: Fix off-nominal path json memory leaks.
Change-Id: Id569c624c426e3b22a99936473c730592d8b83fb
2017-11-03 13:08:33 -05:00
Richard Mudgett 4ea61eef94 res_stasis_device_state.c: Optimize stasis_app_device_states_to_json()
* Eliminate RAII_VAR()
* Replace looped alloca with a char[] since that is how it is used anyway.

Change-Id: Ia27e64a884afa0f50b9ffdb1cf23da6bfa51ffdf
2017-11-03 12:40:53 -05:00
Richard Mudgett 8ec2db7084 res_stasis_mailbox.c: Fix leak of mailbox container.
Change-Id: I7d33c1635713047e7d1597c9d882f7dc006d94b4
2017-11-03 12:14:09 -05:00