When the MYSQL_OPT_RECONNECT option is enabled, the MySQL client API
will transparently reconnect when it needs to. Ideally this simplifies
our code, but when this reconnection occurs all connection state is
lost. Because we are not notified that this has happened, we don't know
to set our character set again (with "SET NAMES 'xyz'").
Rather than calling SET NAMES, we instead set the MYSQL_SET_CHARSET_NAME
option which will do it for us under the hood on each connect. This
option has been present in the MySQL C API for at least 15 years, so it
should be safe for most installations.
I also snuck a few other changes into this patch:
* Default the MySQL port to MYSQL_PORT (3306) instead of 0 if it's not
defined.
* Fix some erroneous and/or silly checks on the contents of the
configuration ast_str values.
ASTERISK-27366 #close
Reported by: Halil İbrahim YILDIZ
Change-Id: I36bf8dc5d5f83584e803b3b1a151dea9396ab8f5
Those SIP messages that create dialogs require a contact header to be present.
If the contact header was missing from the message it could cause Asterisk to
crash.
This patch checks to make sure SIP messages that create a dialog contain the
contact header. If the message does not and it is required Asterisk now returns
a "400 Missing Contact header" response. Also added NULL checks when retrieving
the contact header that were missing as a "just in case".
ASTERISK-27480 #close
Change-Id: I1810db87683fc637a9e3e1384a746037fec20afe
Fix instances of:
* Retreive
* Recieve
* other then
* different then
* Repeated words ("the the", "an an", "and and", etc).
* othterwise, teh
ASTERISK-24198 #close
Change-Id: I3809a9c113b92fd9d0d9f9bac98e9c66dc8b2d31
The bridge holds onto the old channel video source after it's been
released. This can lead to use after free errors.
ASTERISK-27229 #close
Change-Id: Ib2dab61677dd8a21f7ad53cdc9b8ca93297838b3
Apparently in OSX it's possible for OSX to HAVE_SYSCTL but not
HAVE_SYSINFO or HAVE_SWAPCTL. In this case freeswap caused an unused
variable error.
ASTERISK-26563 #close
Change-Id: I8ec5b1897b786cc1abaf62264aa75039eea05510
* listen uses the variable `s` for the result from ast_poll() then
overwrites it with the result of accept(). Create a separate variable
poll_result to avoid confusion since ast_poll does not return a file
descriptor.
* Resolve fd leak that would occur if setsockopt failed in listen.
* Reserve an extra byte while processing completion results from remote
daemon. This fixes a bug where completion processing used strstr() on
a string that was not '\0' terminated. This was no risk to the Asterisk
daemon, the bug was only reachable the remote console process.
* Resolve leak in handle_showchan when the channel is not found.
* Multiple leaks and a deadlock in pbx_config CLI completion.
* Fix leaks in "manager show command".
Change-Id: I8f633ceb1714867ae30ef4e421858f77c14485a9
When RTCP-MUX enabled. rtp->s is the same as rtcp->s, check this before
close the file descriptor. Close the FD twice will hangs the asterisk
under heavy load.
ASTERISK-27299 #close
Reported-by: Aaron An
Tested-by: AaronAn
Change-Id: I870a072d73fd207463ac116ef97100addbc0820a
When a channel that is on hold gets added to a bridge by
the Bridge AMI action or the dialplan application of the same name,
music continues to play, causing "robotic sound".
This commit adds a call to ast_moh_stop to stop the music.
Also, it makes the AMI Park action use the right MOH class when the
channel gets parked.
Reported by: Zane Conkle
ASTERISK-25079 #close
Change-Id: I4b129c5a20c15e63968842460ac5a1a85903cf9f
In change_redirecting_information variables we use ast_strlen_zero to
see if a value should be saved. In the case where the value is not NULL
but is a zero length string we leaked.
handle_response_subscribe leaked a reference to the ccss monitor
instance.
Change-Id: Ib11444de69c3d5b2360a88ba2feb54d2c2e9f05f
chan_console supports multiple devices but the CLI only works on a
single device. 'console set active' selects this device.
Sadly that CLI picks the wrong command-line parameter and will only
work for a device called 'active'.
ASTERISK-27490 #close
Change-Id: I2f0e5fe63db19845bee862575b739360797dc73d
Some variables are set and never changed, making them constant. This
means that code in the 'false' block of the conditional is unreachable.
In chan_skinny and res_config_ldap I used preprocessor directive `#if 0`
as I'm unsure if the unreachable code could be enabled in the future.
Change-Id: I62e2aac353d739fb3c983cf768933120f5fba059
* Fix small leaks in from error condition in translate.c.
* Check new file descriptor is less than 0, not less than or equal.
Change-Id: Id7782775486175c739e0c4bf3ea5e17e3f452a99
* ast_linear_stream would leak a file descriptor if it failed to allocate
lin.
* ast_control_tone leaked zone and ts if ast_playtones_start failed.
Additionally added whitespace to ast_linear_stream, pulled assignments
out of conditionals for improved readability.
Change-Id: I6d1a10cf9161b1529d939b9b2d63ea36d395b657
This module uses AST_DEFINE_APP_ARGS_TYPE to define struct's instead of
directly using AST_DECLARE_APP_ARGS. Initialize the variables declared
in this way.
Change-Id: If97fbdd8d63a204e2efd498a192effc14e90fb31
* mwi_sub_event_cb: mwist leaked on separate_mailbox failure.
* add_email_attachment: A reference to sox_gain_tmpdir was used
after the storage was out of scope.
Change-Id: I6282c542ff7b82fa091177a912d11234a8b00a30
The completion generator is missing a return so typing "core set debug
all off <tab>" causes the command to actually execute.
Change-Id: Ibf6462088a74eee66967732b50445783ebefc20b