cdr_mysql: Make sure connection charset is always set
authorSean Bright <sean.bright@gmail.com>
Wed, 13 Dec 2017 21:43:18 +0000 (16:43 -0500)
committerSean Bright <sean.bright@gmail.com>
Thu, 28 Dec 2017 15:38:37 +0000 (09:38 -0600)
commit898b3b080afda038153c4046d4ebbeea02edcc9f
tree754cece15ef57692ccc2141136714c64e21c0d93
parentfa36f9c01b654fc86b59bee52d6f3019e98d6ac7
cdr_mysql: Make sure connection charset is always set

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
addons/cdr_mysql.c