diff --git a/libmariadb/mariadb_lib.c b/libmariadb/mariadb_lib.c index 5465eb05..05733f8d 100644 --- a/libmariadb/mariadb_lib.c +++ b/libmariadb/mariadb_lib.c @@ -680,6 +680,18 @@ struct st_default_options mariadb_defaults[] = (OPTS)->extension= (struct st_mysql_options_extension *) \ calloc(1, sizeof(struct st_mysql_options_extension)); +#define OPT_SET_EXTENDED_VALUE_BIN(OPTS, KEY, KEY_LEN, VAL, LEN) \ + CHECK_OPT_EXTENSION_SET(OPTS) \ + free((gptr)(OPTS)->extension->KEY); \ + if((VAL) && (LEN)) { \ + if (((OPTS)->extension->KEY= malloc((LEN)))) { \ + memcpy((OPTS)->extension->KEY, (VAL), (LEN)); \ + (OPTS)->extension->KEY_LEN= (LEN); \ + } \ + } \ + else \ + (OPTS)->extension->KEY= NULL + #define OPT_SET_EXTENDED_VALUE_STR(OPTS, KEY, VAL) \ CHECK_OPT_EXTENSION_SET(OPTS) \ free((gptr)(OPTS)->extension->KEY); \ @@ -3360,8 +3372,7 @@ mysql_optionsv(MYSQL *mysql,enum mysql_option option, ...) case MARIADB_OPT_PROXY_HEADER: { size_t arg2 = va_arg(ap, size_t); - OPT_SET_EXTENDED_VALUE(&mysql->options, proxy_header, (char *)arg1); - OPT_SET_EXTENDED_VALUE(&mysql->options, proxy_header_len, arg2); + OPT_SET_EXTENDED_VALUE_BIN(&mysql->options, proxy_header, proxy_header_len, (char *)arg1, arg2); } break; case MARIADB_OPT_TLS_VERSION: diff --git a/travis.sh b/travis.sh index ea65dfe3..cbd8fc0c 100755 --- a/travis.sh +++ b/travis.sh @@ -2,6 +2,7 @@ set -e +export CC_DIR=/home/travis/build/mariadb-corporation/mariadb-connector-c if [ -n "$server_branch" ] ; then ################################################################################################################### @@ -14,28 +15,33 @@ if [ -n "$server_branch" ] ; then sudo tail /etc/hosts # get latest server - git clone -b ${server_branch} https://github.com/mariadb/server ../workdir-server + git clone -b ${server_branch} https://github.com/mariadb/server ../workdir-server --depth=1 cd ../workdir-server + export SERVER_DIR=$PWD + # don't pull in submodules. We want the latest C/C as libmariadb # build latest server with latest C/C as libmariadb # skip to build some storage engines to speed up the build - cmake -DPLUGIN_MROONGA=NO -DPLUGIN_ROCKSDB=NO -DPLUGIN_SPIDER=NO -DPLUGIN_TOKUDB=NO + + mkdir bld + cd bld + cmake .. -DPLUGIN_MROONGA=NO -DPLUGIN_ROCKSDB=NO -DPLUGIN_SPIDER=NO -DPLUGIN_TOKUDB=NO cd libmariadb echo "PR:${TRAVIS_PULL_REQUEST} TRAVIS_COMMIT:${TRAVIS_COMMIT}" if [ -n "$TRAVIS_PULL_REQUEST" ] && [ "$TRAVIS_PULL_REQUEST" != "false" ] ; then # fetching pull request echo "fetching PR" - git fetch origin pull/${TRAVIS_PULL_REQUEST}/head:PR_${TRAVIS_PULL_REQUEST} echo "checkout PR" - git checkout PR_${TRAVIS_PULL_REQUEST} else echo "checkout commit" - git checkout ${TRAVIS_COMMIT} fi - cd .. + cp $CC_DIR/* $SERVER_DIR/libmariadb -r + cd $SERVER_DIR git add libmariadb + + cd $SERVER_DIR/bld make -j9 cd mysql-test/ diff --git a/unittest/libmariadb/my_test.h b/unittest/libmariadb/my_test.h index 10fff941..1f1d7674 100644 --- a/unittest/libmariadb/my_test.h +++ b/unittest/libmariadb/my_test.h @@ -655,6 +655,33 @@ void run_tests(struct my_tests_st *test) { total++; plan(total); + /* display TLS stats */ + mysql= mysql_init(NULL); + mysql_ssl_set(mysql, NULL, NULL, NULL, NULL, NULL); + + if (!mysql_real_connect(mysql, hostname, username, password, schema, port, socketname, 0)) + { + BAIL_OUT("Can't establish TLS connection to server."); + } + + if (!mysql_query(mysql, "SHOW VARIABLES LIKE '%ssl%'")) + { + MYSQL_RES *res; + MYSQL_ROW row; + + diag("TLS server variables"); + diag("--------------------"); + + res= mysql_store_result(mysql); + while ((row= mysql_fetch_row(res))) + diag("%s: %s", row[0], row[1]); + mysql_free_result(res); + diag("Cipher in use: %s", mysql_get_ssl_cipher(mysql)); + diag("--------------------"); + } + mysql_close(mysql); + + if ((mysql_default= test_connect(NULL))) { diag("Testing against MySQL Server %s", mysql_get_server_info(mysql_default));