diff options
author | monty@hundin.mysql.fi <> | 2002-08-09 16:47:16 +0300 |
---|---|---|
committer | monty@hundin.mysql.fi <> | 2002-08-09 16:47:16 +0300 |
commit | ac6e640c4dede507d9d9c8f43836785e4b47ae63 (patch) | |
tree | 9e6ce887604db3116c5f936a79eaa6915877323e | |
parent | 7616da973d744d84d6e5abd9f4d1a8fbd2d74811 (diff) | |
download | mariadb-git-ac6e640c4dede507d9d9c8f43836785e4b47ae63.tar.gz |
Fix for SSL and new my_getopt
Fix for syntax error bug in SET TRANSACTION ISOLATION
-rw-r--r-- | client/mysql.cc | 11 | ||||
-rw-r--r-- | client/mysqladmin.c | 6 | ||||
-rw-r--r-- | client/mysqlcheck.c | 4 | ||||
-rw-r--r-- | client/mysqldump.c | 4 | ||||
-rw-r--r-- | client/mysqlimport.c | 4 | ||||
-rw-r--r-- | client/mysqlshow.c | 4 | ||||
-rw-r--r-- | include/Makefile.am | 2 | ||||
-rw-r--r-- | include/sslopt-case.h | 48 | ||||
-rw-r--r-- | include/sslopt-longopts.h | 2 | ||||
-rw-r--r-- | libmysql/libmysql.c | 5 | ||||
-rw-r--r-- | mysql-test/r/innodb.result | 38 | ||||
-rw-r--r-- | mysql-test/t/innodb.test | 28 | ||||
-rw-r--r-- | sql/mini_client.cc | 79 | ||||
-rw-r--r-- | sql/mysqld.cc | 24 | ||||
-rw-r--r-- | sql/slave.cc | 2 | ||||
-rw-r--r-- | sql/sql_yacc.yy | 2 |
16 files changed, 141 insertions, 122 deletions
diff --git a/client/mysql.cc b/client/mysql.cc index 460d47c75da..77823b1087f 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -391,13 +391,6 @@ int main(int argc,char *argv[]) sig_handler mysql_end(int sig) { mysql_close(&mysql); -#ifdef HAVE_OPENSSL - my_free(opt_ssl_key,MYF(MY_ALLOW_ZERO_PTR)); - my_free(opt_ssl_cert,MYF(MY_ALLOW_ZERO_PTR)); - my_free(opt_ssl_ca,MYF(MY_ALLOW_ZERO_PTR)); - my_free(opt_ssl_capath,MYF(MY_ALLOW_ZERO_PTR)); - my_free(opt_ssl_cipher,MYF(MY_ALLOW_ZERO_PTR)); -#endif #ifdef HAVE_READLINE if (!status.batch && !quick && !opt_html && !opt_xml) { @@ -709,7 +702,6 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), case '?': usage(0); exit(0); -#include "sslopt-case.h" } return 0; } @@ -2209,6 +2201,9 @@ sql_real_connect(char *host,char *database,char *user,char *password, if (using_opt_local_infile) mysql_options(&mysql,MYSQL_OPT_LOCAL_INFILE, (char*) &opt_local_infile); #ifdef HAVE_OPENSSL + if (opt_ssl_key || opt_ssl_cert || opt_ssl_ca || opt_ssl_capath || + opt_ssl_cipher) + opt_use_ssl= 1; if (opt_use_ssl) mysql_ssl_set(&mysql, opt_ssl_key, opt_ssl_cert, opt_ssl_ca, opt_ssl_capath, opt_ssl_cipher); diff --git a/client/mysqladmin.c b/client/mysqladmin.c index d6232a38f64..a62d587f3b1 100644 --- a/client/mysqladmin.c +++ b/client/mysqladmin.c @@ -222,7 +222,6 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), else option_wait= ~0; break; -#include "sslopt-case.h" case '?': case 'I': /* Info */ error++; @@ -275,10 +274,13 @@ int main(int argc,char *argv[]) mysql_options(&mysql,MYSQL_OPT_CONNECT_TIMEOUT, (char*) &tmp); } #ifdef HAVE_OPENSSL + if (opt_ssl_key || opt_ssl_cert || opt_ssl_ca || opt_ssl_capath || + opt_ssl_cipher) + opt_use_ssl= 1; if (opt_use_ssl) mysql_ssl_set(&mysql, opt_ssl_key, opt_ssl_cert, opt_ssl_ca, opt_ssl_capath, opt_ssl_cipher); -#endif /* HAVE_OPENSSL */ +#endif if (sql_connect(&mysql, option_wait)) error = 1; else diff --git a/client/mysqlcheck.c b/client/mysqlcheck.c index 948f9ca8477..fdc7b5cf4d7 100644 --- a/client/mysqlcheck.c +++ b/client/mysqlcheck.c @@ -246,7 +246,6 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), verbose++; break; case 'V': print_version(); exit(0); -#include "sslopt-case.h" } return 0; } @@ -530,6 +529,9 @@ static int dbConnect(char *host, char *user, char *passwd) if (opt_compress) mysql_options(&mysql_connection, MYSQL_OPT_COMPRESS, NullS); #ifdef HAVE_OPENSSL + if (opt_ssl_key || opt_ssl_cert || opt_ssl_ca || opt_ssl_capath || + opt_ssl_cipher) + opt_use_ssl= 1; if (opt_use_ssl) mysql_ssl_set(&mysql_connection, opt_ssl_key, opt_ssl_cert, opt_ssl_ca, opt_ssl_capath, opt_ssl_cipher); diff --git a/client/mysqldump.c b/client/mysqldump.c index 4c1e714682b..6a26f4167f7 100644 --- a/client/mysqldump.c +++ b/client/mysqldump.c @@ -352,7 +352,6 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), case (int) OPT_TABLES: opt_databases=0; break; -#include "sslopt-case.h" } return 0; } @@ -458,6 +457,9 @@ static int dbConnect(char *host, char *user,char *passwd) if (opt_compress) mysql_options(&mysql_connection,MYSQL_OPT_COMPRESS,NullS); #ifdef HAVE_OPENSSL + if (opt_ssl_key || opt_ssl_cert || opt_ssl_ca || opt_ssl_capath || + opt_ssl_cipher) + opt_use_ssl= 1; if (opt_use_ssl) mysql_ssl_set(&mysql_connection, opt_ssl_key, opt_ssl_cert, opt_ssl_ca, opt_ssl_capath, opt_ssl_cipher); diff --git a/client/mysqlimport.c b/client/mysqlimport.c index 1933ea41bcf..e7af106abbb 100644 --- a/client/mysqlimport.c +++ b/client/mysqlimport.c @@ -193,7 +193,6 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), case '?': usage(); exit(0); -#include "sslopt-case.h" } return 0; } @@ -348,6 +347,9 @@ static MYSQL *db_connect(char *host, char *database, char *user, char *passwd) mysql_options(&mysql_connection,MYSQL_OPT_LOCAL_INFILE, (char*) &opt_local_file); #ifdef HAVE_OPENSSL + if (opt_ssl_key || opt_ssl_cert || opt_ssl_ca || opt_ssl_capath || + opt_ssl_cipher) + opt_use_ssl= 1; if (opt_use_ssl) mysql_ssl_set(&mysql_connection, opt_ssl_key, opt_ssl_cert, opt_ssl_ca, opt_ssl_capath, opt_ssl_cipher); diff --git a/client/mysqlshow.c b/client/mysqlshow.c index 81b4d2ab4f7..718716b60be 100644 --- a/client/mysqlshow.c +++ b/client/mysqlshow.c @@ -85,6 +85,9 @@ int main(int argc, char **argv) if (opt_compress) mysql_options(&mysql,MYSQL_OPT_COMPRESS,NullS); #ifdef HAVE_OPENSSL + if (opt_ssl_key || opt_ssl_cert || opt_ssl_ca || opt_ssl_capath || + opt_ssl_cipher) + opt_use_ssl= 1; if (opt_use_ssl) mysql_ssl_set(&mysql, opt_ssl_key, opt_ssl_cert, opt_ssl_ca, opt_ssl_capath, opt_ssl_cipher); @@ -218,7 +221,6 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), opt_mysql_unix_port=MYSQL_NAMEDPIPE; #endif break; -#include "sslopt-case.h" case '#': DBUG_PUSH(argument ? argument : "d:t:o"); break; diff --git a/include/Makefile.am b/include/Makefile.am index 576f557cdd3..67132b4c4a4 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -20,7 +20,7 @@ pkginclude_HEADERS = dbug.h m_string.h my_sys.h my_list.h \ mysql.h mysql_com.h mysqld_error.h mysql_embed.h \ my_semaphore.h my_pthread.h my_no_pthread.h raid.h \ errmsg.h my_global.h my_net.h my_alloc.h\ - sslopt-case.h sslopt-longopts.h sslopt-usage.h \ + sslopt-longopts.h sslopt-usage.h \ sslopt-vars.h $(BUILT_SOURCES) noinst_HEADERS = config-win.h config-os2.h \ nisam.h heap.h merge.h my_bitmap.h\ diff --git a/include/sslopt-case.h b/include/sslopt-case.h deleted file mode 100644 index bc6a46fc776..00000000000 --- a/include/sslopt-case.h +++ /dev/null @@ -1,48 +0,0 @@ -/* Copyright (C) 2000 MySQL AB - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - -#ifdef HAVE_OPENSSL - case OPT_SSL_SSL: - opt_use_ssl = 1; /* true */ - break; - case OPT_SSL_KEY: - opt_use_ssl = 1; /* true */ -/* QQ to be removed??? my_free(opt_ssl_key, MYF(MY_ALLOW_ZERO_PTR)); */ -/* QQ to be removed??? opt_ssl_key = my_strdup(optarg, MYF(0)); */ - my_free(opt_ssl_key, MYF(MY_ALLOW_ZERO_PTR)); - opt_ssl_key = my_strdup(argument, MYF(0)); - break; - case OPT_SSL_CERT: - opt_use_ssl = 1; /* true */ - my_free(opt_ssl_cert, MYF(MY_ALLOW_ZERO_PTR)); - opt_ssl_cert = my_strdup(argument, MYF(0)); - break; - case OPT_SSL_CA: - opt_use_ssl = 1; /* true */ - my_free(opt_ssl_ca, MYF(MY_ALLOW_ZERO_PTR)); - opt_ssl_ca = my_strdup(argument, MYF(0)); - break; - case OPT_SSL_CAPATH: - opt_use_ssl = 1; /* true */ - my_free(opt_ssl_capath, MYF(MY_ALLOW_ZERO_PTR)); - opt_ssl_capath = my_strdup(argument, MYF(0)); - break; - case OPT_SSL_CIPHER: - opt_use_ssl = 1; /* true */ - my_free(opt_ssl_cipher, MYF(MY_ALLOW_ZERO_PTR)); - opt_ssl_cipher = my_strdup(argument, MYF(0)); - break; -#endif diff --git a/include/sslopt-longopts.h b/include/sslopt-longopts.h index d82c833c439..811fbcbbdd6 100644 --- a/include/sslopt-longopts.h +++ b/include/sslopt-longopts.h @@ -34,7 +34,7 @@ "CA directory (check OpenSSL docs, implies --ssl)", (gptr*) &opt_ssl_capath, (gptr*) &opt_ssl_capath, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"ssl-cipher", OPT_SSL_CAPATH, "SSL cipher to use (implies --ssl)", + {"ssl-cipher", OPT_SSL_CIPHER, "SSL cipher to use (implies --ssl)", (gptr*) &opt_ssl_cipher, (gptr*) &opt_ssl_cipher, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c index 7cd607b702e..bc07bf0367c 100644 --- a/libmysql/libmysql.c +++ b/libmysql/libmysql.c @@ -1436,7 +1436,6 @@ mysql_ssl_set(MYSQL *mysql __attribute__((unused)) , mysql->options.ssl_ca= strdup_if_not_null(ca); mysql->options.ssl_capath= strdup_if_not_null(capath); mysql->options.ssl_cipher= strdup_if_not_null(cipher); - mysql->options.use_ssl= TRUE; mysql->connector_fd = (gptr) new_VioSSLConnectorFd(key, cert, ca, capath, cipher); DBUG_PRINT("info",("mysql_ssl_set, context: %p", @@ -1808,6 +1807,10 @@ mysql_real_connect(MYSQL *mysql,const char *host, const char *user, client_flag|=CLIENT_CAPABILITIES; #ifdef HAVE_OPENSSL + if (mysql->options.ssl_key || mysql->options.ssl_cert || + mysql->options.ssl_ca || mysql->options.ssl_capath || + mysql->options.ssl_cipher) + mysql->options.use_ssl= 1; if (mysql->options.use_ssl) client_flag|=CLIENT_SSL; #endif /* HAVE_OPENSSL */ diff --git a/mysql-test/r/innodb.result b/mysql-test/r/innodb.result index 89a857ef098..db6b55e1a2a 100644 --- a/mysql-test/r/innodb.result +++ b/mysql-test/r/innodb.result @@ -989,3 +989,41 @@ select * from t2; number cname carrier_id privacy last_mod_date last_mod_id last_app_date last_app_id version assigned_scps status 333 tubs 99 2 20020109113453 501 20020109113453 500 3 10 0 drop table t1,t2; +create table t1 (id int unsigned not null auto_increment, code tinyint unsigned not null, name char(20) not null, primary key (id), key (code), unique (name)) type=innodb; +BEGIN; +SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE; +SELECT @@tx_isolation,@@global.tx_isolation; +@@tx_isolation @@tx_isolation +SERIALIZABLE READ-COMMITTED +insert into t1 (code, name) values (1, 'Tim'), (1, 'Monty'), (2, 'David'); +select id, code, name from t1 order by id; +id code name +1 1 Tim +2 1 Monty +3 2 David +COMMIT; +BEGIN; +SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ; +insert into t1 (code, name) values (2, 'Erik'), (3, 'Sasha'); +select id, code, name from t1 order by id; +id code name +1 1 Tim +2 1 Monty +3 2 David +4 2 Erik +5 3 Sasha +COMMIT; +BEGIN; +SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; +insert into t1 (code, name) values (3, 'Jeremy'), (4, 'Matt'); +select id, code, name from t1 order by id; +id code name +1 1 Tim +2 1 Monty +3 2 David +4 2 Erik +5 3 Sasha +6 3 Jeremy +7 4 Matt +COMMIT; +DROP TABLE t1; diff --git a/mysql-test/t/innodb.test b/mysql-test/t/innodb.test index 1b7ee99e15a..0ddd4d357d0 100644 --- a/mysql-test/t/innodb.test +++ b/mysql-test/t/innodb.test @@ -638,3 +638,31 @@ select * from t1; select * from t2; select * from t2; drop table t1,t2; + +# +# A simple test with some isolation levels +# TODO: Make this into a test using replication to really test how +# this works. +# + +create table t1 (id int unsigned not null auto_increment, code tinyint unsigned not null, name char(20) not null, primary key (id), key (code), unique (name)) type=innodb; + +BEGIN; +SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE; +SELECT @@tx_isolation,@@global.tx_isolation; +insert into t1 (code, name) values (1, 'Tim'), (1, 'Monty'), (2, 'David'); +select id, code, name from t1 order by id; +COMMIT; + +BEGIN; +SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ; +insert into t1 (code, name) values (2, 'Erik'), (3, 'Sasha'); +select id, code, name from t1 order by id; +COMMIT; + +BEGIN; +SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; +insert into t1 (code, name) values (3, 'Jeremy'), (4, 'Matt'); +select id, code, name from t1 order by id; +COMMIT; +DROP TABLE t1; diff --git a/sql/mini_client.cc b/sql/mini_client.cc index 2b58430ef08..cf5747b8160 100644 --- a/sql/mini_client.cc +++ b/sql/mini_client.cc @@ -492,7 +492,7 @@ mc_mysql_connect(MYSQL *mysql,const char *host, const char *user, uint port, const char *unix_socket,uint client_flag, uint net_read_timeout) { - char buff[100],*end,*host_info; + char buff[NAME_LEN+USERNAME_LENGTH+100],*end,*host_info; my_socket sock; ulong ip_addr; struct sockaddr_in sock_addr; @@ -518,7 +518,6 @@ mc_mysql_connect(MYSQL *mysql,const char *host, const char *user, thr_alarm_init(&alarmed); thr_alarm(&alarmed, net_read_timeout, &alarm_buff); - bzero((char*) &mysql->options,sizeof(mysql->options)); net->vio = 0; /* If something goes wrong */ mysql->charset=default_charset_info; /* Set character set */ if (!port) @@ -527,13 +526,14 @@ mc_mysql_connect(MYSQL *mysql,const char *host, const char *user, unix_socket=MYSQL_UNIX_ADDR; mysql->reconnect=1; /* Reconnect as default */ + mysql->server_status=SERVER_STATUS_AUTOCOMMIT; /* ** Grab a socket and connect it to the server */ #if defined(HAVE_SYS_UN_H) - if (!host || !strcmp(host,LOCAL_HOST)) + if ((!host || !strcmp(host,LOCAL_HOST)) && unix_socket) { host=LOCAL_HOST; host_info=(char*) ER(CR_LOCALHOST_CONNECTION); @@ -598,7 +598,7 @@ mc_mysql_connect(MYSQL *mysql,const char *host, const char *user, host=LOCAL_HOST; sprintf(host_info=buff,ER(CR_TCP_CONNECTION),host); DBUG_PRINT("info",("Server name: '%s'. TCP sock: %d", host,port)); - if ((sock = socket(AF_INET,SOCK_STREAM,0)) == SOCKET_ERROR) + if ((sock = (my_socket) socket(AF_INET,SOCK_STREAM,0)) == SOCKET_ERROR) { net->last_errno=CR_IPSOCK_ERROR; sprintf(net->last_error,ER(net->last_errno),socket_errno); @@ -652,7 +652,7 @@ mc_mysql_connect(MYSQL *mysql,const char *host, const char *user, if (!net->vio || my_net_init(net, net->vio)) { vio_delete(net->vio); - net->vio = 0; // safety + net->vio = 0; net->last_errno=CR_OUT_OF_MEMORY; strmov(net->last_error,ER(net->last_errno)); goto error; @@ -661,6 +661,13 @@ mc_mysql_connect(MYSQL *mysql,const char *host, const char *user, net->read_timeout=slave_net_timeout; /* Get version info */ mysql->protocol_version= PROTOCOL_VERSION; /* Assume this */ + if (mysql->options.connect_timeout && + vio_poll_read(net->vio, mysql->options.connect_timeout)) + { + net->last_errno= CR_SERVER_LOST; + strmov(net->last_error,ER(net->last_errno)); + goto error; + } if ((pkt_length=mc_net_safe_read(mysql)) == packet_error) goto error; @@ -682,8 +689,15 @@ mc_mysql_connect(MYSQL *mysql,const char *host, const char *user, mysql->thread_id=uint4korr(end+1); end+=5; strmake(mysql->scramble_buff,end,8); - if (pkt_length > (uint) (end+9 - (char*) net->read_pos)) - mysql->server_capabilities=uint2korr(end+9); + end+=9; + if (pkt_length >= (uint) (end+1 - (char*) net->read_pos)) + mysql->server_capabilities=uint2korr(end); + if (pkt_length >= (uint) (end+18 - (char*) net->read_pos)) + { + /* New protocol with 16 bytes to describe server characteristics */ + mysql->server_language=end[2]; + mysql->server_status=uint2korr(end+3); + } /* Save connection information */ if (!user) user=""; @@ -710,7 +724,7 @@ mc_mysql_connect(MYSQL *mysql,const char *host, const char *user, mysql->unix_socket=0; strmov(mysql->server_version,(char*) net->read_pos+1); mysql->port=port; - mysql->client_flag=client_flag | mysql->options.client_flag; + client_flag|=mysql->options.client_flag; DBUG_PRINT("info",("Server version = '%s' capabilites: %ld", mysql->server_version,mysql->server_capabilities)); @@ -718,6 +732,10 @@ mc_mysql_connect(MYSQL *mysql,const char *host, const char *user, client_flag|=CLIENT_CAPABILITIES; #ifdef HAVE_OPENSSL + if (mysql->options.ssl_key || mysql->options.ssl_cert || + mysql->options.ssl_ca || mysql->options.ssl_capath || + mysql->options.ssl_cipher) + mysql->options.use_ssl= 1; if (mysql->options.use_ssl) client_flag|=CLIENT_SSL; #endif /* HAVE_OPENSSL */ @@ -725,8 +743,8 @@ mc_mysql_connect(MYSQL *mysql,const char *host, const char *user, if (db) client_flag|=CLIENT_CONNECT_WITH_DB; #ifdef HAVE_COMPRESS - if (mysql->server_capabilities & CLIENT_COMPRESS && - (mysql->options.compress || client_flag & CLIENT_COMPRESS)) + if ((mysql->server_capabilities & CLIENT_COMPRESS) && + (mysql->options.compress || (client_flag & CLIENT_COMPRESS))) client_flag|=CLIENT_COMPRESS; /* We will use compression */ else #endif @@ -753,22 +771,10 @@ mc_mysql_connect(MYSQL *mysql,const char *host, const char *user, mysql->client_flag=client_flag; #ifdef HAVE_OPENSSL - if ((mysql->server_capabilities & CLIENT_SSL) && - (mysql->options.use_ssl || (client_flag & CLIENT_SSL))) - { - DBUG_PRINT("info", ("Changing IO layer to SSL")); - client_flag |= CLIENT_SSL; - } - else - { - if (client_flag & CLIENT_SSL) - { - DBUG_PRINT("info", ("Leaving IO layer intact because server doesn't support SSL")); - } - client_flag &= ~CLIENT_SSL; - } - /* Oops.. are we careful enough to not send ANY information */ - /* without encryption? */ + /* + Oops.. are we careful enough to not send ANY information without + encryption? + */ if (client_flag & CLIENT_SSL) { if (my_net_write(net,buff,(uint) (2)) || net_flush(net)) @@ -776,32 +782,33 @@ mc_mysql_connect(MYSQL *mysql,const char *host, const char *user, /* Do the SSL layering. */ DBUG_PRINT("info", ("IO layer change in progress...")); DBUG_PRINT("info", ("IO context %p",((struct st_VioSSLConnectorFd*)mysql->connector_fd)->ssl_context_)); - sslconnect((struct st_VioSSLConnectorFd*)(mysql->connector_fd),mysql->net.vio,60L); + sslconnect((struct st_VioSSLConnectorFd*)(mysql->connector_fd),mysql->net.vio, (long)(mysql->options.connect_timeout)); DBUG_PRINT("info", ("IO layer change done!")); } #endif /* HAVE_OPENSSL */ - max_allowed_packet=mysql->net.max_packet; + max_allowed_packet=mysql->net.max_packet_size; int3store(buff+2,max_allowed_packet); if (user && user[0]) strmake(buff+5,user,32); else - { - user = getenv("USER"); - if (!user) user = "mysql"; - strmov((char*) buff+5, user ); - } + { + user = getenv("USER"); + if (!user) user = "mysql"; + strmov((char*) buff+5, user ); + } DBUG_PRINT("info",("user: %s",buff+5)); end=scramble(strend(buff+5)+1, mysql->scramble_buff, passwd, (my_bool) (mysql->protocol_version == 9)); if (db) { - end=strmov(end+1,db); + end=strmake(end+1,db,NAME_LEN); mysql->db=my_strdup(db,MYF(MY_WME)); + db=0; } - if (my_net_write(net,buff,(uint) (end-buff)) || net_flush(net) || + if (my_net_write(net,buff,(ulong) (end-buff)) || net_flush(net) || mc_net_safe_read(mysql) == packet_error) goto error; if (client_flag & CLIENT_COMPRESS) /* We will use compression */ @@ -837,10 +844,12 @@ mysql_ssl_clear(MYSQL *mysql) my_free(mysql->options.ssl_cert, MYF(MY_ALLOW_ZERO_PTR)); my_free(mysql->options.ssl_ca, MYF(MY_ALLOW_ZERO_PTR)); my_free(mysql->options.ssl_capath, MYF(MY_ALLOW_ZERO_PTR)); + my_free(mysql->options.ssl_cipher, MYF(MY_ALLOW_ZERO_PTR)); mysql->options.ssl_key = 0; mysql->options.ssl_cert = 0; mysql->options.ssl_ca = 0; mysql->options.ssl_capath = 0; + mysql->options.ssl_cipher= 0; mysql->options.use_ssl = FALSE; my_free(mysql->connector_fd,MYF(MY_ALLOW_ZERO_PTR)); mysql->connector_fd = 0; diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 0172ec68836..7ac2b009d15 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -828,16 +828,6 @@ void clean_up(bool print_message) #ifdef USE_RAID end_raid(); #endif -#ifdef HAVE_OPENSSL - my_free(opt_ssl_key,MYF(MY_ALLOW_ZERO_PTR)); - my_free(opt_ssl_cert,MYF(MY_ALLOW_ZERO_PTR)); - my_free(opt_ssl_ca,MYF(MY_ALLOW_ZERO_PTR)); - my_free(opt_ssl_capath,MYF(MY_ALLOW_ZERO_PTR)); - my_free(opt_ssl_cipher,MYF(MY_ALLOW_ZERO_PTR)); - my_free((gptr) ssl_acceptor_fd, MYF(MY_ALLOW_ZERO_PTR)); - opt_ssl_key=opt_ssl_cert=opt_ssl_ca=opt_ssl_capath=0; -#endif /* HAVE_OPENSSL */ - if (defaults_argv) free_defaults(defaults_argv); my_free(charsets_list, MYF(MY_ALLOW_ZERO_PTR)); @@ -1868,13 +1858,16 @@ int main(int argc, char **argv) charsets_list = list_charsets(MYF(MY_COMPILED_SETS|MY_CONFIG_SETS)); #ifdef HAVE_OPENSSL + if (opt_ssl_key || opt_ssl_cert || opt_ssl_ca || opt_ssl_capath || + opt_ssl_cipher) + opt_use_ssl= 1; if (opt_use_ssl) { /* having ssl_acceptor_fd != 0 signals the use of SSL */ ssl_acceptor_fd= new_VioSSLAcceptorFd(opt_ssl_key, opt_ssl_cert, opt_ssl_ca, opt_ssl_capath, opt_ssl_cipher); - DBUG_PRINT("info",("ssl_acceptor_fd: %p", ssl_acceptor_fd)); + DBUG_PRINT("info",("ssl_acceptor_fd: %lx", (long) ssl_acceptor_fd)); if (!ssl_acceptor_fd) opt_use_ssl = 0; } @@ -4237,14 +4230,6 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), strmake(mysql_charsets_dir, argument, sizeof(mysql_charsets_dir)-1); charsets_dir = mysql_charsets_dir; break; -#ifdef HAVE_OPENSSL -#include "sslopt-case.h" -#endif - case OPT_DES_KEY_FILE: -#ifdef HAVE_OPENSSL - des_key_file=argument; -#endif - break; case OPT_TX_ISOLATION: { int type; @@ -4361,7 +4346,6 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), static void get_options(int argc,char **argv) { int ho_error; - THD *thd= current_thd; myisam_delay_key_write=1; // Allow use of this #ifndef HAVE_purify diff --git a/sql/slave.cc b/sql/slave.cc index 2bde91f3ccd..e5be443428f 100644 --- a/sql/slave.cc +++ b/sql/slave.cc @@ -959,7 +959,7 @@ err: } int fetch_master_table(THD* thd, const char* db_name, const char* table_name, - MASTER_INFO* mi, MYSQL* mysql) + MASTER_INFO* mi, MYSQL* mysql) { int error = 1; int fetch_errno = 0; diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 9374b81b45a..0cde960aa2e 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -3286,7 +3286,7 @@ option_value: { LEX *lex=Lex; lex->var_list.push_back(new set_var(lex->option_type, - find_sys_var("transaction_isolation_num"), + find_sys_var("tx_isolation"), new Item_int((int) $4))); } | CHAR_SYM SET opt_equal set_expr_or_default |