Commit ea0380f4 authored by Michael Widenius's avatar Michael Widenius

Auto merge

parents 44d2bf54 4847e50d
...@@ -657,7 +657,9 @@ public: ...@@ -657,7 +657,9 @@ public:
} }
while ((bytes= fread(buf, 1, sizeof(buf), m_file)) > 0) while ((bytes= fread(buf, 1, sizeof(buf), m_file)) > 0)
fwrite(buf, 1, bytes, stderr); if (fwrite(buf, 1, bytes, stderr))
die("Failed to write to '%s', errno: %d",
m_file_name, errno);
if (!lines) if (!lines)
{ {
......
...@@ -10,7 +10,7 @@ AC_CANONICAL_SYSTEM ...@@ -10,7 +10,7 @@ AC_CANONICAL_SYSTEM
# #
# When changing major version number please also check switch statement # When changing major version number please also check switch statement
# in mysqlbinlog::check_master_version(). # in mysqlbinlog::check_master_version().
AM_INIT_AUTOMAKE(mysql, 5.1.42-MariaDB-rc) AM_INIT_AUTOMAKE(mysql, 5.1.42-MariaDB)
AM_CONFIG_HEADER([include/config.h:config.h.in]) AM_CONFIG_HEADER([include/config.h:config.h.in])
# Request support for automake silent-rules if available. # Request support for automake silent-rules if available.
......
...@@ -60,7 +60,7 @@ void SetErrorString(YasslError error, char* buffer) ...@@ -60,7 +60,7 @@ void SetErrorString(YasslError error, char* buffer)
using namespace TaoCrypt; using namespace TaoCrypt;
const int max = MAX_ERROR_SZ; // shorthand const int max = MAX_ERROR_SZ; // shorthand
switch (error) { switch ((int) error) {
// yaSSL proper errors // yaSSL proper errors
case range_error : case range_error :
......
...@@ -123,8 +123,8 @@ struct st_VioSSLFd ...@@ -123,8 +123,8 @@ struct st_VioSSLFd
SSL_CTX *ssl_context; SSL_CTX *ssl_context;
}; };
int sslaccept(struct st_VioSSLFd*, Vio *, long timeout); int sslaccept(struct st_VioSSLFd*, Vio *, long timeout, char *error_string);
int sslconnect(struct st_VioSSLFd*, Vio *, long timeout); int sslconnect(struct st_VioSSLFd*, Vio *, long timeout, char *error_string);
struct st_VioSSLFd struct st_VioSSLFd
*new_VioSSLConnectorFd(const char *key_file, const char *cert_file, *new_VioSSLConnectorFd(const char *key_file, const char *cert_file,
......
...@@ -413,7 +413,6 @@ sub main { ...@@ -413,7 +413,6 @@ sub main {
# Not all tests completed, failure # Not all tests completed, failure
mtr_report(); mtr_report();
mtr_report("Only ", int(@$completed), " of $num_tests completed."); mtr_report("Only ", int(@$completed), " of $num_tests completed.");
mtr_error("Not all tests completed");
} }
mtr_print_line(); mtr_print_line();
...@@ -425,6 +424,10 @@ sub main { ...@@ -425,6 +424,10 @@ sub main {
mtr_report_stats($fail, $completed, $extra_warnings); mtr_report_stats($fail, $completed, $extra_warnings);
if ( @$completed != $num_tests)
{
mtr_error("Not all tests completed");
}
exit(0); exit(0);
} }
......
...@@ -29,15 +29,15 @@ show grants for mysqltest_1@localhost; ...@@ -29,15 +29,15 @@ show grants for mysqltest_1@localhost;
Grants for mysqltest_1@localhost Grants for mysqltest_1@localhost
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost'
GRANT SELECT ON `mysqltest`.* TO 'mysqltest_1'@'localhost' GRANT SELECT ON `mysqltest`.* TO 'mysqltest_1'@'localhost'
grant USAGE on mysqltest.* to mysqltest_1@localhost require cipher "EDH-RSA-DES-CBC3-SHA" AND SUBJECT "testsubject" ISSUER "MySQL AB"; grant USAGE on mysqltest.* to mysqltest_1@localhost require cipher "EDH-RSA-DES-CBC3-SHA" AND SUBJECT "testsubject" ISSUER "Monty Program Ab";
show grants for mysqltest_1@localhost; show grants for mysqltest_1@localhost;
Grants for mysqltest_1@localhost Grants for mysqltest_1@localhost
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' REQUIRE ISSUER 'MySQL AB' SUBJECT 'testsubject' CIPHER 'EDH-RSA-DES-CBC3-SHA' GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' REQUIRE ISSUER 'Monty Program Ab' SUBJECT 'testsubject' CIPHER 'EDH-RSA-DES-CBC3-SHA'
GRANT SELECT ON `mysqltest`.* TO 'mysqltest_1'@'localhost' GRANT SELECT ON `mysqltest`.* TO 'mysqltest_1'@'localhost'
revoke all privileges on mysqltest.* from mysqltest_1@localhost; revoke all privileges on mysqltest.* from mysqltest_1@localhost;
show grants for mysqltest_1@localhost; show grants for mysqltest_1@localhost;
Grants for mysqltest_1@localhost Grants for mysqltest_1@localhost
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' REQUIRE ISSUER 'MySQL AB' SUBJECT 'testsubject' CIPHER 'EDH-RSA-DES-CBC3-SHA' GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' REQUIRE ISSUER 'Monty Program Ab' SUBJECT 'testsubject' CIPHER 'EDH-RSA-DES-CBC3-SHA'
delete from mysql.user where user='mysqltest_1'; delete from mysql.user where user='mysqltest_1';
flush privileges; flush privileges;
delete from mysql.user where user='mysqltest_1'; delete from mysql.user where user='mysqltest_1';
......
...@@ -3,8 +3,10 @@ create table t1(f1 int); ...@@ -3,8 +3,10 @@ create table t1(f1 int);
insert into t1 values (5); insert into t1 values (5);
grant select on test.* to ssl_user1@localhost require SSL; grant select on test.* to ssl_user1@localhost require SSL;
grant select on test.* to ssl_user2@localhost require cipher "DHE-RSA-AES256-SHA"; grant select on test.* to ssl_user2@localhost require cipher "DHE-RSA-AES256-SHA";
grant select on test.* to ssl_user3@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "/C=SE/ST=Uppsala/O=MySQL AB/emailAddress=abstract.mysql.developer@mysql.com"; grant select on test.* to ssl_user3@localhost require cipher
grant select on test.* to ssl_user4@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "/C=SE/ST=Uppsala/O=MySQL AB/emailAddress=abstract.mysql.developer@mysql.com" ISSUER "/C=SE/ST=Uppsala/L=Uppsala/O=MySQL AB"; "DHE-RSA-AES256-SHA" AND SUBJECT "/C=FI/ST=Tuusula/O=Monty Program Ab/emailAddress=abstract.developer@askmonty.org";
grant select on test.* to ssl_user4@localhost require cipher
"DHE-RSA-AES256-SHA" AND SUBJECT "/C=FI/ST=Tuusula/O=Monty Program Ab/emailAddress=abstract.developer@askmonty.org" ISSUER "/C=FI/ST=Tuusula/O=Monty Program Ab/emailAddress=abstract.developer@askmonty.org";
grant select on test.* to ssl_user5@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "xxx"; grant select on test.* to ssl_user5@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "xxx";
flush privileges; flush privileges;
connect(localhost,ssl_user5,,test,MASTER_PORT,MASTER_SOCKET); connect(localhost,ssl_user5,,test,MASTER_PORT,MASTER_SOCKET);
...@@ -44,9 +46,9 @@ ERROR 42000: DELETE command denied to user 'ssl_user4'@'localhost' for table 't1 ...@@ -44,9 +46,9 @@ ERROR 42000: DELETE command denied to user 'ssl_user4'@'localhost' for table 't1
drop user ssl_user1@localhost, ssl_user2@localhost, drop user ssl_user1@localhost, ssl_user2@localhost,
ssl_user3@localhost, ssl_user4@localhost, ssl_user5@localhost; ssl_user3@localhost, ssl_user4@localhost, ssl_user5@localhost;
drop table t1; drop table t1;
mysqltest: Could not open connection 'default': 2026 SSL connection error mysqltest: Could not open connection 'default': 2026 SSL error: ASN: bad other signature confirmation
mysqltest: Could not open connection 'default': 2026 SSL connection error mysqltest: Could not open connection 'default': 2026 SSL error: ASN: bad other signature confirmation
mysqltest: Could not open connection 'default': 2026 SSL connection error mysqltest: Could not open connection 'default': 2026 SSL error: ASN: bad other signature confirmation
SSL error: Unable to get private key from '' SSL error: Unable to get private key from ''
mysqltest: Could not open connection 'default': 2026 SSL connection error mysqltest: Could not open connection 'default': 2026 SSL connection error
SSL error: Unable to get certificate from '' SSL error: Unable to get certificate from ''
......
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
MIICrTCCAhagAwIBAgIJAJXpePU0UOTVMA0GCSqGSIb3DQEBBQUAMEQxCzAJBgNV MIIDIjCCAougAwIBAgIJAJhuvLP+2mGwMA0GCSqGSIb3DQEBBQUAMGoxCzAJBgNV
BAYTAlNFMRAwDgYDVQQIEwdVcHBzYWxhMRAwDgYDVQQHEwdVcHBzYWxhMREwDwYD BAYTAkZJMRAwDgYDVQQIEwdUdXVzdWxhMRkwFwYDVQQKExBNb250eSBQcm9ncmFt
VQQKEwhNeVNRTCBBQjAeFw0wOTAxMjgxMDQ5NDZaFw0xNDAxMjcxMDQ5NDZaMEQx IEFiMS4wLAYJKoZIhvcNAQkBFh9hYnN0cmFjdC5kZXZlbG9wZXJAYXNrbW9udHku
CzAJBgNVBAYTAlNFMRAwDgYDVQQIEwdVcHBzYWxhMRAwDgYDVQQHEwdVcHBzYWxh b3JnMB4XDTEwMDEyODIxNTcyNVoXDTEwMDIyNzIxNTcyNVowajELMAkGA1UEBhMC
MREwDwYDVQQKEwhNeVNRTCBBQjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA RkkxEDAOBgNVBAgTB1R1dXN1bGExGTAXBgNVBAoTEE1vbnR5IFByb2dyYW0gQWIx
4XQHAe5R1+TXC8noZtWf+d5E0v1C59FWpn9SWEUCBjE5UiIwuJvi4Y+7xWGOXLAI LjAsBgkqhkiG9w0BCQEWH2Fic3RyYWN0LmRldmVsb3BlckBhc2ttb250eS5vcmcw
/JzJx5gNXLBiTsE/zh0uX9fKlajLhxB0GN+QU0ZlpQ1BeYipEcNXeI/7cT499f6v gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMIaY4pwbst50S32xJH3bSXhPGep
XWabnTflivdCgHSWUOQ20/Lzs6kP6/e6OoZd/DPSjPECAwEAAaOBpjCBozAdBgNV 6gx1AWwZKsHTXL3VeMO6PHmC8zu5HM0zbOcrIJcXL3YVnpmE4b9OQxIiMSx1Yd+U
HQ4EFgQU8uLqVWWkmuKsnZf1RWz294wRrd8wdAYDVR0jBG0wa4AU8uLqVWWkmuKs u8/sTkxgpsEKhCbIzECIwPhppyT/JP5aSXCadEvg+PSjikv8dOVkD68wVG4CcFIX
nZf1RWz294wRrd+hSKRGMEQxCzAJBgNVBAYTAlNFMRAwDgYDVQQIEwdVcHBzYWxh MFttsPebBVzEokZZAgMBAAGjgc8wgcwwHQYDVR0OBBYEFOCKaNHFFPrju8AwzWxS
MRAwDgYDVQQHEwdVcHBzYWxhMREwDwYDVQQKEwhNeVNRTCBBQoIJAJXpePU0UOTV f96IKfRwMIGcBgNVHSMEgZQwgZGAFOCKaNHFFPrju8AwzWxSf96IKfRwoW6kbDBq
MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAMMTE5sDN+Z0ZlV7KvH3g MQswCQYDVQQGEwJGSTEQMA4GA1UECBMHVHV1c3VsYTEZMBcGA1UEChMQTW9udHkg
6+aKvql8dTpRT3hYukeQlWua0nq74WPGVw0c4e/M/vbiMwmJcCYpB9pd4+dHqzSw UHJvZ3JhbSBBYjEuMCwGCSqGSIb3DQEJARYfYWJzdHJhY3QuZGV2ZWxvcGVyQGFz
aPyoenjY6UF8n7B4quWy3SIUk2LSHeJLW+kzJn2afN9gvipFhdVh/uU2TIyLGOur a21vbnR5Lm9yZ4IJAJhuvLP+2mGwMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEF
Z/vmJX2W7hF1uqPnbfa8Lrw= BQADgYEAsmCX2/k9AInq2qhXtnkLip6cB0iOerLTNAzEijZc/aVf4wUjkL3cqhmC
kSTCwAHIOxp+ICwh6ky3xghXjoI9QnPFDVkRkzPT2tV0IoBaeQuI4e0CU2EY7L3P
XoDqp3oq1XtVcr9ZZdP68fBYUG/qcrWcXWk45ZFaBmBv3TotsGk=
-----END CERTIFICATE----- -----END CERTIFICATE-----
Certificate: Certificate:
Data: Data:
Version: 3 (0x2) Version: 3 (0x2)
Serial Number: 3 (0x3) Serial Number: 2 (0x2)
Signature Algorithm: sha1WithRSAEncryption Signature Algorithm: sha1WithRSAEncryption
Issuer: C=SE, ST=Uppsala, L=Uppsala, O=MySQL AB Issuer: C=FI, ST=Tuusula, O=Monty Program Ab/emailAddress=abstract.developer@askmonty.org
Validity Validity
Not Before: Jan 28 11:04:39 2009 GMT Not Before: Jan 28 22:01:38 2010 GMT
Not After : Jan 28 11:04:39 2010 GMT Not After : Dec 7 22:01:38 2019 GMT
Subject: C=SE, ST=Uppsala, O=MySQL AB/emailAddress=abstract.mysql.developer@mysql.com Subject: C=FI, ST=Tuusula, O=Monty Program Ab/emailAddress=abstract.developer@askmonty.org
Subject Public Key Info: Subject Public Key Info:
Public Key Algorithm: rsaEncryption Public Key Algorithm: rsaEncryption
RSA Public Key: (512 bit) RSA Public Key: (1024 bit)
Modulus (512 bit): Modulus (1024 bit):
00:e1:52:30:2c:d9:be:64:28:91:5d:7a:fd:d9:e9: 00:bd:dc:3d:f8:3c:0b:d4:d2:c0:a3:9c:34:2d:e7:
14:35:7a:d2:94:4e:91:46:e0:db:9f:6b:79:f4:4c: 11:ff:4d:43:35:17:f6:0d:91:01:92:9e:4f:4d:c0:
ac:6e:07:61:34:86:74:62:a7:a8:44:af:fa:87:87: 38:d5:62:03:55:33:db:66:a2:91:d3:f2:b6:23:34:
a8:7d:42:61:ff:ab:50:d4:7b:bf:75:fa:d5:d5:b3: 95:53:50:3d:4f:e3:0c:d7:76:fd:f6:54:64:e6:f6:
74:fb:56:1e:37 dc:70:74:7c:6b:74:41:59:b0:19:5d:62:90:3c:a7:
c8:5e:21:8f:2b:22:6b:c7:43:9b:be:79:84:60:da:
16:c9:ce:ee:fd:66:cb:54:81:e2:b5:1c:cf:f9:74:
de:38:2b:28:d4:31:33:55:d2:30:1c:a3:e4:c2:c7:
31:46:43:d5:33:3d:8a:0b:47
Exponent: 65537 (0x10001) Exponent: 65537 (0x10001)
X509v3 extensions: X509v3 extensions:
X509v3 Basic Constraints: X509v3 Basic Constraints:
CA:FALSE CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier: X509v3 Subject Key Identifier:
58:30:B5:9B:2C:05:94:06:BA:3D:3C:F0:B2:CD:1D:67:65:E3:7F:85 BE:E6:DB:19:8D:DB:72:9A:85:EE:B2:B8:5D:E7:FF:61:DF:09:08:AF
X509v3 Authority Key Identifier: X509v3 Authority Key Identifier:
keyid:F2:E2:EA:55:65:A4:9A:E2:AC:9D:97:F5:45:6C:F6:F7:8C:11:AD:DF keyid:E0:8A:68:D1:C5:14:FA:E3:BB:C0:30:CD:6C:52:7F:DE:88:29:F4:70
DirName:/C=SE/ST=Uppsala/L=Uppsala/O=MySQL AB
serial:95:E9:78:F5:34:50:E4:D5
Signature Algorithm: sha1WithRSAEncryption Signature Algorithm: sha1WithRSAEncryption
05:19:e3:13:14:fc:c5:28:bf:69:f8:00:b3:25:cb:bd:ca:9f: 41:95:6d:0a:a4:ee:af:68:cd:94:26:59:9a:18:b7:75:3c:c5:
2f:4c:b3:a8:04:11:f0:74:27:bd:82:2c:b4:49:9b:a7:59:f0: 0f:22:d3:5c:31:9b:85:a0:93:b3:f0:50:29:ba:1e:d3:5a:43:
f7:87:d1:e0:ba:99:a2:fe:4b:1d:10:6f:e4:a2:b3:cd:7f:8b: 0b:77:2d:98:87:a7:a7:39:0f:40:8d:03:d3:b3:67:43:77:bc:
68:31:46:ee:cd:9e:e2:47:e1:4c:fa:74:d1:e2:8b:cc:a0:4b: 3c:51:c2:f9:9e:7a:2d:39:c4:5c:16:d7:70:d6:74:d1:6c:e1:
a8:24:d1:a4:c3:6b:2a:c6:28:cd:41:e0:06:48:e6:cf:f2:3c: 6a:4d:fd:1f:10:af:64:3b:f4:64:e9:b2:b3:fb:c8:cd:c5:41:
ca:37:95:d7:29:64:6b:91:91:83:e7:ac:c8:0b:87:bc:da:a6: cd:99:e0:ac:83:1d:81:2c:6b:99:ba:80:02:12:72:f7:3b:bb:
aa:f1:44:43:c8:74:7b:15:26:91:2e:03:c4:71:50:6c:f8:68: 93:72:00:da:ff:d3:87:75:d2:3a:a4:ca:4d:c1:8b:c1:21:50:
dc:8c cb:57
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
MIICfzCCAeigAwIBAgIBAzANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJTRTEQ MIICxTCCAi6gAwIBAgIBAjANBgkqhkiG9w0BAQUFADBqMQswCQYDVQQGEwJGSTEQ
MA4GA1UECBMHVXBwc2FsYTEQMA4GA1UEBxMHVXBwc2FsYTERMA8GA1UEChMITXlT MA4GA1UECBMHVHV1c3VsYTEZMBcGA1UEChMQTW9udHkgUHJvZ3JhbSBBYjEuMCwG
UUwgQUIwHhcNMDkwMTI4MTEwNDM5WhcNMTAwMTI4MTEwNDM5WjBlMQswCQYDVQQG CSqGSIb3DQEJARYfYWJzdHJhY3QuZGV2ZWxvcGVyQGFza21vbnR5Lm9yZzAeFw0x
EwJTRTEQMA4GA1UECBMHVXBwc2FsYTERMA8GA1UEChMITXlTUUwgQUIxMTAvBgkq MDAxMjgyMjAxMzhaFw0xOTEyMDcyMjAxMzhaMGoxCzAJBgNVBAYTAkZJMRAwDgYD
hkiG9w0BCQEWImFic3RyYWN0Lm15c3FsLmRldmVsb3BlckBteXNxbC5jb20wXDAN VQQIEwdUdXVzdWxhMRkwFwYDVQQKExBNb250eSBQcm9ncmFtIEFiMS4wLAYJKoZI
BgkqhkiG9w0BAQEFAANLADBIAkEA4VIwLNm+ZCiRXXr92ekUNXrSlE6RRuDbn2t5 hvcNAQkBFh9hYnN0cmFjdC5kZXZlbG9wZXJAYXNrbW9udHkub3JnMIGfMA0GCSqG
9EysbgdhNIZ0YqeoRK/6h4eofUJh/6tQ1Hu/dfrV1bN0+1YeNwIDAQABo4GjMIGg SIb3DQEBAQUAA4GNADCBiQKBgQC93D34PAvU0sCjnDQt5xH/TUM1F/YNkQGSnk9N
MAkGA1UdEwQCMAAwHQYDVR0OBBYEFFgwtZssBZQGuj088LLNHWdl43+FMHQGA1Ud wDjVYgNVM9tmopHT8rYjNJVTUD1P4wzXdv32VGTm9txwdHxrdEFZsBldYpA8p8he
IwRtMGuAFPLi6lVlpJrirJ2X9UVs9veMEa3foUikRjBEMQswCQYDVQQGEwJTRTEQ IY8rImvHQ5u+eYRg2hbJzu79ZstUgeK1HM/5dN44KyjUMTNV0jAco+TCxzFGQ9Uz
MA4GA1UECBMHVXBwc2FsYTEQMA4GA1UEBxMHVXBwc2FsYTERMA8GA1UEChMITXlT PYoLRwIDAQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NM
UUwgQUKCCQCV6Xj1NFDk1TANBgkqhkiG9w0BAQUFAAOBgQAFGeMTFPzFKL9p+ACz IEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUvubbGY3bcpqF7rK4Xef/
Jcu9yp8vTLOoBBHwdCe9giy0SZunWfD3h9Hgupmi/ksdEG/korPNf4toMUbuzZ7i Yd8JCK8wHwYDVR0jBBgwFoAU4Ipo0cUU+uO7wDDNbFJ/3ogp9HAwDQYJKoZIhvcN
R+FM+nTR4ovMoEuoJNGkw2sqxijNQeAGSObP8jzKN5XXKWRrkZGD56zIC4e82qaq AQEFBQADgYEAQZVtCqTur2jNlCZZmhi3dTzFDyLTXDGbhaCTs/BQKboe01pDC3ct
8URDyHR7FSaRLgPEcVBs+GjcjA== mIenpzkPQI0D07NnQ3e8PFHC+Z56LTnEXBbXcNZ00Wzhak39HxCvZDv0ZOmys/vI
zcVBzZngrIMdgSxrmbqAAhJy9zu7k3IA2v/Th3XSOqTKTcGLwSFQy1c=
-----END CERTIFICATE----- -----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY----- -----BEGIN RSA PRIVATE KEY-----
MIIBOQIBAAJBAOFSMCzZvmQokV16/dnpFDV60pROkUbg259refRMrG4HYTSGdGKn MIICXgIBAAKBgQC93D34PAvU0sCjnDQt5xH/TUM1F/YNkQGSnk9NwDjVYgNVM9tm
qESv+oeHqH1CYf+rUNR7v3X61dWzdPtWHjcCAwEAAQJAXYooM8ZlcuEgj+VKU1ee opHT8rYjNJVTUD1P4wzXdv32VGTm9txwdHxrdEFZsBldYpA8p8heIY8rImvHQ5u+
qyEFIMqJJxqcMk+E/nWCM96WxCP3zHNSrqNfSpI3ld7QzMwhdRz+gFLxT2gGNpIw eYRg2hbJzu79ZstUgeK1HM/5dN44KyjUMTNV0jAco+TCxzFGQ9UzPYoLRwIDAQAB
MQIhAPxzM/lDihe67X3ADYtDl9ZjA8Pm430x9sXlcxI17tCZAiEA5H1SyFl4mUee AoGBAJa2lprPT7UJ99Ho1aL6ota/RnKHKtNqII17DgjyZis9OtgP6kJ3GrvdF6iq
9VnfSC2XGW7lwz72ZygfVX+b7tLWF08CIEh40gzW5MfXM+KLxdea+fXjyursV5ZT vT79my4nVrJTyxYXuGF/5U1/qqNjuPPBE1Xbu1ubQlFv8CT0kKYynQ7Z3ls8fAHC
R6KcMiKiNQLRAiAcmHqlzFzFgisotai2Fc6VRkXHG7gmzOSvBJt1VjmpDQIge6jf B3VJXnUVlG+GHtUEFFG4FQVX1fn/Sga67ioJ6ivAiBlHKaPBAkEA5f2ToWlj4u9O
2N7whTdvC4ferB+zUlgWQdyvx1c3T4gnt6PYdaY= KgfRkN54wdIp4yu2c40pbhMfKGjGGsBAHk92+qSBpzEmxLcI6Ay+4/QysSR4jYmK
jCJuxiTu1QJBANNU3Hx8Il2SF/2BqGLcIh2SHxzKQIT5wAyD2jb+P2cHvbk6pKGR
VTmw5bibxXmYMS6J/L2zUF2xtFe+Svwz96sCQEnKYSqBqOWvyBFeLtPfPTlal8vm
Q4SxfuBtTCrn6t+8XRYcgt0KGPsunvSwkS/6nuh+eiExxWgMACLUDVyPjv0CQQC4
sJJc7LOv6Oy0bWr2swHRrBEqvQsz63zOszCzHPHWHirNxZV5aiT8XT/2XZRwlvRs
gsVyGFLk/1fn0vN/g/8vAkEAxUdzUKvC1ZwjzGhgcz2bQU0tEZN4C9jBCiwOI2ud
BpAsPG0xAGGL2+hz0B0n88XiTHobiTZ1bg4Z41i4pXx2ZA==
-----END RSA PRIVATE KEY----- -----END RSA PRIVATE KEY-----
...@@ -3,53 +3,59 @@ Certificate: ...@@ -3,53 +3,59 @@ Certificate:
Version: 3 (0x2) Version: 3 (0x2)
Serial Number: 1 (0x1) Serial Number: 1 (0x1)
Signature Algorithm: sha1WithRSAEncryption Signature Algorithm: sha1WithRSAEncryption
Issuer: C=SE, ST=Uppsala, L=Uppsala, O=MySQL AB Issuer: C=FI, ST=Tuusula, O=Monty Program Ab/emailAddress=abstract.developer@askmonty.org
Validity Validity
Not Before: Jan 28 10:55:13 2009 GMT Not Before: Jan 28 21:59:14 2010 GMT
Not After : Jan 28 10:55:13 2010 GMT Not After : Dec 7 21:59:14 2019 GMT
Subject: C=SE, ST=Uppsala, O=MySQL AB, CN=localhost/emailAddress=abstract.mysql.developer@mysql.com Subject: C=FI, ST=Tuusula, O=Monty Program Ab, CN=localhost/emailAddress=abstract.developer@askmonty.org
Subject Public Key Info: Subject Public Key Info:
Public Key Algorithm: rsaEncryption Public Key Algorithm: rsaEncryption
RSA Public Key: (512 bit) RSA Public Key: (1024 bit)
Modulus (512 bit): Modulus (1024 bit):
00:b6:8f:e5:b7:b4:86:83:13:8a:f9:bf:63:cb:64: 00:cc:79:74:2a:14:7e:77:06:b0:ec:1b:b6:da:70:
2d:b9:51:d1:de:ab:7b:45:1f:aa:b5:66:73:13:f9: 4c:4f:0e:94:04:8a:e7:69:f4:4c:9c:67:22:41:56:
a6:07:d5:ba:7c:fa:92:bd:37:e2:ad:87:db:3e:b6: 3a:96:53:9e:95:9d:17:55:80:41:c0:13:d6:94:0f:
6a:12:64:f8:ee:17:e3:15:06:2f:a8:82:68:bf:57: cd:2c:51:fe:a4:6e:f2:74:d8:5d:3b:3a:80:e3:85:
8d:c3:04:98:27 5b:a5:bc:7d:5c:25:55:e5:40:77:fe:f3:cb:5b:cd:
da:a5:f4:36:64:30:a2:a0:7f:93:b3:c4:56:75:2a:
c0:f7:65:2a:d7:e6:ff:88:25:03:e0:b4:40:2e:74:
4c:cb:46:95:73:cb:25:5c:87:0e:ec:0f:5a:19:c2:
b6:dc:9e:e8:f0:30:b1:9c:99
Exponent: 65537 (0x10001) Exponent: 65537 (0x10001)
X509v3 extensions: X509v3 extensions:
X509v3 Basic Constraints: X509v3 Basic Constraints:
CA:FALSE CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier: X509v3 Subject Key Identifier:
D9:9A:B8:5F:22:EA:04:10:C8:25:7D:82:57:E6:2E:FD:19:29:E7:DA 6D:13:3B:40:52:3C:AF:18:EA:33:D1:B7:56:21:1B:05:FE:0B:9E:38
X509v3 Authority Key Identifier: X509v3 Authority Key Identifier:
keyid:F2:E2:EA:55:65:A4:9A:E2:AC:9D:97:F5:45:6C:F6:F7:8C:11:AD:DF keyid:E0:8A:68:D1:C5:14:FA:E3:BB:C0:30:CD:6C:52:7F:DE:88:29:F4:70
DirName:/C=SE/ST=Uppsala/L=Uppsala/O=MySQL AB
serial:95:E9:78:F5:34:50:E4:D5
Signature Algorithm: sha1WithRSAEncryption Signature Algorithm: sha1WithRSAEncryption
54:07:2d:21:0b:a5:af:3b:58:23:32:5e:56:7f:ab:58:63:48: 97:db:65:23:7f:f1:15:3c:1e:83:ac:0e:0a:50:a0:0c:22:b8:
91:aa:38:90:89:16:f9:cc:bf:a4:0e:78:2b:9f:c5:1b:58:a6: 45:d4:ca:21:05:47:3b:3d:03:b5:6c:4b:8d:bb:5f:57:c3:c7:
e6:08:8f:2e:ae:97:03:21:9b:f1:cd:c0:26:8f:1d:d7:28:27: 4e:71:23:cf:33:a3:7f:a0:3d:bd:58:75:b8:37:22:16:2f:e9:
a0:8e:81:09:1b:1c:0f:c9:a5:41:3a:2d:44:3f:9c:fa:87:ff: ed:ae:9b:94:29:81:6e:34:79:cf:41:bd:3d:8d:17:d7:22:1c:
c8:4c:2b:44:f7:1b:c1:3e:4f:01:7f:e9:26:cc:9f:1c:06:b5: 1b:58:c7:0f:79:13:56:1d:e8:d8:4e:e5:07:3f:79:1b:dd:c4:
0b:27:d1:10:90:be:93:0c:9c:e7:b0:d1:ea:27:99:4e:06:14: 06:9b:c5:b6:02:34:43:c5:bf:e5:87:ad:f1:c1:8a:f2:be:c2:
0c:7a:e9:c1:52:c5:33:68:bc:61:0d:db:81:3b:57:48:57:bf: 00:1d:d4:27:1f:87:c8:80:31:ec:6e:97:95:b4:84:40:d1:73:
42:9a 42:71
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
MIICkzCCAfygAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJTRTEQ MIIC2TCCAkKgAwIBAgIBATANBgkqhkiG9w0BAQUFADBqMQswCQYDVQQGEwJGSTEQ
MA4GA1UECBMHVXBwc2FsYTEQMA4GA1UEBxMHVXBwc2FsYTERMA8GA1UEChMITXlT MA4GA1UECBMHVHV1c3VsYTEZMBcGA1UEChMQTW9udHkgUHJvZ3JhbSBBYjEuMCwG
UUwgQUIwHhcNMDkwMTI4MTA1NTEzWhcNMTAwMTI4MTA1NTEzWjB5MQswCQYDVQQG CSqGSIb3DQEJARYfYWJzdHJhY3QuZGV2ZWxvcGVyQGFza21vbnR5Lm9yZzAeFw0x
EwJTRTEQMA4GA1UECBMHVXBwc2FsYTERMA8GA1UEChMITXlTUUwgQUIxEjAQBgNV MDAxMjgyMTU5MTRaFw0xOTEyMDcyMTU5MTRaMH4xCzAJBgNVBAYTAkZJMRAwDgYD
BAMTCWxvY2FsaG9zdDExMC8GCSqGSIb3DQEJARYiYWJzdHJhY3QubXlzcWwuZGV2 VQQIEwdUdXVzdWxhMRkwFwYDVQQKExBNb250eSBQcm9ncmFtIEFiMRIwEAYDVQQD
ZWxvcGVyQG15c3FsLmNvbTBcMA0GCSqGSIb3DQEBAQUAA0sAMEgCQQC2j+W3tIaD Ewlsb2NhbGhvc3QxLjAsBgkqhkiG9w0BCQEWH2Fic3RyYWN0LmRldmVsb3BlckBh
E4r5v2PLZC25UdHeq3tFH6q1ZnMT+aYH1bp8+pK9N+Kth9s+tmoSZPjuF+MVBi+o c2ttb250eS5vcmcwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMx5dCoUfncG
gmi/V43DBJgnAgMBAAGjgaMwgaAwCQYDVR0TBAIwADAdBgNVHQ4EFgQU2Zq4XyLq sOwbttpwTE8OlASK52n0TJxnIkFWOpZTnpWdF1WAQcAT1pQPzSxR/qRu8nTYXTs6
BBDIJX2CV+Yu/Rkp59owdAYDVR0jBG0wa4AU8uLqVWWkmuKsnZf1RWz294wRrd+h gOOFW6W8fVwlVeVAd/7zy1vN2qX0NmQwoqB/k7PEVnUqwPdlKtfm/4glA+C0QC50
SKRGMEQxCzAJBgNVBAYTAlNFMRAwDgYDVQQIEwdVcHBzYWxhMRAwDgYDVQQHEwdV TMtGlXPLJVyHDuwPWhnCttye6PAwsZyZAgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJ
cHBzYWxhMREwDwYDVQQKEwhNeVNRTCBBQoIJAJXpePU0UOTVMA0GCSqGSIb3DQEB YIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1Ud
BQUAA4GBAFQHLSELpa87WCMyXlZ/q1hjSJGqOJCJFvnMv6QOeCufxRtYpuYIjy6u DgQWBBRtEztAUjyvGOoz0bdWIRsF/gueODAfBgNVHSMEGDAWgBTgimjRxRT647vA
lwMhm/HNwCaPHdcoJ6COgQkbHA/JpUE6LUQ/nPqH/8hMK0T3G8E+TwF/6SbMnxwG MM1sUn/eiCn0cDANBgkqhkiG9w0BAQUFAAOBgQCX22Ujf/EVPB6DrA4KUKAMIrhF
tQsn0RCQvpMMnOew0eonmU4GFAx66cFSxTNovGEN24E7V0hXv0Ka 1MohBUc7PQO1bEuNu19Xw8dOcSPPM6N/oD29WHW4NyIWL+ntrpuUKYFuNHnPQb09
jRfXIhwbWMcPeRNWHejYTuUHP3kb3cQGm8W2AjRDxb/lh63xwYryvsIAHdQnH4fI
gDHsbpeVtIRA0XNCcQ==
-----END CERTIFICATE----- -----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY----- -----BEGIN RSA PRIVATE KEY-----
MIIBOQIBAAJBALaP5be0hoMTivm/Y8tkLblR0d6re0UfqrVmcxP5pgfVunz6kr03 MIICXgIBAAKBgQDMeXQqFH53BrDsG7bacExPDpQEiudp9EycZyJBVjqWU56VnRdV
4q2H2z62ahJk+O4X4xUGL6iCaL9XjcMEmCcCAwEAAQJASA5VwgNb0CKHiPm0ntOk gEHAE9aUD80sUf6kbvJ02F07OoDjhVulvH1cJVXlQHf+88tbzdql9DZkMKKgf5Oz
hG+54SRX3DmafEy6gRjZIl/bZ/asSLhXUZ+CeohyrQh7BZgYWvykd8pRISL9eKsU xFZ1KsD3ZSrX5v+IJQPgtEAudEzLRpVzyyVchw7sD1oZwrbcnujwMLGcmQIDAQAB
GQIhAOXkUrOtP/EtjyqNluEqZdG+RZi/7p61JS3Ce13Myu+LAiEAy0uMlV34AJpM AoGBAMdMYkNZsmJFbVDVOobzCg3Mgc1jrmeBrOKNS8AvUe+QFXRyp3m5B102eOHb
b40FPKqlHxw8DD/Dt1iKhNVAg8+LDVUCIFjv7fbJDbW2VG63/Cj8CAwOukoP5rbL /PmD+hU/5qao9UZzoYkiRM/oRq45jrqJEYwWrX007bKK0F9hnErtC1ImM1nBFVhx
iaicVrHBKrllAiB9+MiaXeopZXNrxDS0jQFYr8Q9yt1aJVFgUkxx4Q9HKQIgZPs0 6+6cr+ShUkvtj8+wJ2d5bIccUzGCUfFR5tb5BnePTXK8IVoBAkEA7WGNxHAVKgjS
KlF3NNNWw78INaAEkyf0IEssnLMsuoCWw0DIOak= AzlpHr5fvpivA07hNVJizTwZdWGGYeETilZhkkuMRwREceeohF6ILMf0FTZdFSa/
8EeLa3icIQJBANyDKFjynKwWy5pyRSz75mVwrEi+4eTQPsCPNWLkbpbEPwqPLYWJ
2VSFkISXF7b7Od48JkQWgiB8/kXqMDEdsXkCQQCzZvj3ryWvoP7nhOoXXBWMPGR4
gZLe86bMKVGsTsp7CtnzwRj4sbQQr/7yfvvzHmaYQX4M0gtDQwfolomd7YdBAkEA
y24ETuqjNu9grf81aiaJipPDnOjcJOcovSRgr/blPxmUvv0Pld5yLNN7W5a4PgrO
fAMpmi7ZpXcqbP17sBQgoQJAWTDFKAmfHPVdDGZuCw4yceP5d+Tv7ABglZUvpPKx
kAvGN1WBASUuCQJDOIgzl6gvYX07S5p147i9mv7UBWOpvw==
-----END RSA PRIVATE KEY----- -----END RSA PRIVATE KEY-----
...@@ -35,7 +35,7 @@ revoke delete on mysqltest.* from mysqltest_1@localhost; ...@@ -35,7 +35,7 @@ revoke delete on mysqltest.* from mysqltest_1@localhost;
show grants for mysqltest_1@localhost; show grants for mysqltest_1@localhost;
grant select on mysqltest.* to mysqltest_1@localhost require NONE; grant select on mysqltest.* to mysqltest_1@localhost require NONE;
show grants for mysqltest_1@localhost; show grants for mysqltest_1@localhost;
grant USAGE on mysqltest.* to mysqltest_1@localhost require cipher "EDH-RSA-DES-CBC3-SHA" AND SUBJECT "testsubject" ISSUER "MySQL AB"; grant USAGE on mysqltest.* to mysqltest_1@localhost require cipher "EDH-RSA-DES-CBC3-SHA" AND SUBJECT "testsubject" ISSUER "Monty Program Ab";
show grants for mysqltest_1@localhost; show grants for mysqltest_1@localhost;
revoke all privileges on mysqltest.* from mysqltest_1@localhost; revoke all privileges on mysqltest.* from mysqltest_1@localhost;
show grants for mysqltest_1@localhost; show grants for mysqltest_1@localhost;
......
...@@ -15,8 +15,10 @@ insert into t1 values (5); ...@@ -15,8 +15,10 @@ insert into t1 values (5);
grant select on test.* to ssl_user1@localhost require SSL; grant select on test.* to ssl_user1@localhost require SSL;
grant select on test.* to ssl_user2@localhost require cipher "DHE-RSA-AES256-SHA"; grant select on test.* to ssl_user2@localhost require cipher "DHE-RSA-AES256-SHA";
grant select on test.* to ssl_user3@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "/C=SE/ST=Uppsala/O=MySQL AB/emailAddress=abstract.mysql.developer@mysql.com"; grant select on test.* to ssl_user3@localhost require cipher
grant select on test.* to ssl_user4@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "/C=SE/ST=Uppsala/O=MySQL AB/emailAddress=abstract.mysql.developer@mysql.com" ISSUER "/C=SE/ST=Uppsala/L=Uppsala/O=MySQL AB"; "DHE-RSA-AES256-SHA" AND SUBJECT "/C=FI/ST=Tuusula/O=Monty Program Ab/emailAddress=abstract.developer@askmonty.org";
grant select on test.* to ssl_user4@localhost require cipher
"DHE-RSA-AES256-SHA" AND SUBJECT "/C=FI/ST=Tuusula/O=Monty Program Ab/emailAddress=abstract.developer@askmonty.org" ISSUER "/C=FI/ST=Tuusula/O=Monty Program Ab/emailAddress=abstract.developer@askmonty.org";
grant select on test.* to ssl_user5@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "xxx"; grant select on test.* to ssl_user5@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "xxx";
flush privileges; flush privileges;
......
...@@ -187,6 +187,7 @@ SELECT * FROM t1; ...@@ -187,6 +187,7 @@ SELECT * FROM t1;
--echo # Switch to connection con2 --echo # Switch to connection con2
connection con2; connection con2;
--reap
SELECT * FROM t1; SELECT * FROM t1;
connection default; connection default;
......
--source include/not_embedded.inc --source include/not_embedded.inc
--source include/big_test.inc
--source include/have_query_cache.inc --source include/have_query_cache.inc
--source include/have_debug.inc --source include/have_debug.inc
......
...@@ -1863,6 +1863,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user, ...@@ -1863,6 +1863,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
uint port, const char *unix_socket,ulong client_flag) uint port, const char *unix_socket,ulong client_flag)
{ {
char buff[NAME_LEN+USERNAME_LENGTH+100]; char buff[NAME_LEN+USERNAME_LENGTH+100];
char error_string[1024];
char *end,*host_info= NULL; char *end,*host_info= NULL;
my_socket sock; my_socket sock;
in_addr_t ip_addr; in_addr_t ip_addr;
...@@ -2331,9 +2332,14 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user, ...@@ -2331,9 +2332,14 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
/* Connect to the server */ /* Connect to the server */
DBUG_PRINT("info", ("IO layer change in progress...")); DBUG_PRINT("info", ("IO layer change in progress..."));
if (sslconnect(ssl_fd, mysql->net.vio, if (sslconnect(ssl_fd, mysql->net.vio,
(long) (mysql->options.connect_timeout))) (long) (mysql->options.connect_timeout),
error_string))
{ {
set_mysql_error(mysql, CR_SSL_CONNECTION_ERROR, unknown_sqlstate); set_mysql_extended_error(mysql, CR_SSL_CONNECTION_ERROR,
unknown_sqlstate,
"SSL error: %s",
error_string[0] ? error_string :
ER(CR_SSL_CONNECTION_ERROR));
goto error; goto error;
} }
DBUG_PRINT("info", ("IO layer change done!")); DBUG_PRINT("info", ("IO layer change done!"));
......
...@@ -219,7 +219,7 @@ my_bool net_realloc(NET *net, size_t length) ...@@ -219,7 +219,7 @@ my_bool net_realloc(NET *net, size_t length)
-1 Don't know if data is ready or not -1 Don't know if data is ready or not
*/ */
#if !defined(EMBEDDED_LIBRARY) #if !defined(EMBEDDED_LIBRARY) && defined(DBUG_OFF)
static int net_data_is_ready(my_socket sd) static int net_data_is_ready(my_socket sd)
{ {
...@@ -280,13 +280,18 @@ static int net_data_is_ready(my_socket sd) ...@@ -280,13 +280,18 @@ static int net_data_is_ready(my_socket sd)
void net_clear(NET *net, my_bool clear_buffer) void net_clear(NET *net, my_bool clear_buffer)
{ {
#if !defined(EMBEDDED_LIBRARY) #if !defined(EMBEDDED_LIBRARY) && defined(DBUG_OFF)
size_t count; size_t count;
int ready; int ready;
#endif #endif
DBUG_ENTER("net_clear"); DBUG_ENTER("net_clear");
#if !defined(EMBEDDED_LIBRARY) /*
We don't do a clear in case of DBUG_OFF to catch bugs
in the protocol handling
*/
#if !defined(EMBEDDED_LIBRARY) && defined(DBUG_OFF)
if (clear_buffer) if (clear_buffer)
{ {
while ((ready= net_data_is_ready(net->vio->sd)) > 0) while ((ready= net_data_is_ready(net->vio->sd)) > 0)
......
...@@ -3803,10 +3803,11 @@ static int connect_to_master(THD* thd, MYSQL* mysql, Master_info* mi, ...@@ -3803,10 +3803,11 @@ static int connect_to_master(THD* thd, MYSQL* mysql, Master_info* mi,
suppress_warnings= 0; suppress_warnings= 0;
mi->report(ERROR_LEVEL, last_errno, mi->report(ERROR_LEVEL, last_errno,
"error %s to master '%s@%s:%d'" "error %s to master '%s@%s:%d'"
" - retry-time: %d retries: %lu", " - retry-time: %d retries: %lu message: %s",
(reconnect ? "reconnecting" : "connecting"), (reconnect ? "reconnecting" : "connecting"),
mi->user, mi->host, mi->port, mi->user, mi->host, mi->port,
mi->connect_retry, master_retry_count); mi->connect_retry, master_retry_count,
mysql_error(mysql));
} }
/* /*
By default we try forever. The reason is that failure will trigger By default we try forever. The reason is that failure will trigger
......
...@@ -377,9 +377,11 @@ TODO list: ...@@ -377,9 +377,11 @@ TODO list:
static void debug_wait_for_kill(const char *info) static void debug_wait_for_kill(const char *info)
{ {
DBUG_ENTER("debug_wait_for_kill");
const char *prev_info; const char *prev_info;
THD *thd; THD *thd;
char buff[1024];
DBUG_ENTER("debug_wait_for_kill");
thd= current_thd; thd= current_thd;
prev_info= thd->proc_info; prev_info= thd->proc_info;
thd->proc_info= info; thd->proc_info= info;
...@@ -387,8 +389,16 @@ static void debug_wait_for_kill(const char *info) ...@@ -387,8 +389,16 @@ static void debug_wait_for_kill(const char *info)
while(!thd->killed) while(!thd->killed)
my_sleep(1000); my_sleep(1000);
thd->killed= THD::NOT_KILLED; thd->killed= THD::NOT_KILLED;
/*
Remove the set debug variable, to ensure we don't get stuck on it again
This is needed as for MyISAM, invalidate_table() may be called twice
(Once from mysql_delete() and once from mi_update_status())
*/
sprintf(buff, "-d,%s", info);
DBUG_SET(buff);
sql_print_information("Exit debug_wait_for_kill"); sql_print_information("Exit debug_wait_for_kill");
thd->proc_info= prev_info; thd->proc_info= prev_info;
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
...@@ -914,15 +924,18 @@ void query_cache_insert(NET *net, const char *packet, ulong length) ...@@ -914,15 +924,18 @@ void query_cache_insert(NET *net, const char *packet, ulong length)
void query_cache_abort(NET *net) void query_cache_abort(NET *net)
{ {
THD *thd;
DBUG_ENTER("query_cache_abort"); DBUG_ENTER("query_cache_abort");
THD *thd= current_thd;
/* See the comment on double-check locking usage above. */ /* See the comment on double-check locking usage above. */
if (net->query_cache_query == 0) if (net->query_cache_query == 0)
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
if (query_cache.try_lock()) if (query_cache.try_lock())
{
net->query_cache_query = 0;
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
}
/* /*
While we were waiting another thread might have changed the status While we were waiting another thread might have changed the status
...@@ -932,6 +945,7 @@ void query_cache_abort(NET *net) ...@@ -932,6 +945,7 @@ void query_cache_abort(NET *net)
net->query_cache_query); net->query_cache_query);
if (query_block) if (query_block)
{ {
thd= current_thd;
thd_proc_info(thd, "storing result in query cache"); thd_proc_info(thd, "storing result in query cache");
DUMP(&query_cache); DUMP(&query_cache);
BLOCK_LOCK_WR(query_block); BLOCK_LOCK_WR(query_block);
...@@ -941,6 +955,7 @@ void query_cache_abort(NET *net) ...@@ -941,6 +955,7 @@ void query_cache_abort(NET *net)
DBUG_EXECUTE("check_querycache",query_cache.check_integrity(1);); DBUG_EXECUTE("check_querycache",query_cache.check_integrity(1););
} }
DBUG_ASSERT(!net->query_cache_query);
query_cache.unlock(); query_cache.unlock();
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
...@@ -970,8 +985,12 @@ void query_cache_end_of_result(THD *thd) ...@@ -970,8 +985,12 @@ void query_cache_end_of_result(THD *thd)
#endif #endif
if (query_cache.try_lock()) if (query_cache.try_lock())
{
thd->net.query_cache_query= 0;
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
}
/* thd->net.query_cache_query may have changed during resize */
query_block= ((Query_cache_block*) thd->net.query_cache_query); query_block= ((Query_cache_block*) thd->net.query_cache_query);
if (query_block) if (query_block)
{ {
...@@ -997,8 +1016,8 @@ void query_cache_end_of_result(THD *thd) ...@@ -997,8 +1016,8 @@ void query_cache_end_of_result(THD *thd)
to this function. In the release version that query should be ignored to this function. In the release version that query should be ignored
and removed from QC. and removed from QC.
*/ */
DBUG_ASSERT(0);
query_cache.free_query(query_block); query_cache.free_query(query_block);
thd->net.query_cache_query= 0;
query_cache.unlock(); query_cache.unlock();
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
......
...@@ -798,6 +798,7 @@ static int check_connection(THD *thd) ...@@ -798,6 +798,7 @@ static int check_connection(THD *thd)
DBUG_PRINT("info", ("client capabilities: %lu", thd->client_capabilities)); DBUG_PRINT("info", ("client capabilities: %lu", thd->client_capabilities));
if (thd->client_capabilities & CLIENT_SSL) if (thd->client_capabilities & CLIENT_SSL)
{ {
char error_string[1024];
/* Do the SSL layering. */ /* Do the SSL layering. */
if (!ssl_acceptor_fd) if (!ssl_acceptor_fd)
{ {
...@@ -806,7 +807,7 @@ static int check_connection(THD *thd) ...@@ -806,7 +807,7 @@ static int check_connection(THD *thd)
return 1; return 1;
} }
DBUG_PRINT("info", ("IO layer change in progress...")); DBUG_PRINT("info", ("IO layer change in progress..."));
if (sslaccept(ssl_acceptor_fd, net->vio, net->read_timeout)) if (sslaccept(ssl_acceptor_fd, net->vio, net->read_timeout, error_string))
{ {
DBUG_PRINT("error", ("Failed to accept new SSL connection")); DBUG_PRINT("error", ("Failed to accept new SSL connection"));
inc_host_errors(&thd->remote.sin_addr); inc_host_errors(&thd->remote.sin_addr);
......
...@@ -1252,12 +1252,14 @@ bool dispatch_command(enum enum_server_command command, THD *thd, ...@@ -1252,12 +1252,14 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
ha_maria::implicit_commit(thd, FALSE); ha_maria::implicit_commit(thd, FALSE);
#endif #endif
net_end_statement(thd);
query_cache_end_of_result(thd);
/* /*
Multiple queries exits, execute them individually Multiple queries exits, execute them individually
*/ */
close_thread_tables(thd); close_thread_tables(thd);
net_end_statement(thd);
query_cache_end_of_result(thd);
ulong length= (ulong)(packet_end - beginning_of_next_stmt); ulong length= (ulong)(packet_end - beginning_of_next_stmt);
log_slow_statement(thd); log_slow_statement(thd);
...@@ -1645,13 +1647,22 @@ bool dispatch_command(enum enum_server_command command, THD *thd, ...@@ -1645,13 +1647,22 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
ha_maria::implicit_commit(thd, FALSE); ha_maria::implicit_commit(thd, FALSE);
#endif #endif
net_end_statement(thd); if (!(sql_command_flags[thd->lex->sql_command] & CF_CHANGES_DATA))
query_cache_end_of_result(thd); {
/* No changes in data; We can send ok at once to the client */
net_end_statement(thd);
query_cache_end_of_result(thd);
}
thd->proc_info= "closing tables"; thd->proc_info= "closing tables";
/* Free tables */ /* Free tables */
close_thread_tables(thd); close_thread_tables(thd);
if (sql_command_flags[thd->lex->sql_command] & CF_CHANGES_DATA)
{
net_end_statement(thd);
query_cache_end_of_result(thd);
}
log_slow_statement(thd); log_slow_statement(thd);
thd_proc_info(thd, "cleaning up"); thd_proc_info(thd, "cleaning up");
......
...@@ -321,7 +321,7 @@ static int _ftb_parse_query(FTB *ftb, uchar *query, mysql_ft_size_t len, ...@@ -321,7 +321,7 @@ static int _ftb_parse_query(FTB *ftb, uchar *query, mysql_ft_size_t len,
param->mysql_add_word= ftb_query_add_word; param->mysql_add_word= ftb_query_add_word;
param->mysql_ftparam= (void *)&ftb_param; param->mysql_ftparam= (void *)&ftb_param;
param->cs= ftb->charset; param->cs= ftb->charset;
param->doc= (char*) query; param->doc= query;
param->length= len; param->length= len;
param->flags= 0; param->flags= 0;
param->mode= MYSQL_FTPARSER_FULL_BOOLEAN_INFO; param->mode= MYSQL_FTPARSER_FULL_BOOLEAN_INFO;
...@@ -702,7 +702,7 @@ static int _ftb_check_phrase(FTB *ftb, const uchar *document, ...@@ -702,7 +702,7 @@ static int _ftb_check_phrase(FTB *ftb, const uchar *document,
param->mysql_add_word= ftb_phrase_add_word; param->mysql_add_word= ftb_phrase_add_word;
param->mysql_ftparam= (void *)&ftb_param; param->mysql_ftparam= (void *)&ftb_param;
param->cs= ftb->charset; param->cs= ftb->charset;
param->doc= (char *) document; param->doc= document;
param->length= len; param->length= len;
param->flags= 0; param->flags= 0;
param->mode= MYSQL_FTPARSER_WITH_STOPWORDS; param->mode= MYSQL_FTPARSER_WITH_STOPWORDS;
...@@ -1000,7 +1000,7 @@ float ft_boolean_find_relevance(FT_INFO *ftb, uchar *record, uint length) ...@@ -1000,7 +1000,7 @@ float ft_boolean_find_relevance(FT_INFO *ftb, uchar *record, uint length)
{ {
if (!ftsi.pos) if (!ftsi.pos)
continue; continue;
param->doc= (char *)ftsi.pos; param->doc= ftsi.pos;
param->length= ftsi.len; param->length= ftsi.len;
if (unlikely(parser->parse(param))) if (unlikely(parser->parse(param)))
return 0; return 0;
......
...@@ -175,7 +175,7 @@ uchar ft_get_word(CHARSET_INFO *cs, const uchar **start, const uchar *end, ...@@ -175,7 +175,7 @@ uchar ft_get_word(CHARSET_INFO *cs, const uchar **start, const uchar *end,
if ((param->trunc=(doc<end && *doc == FTB_TRUNC))) if ((param->trunc=(doc<end && *doc == FTB_TRUNC)))
doc++; doc++;
if (((length >= ft_min_word_len && !is_stopword((char*) word->pos, if (((length >= ft_min_word_len && !is_stopword(word->pos,
word->len)) word->len))
|| param->trunc) && length < ft_max_word_len) || param->trunc) && length < ft_max_word_len)
{ {
...@@ -298,7 +298,7 @@ static int ft_parse_internal(MYSQL_FTPARSER_PARAM *param, ...@@ -298,7 +298,7 @@ static int ft_parse_internal(MYSQL_FTPARSER_PARAM *param,
DBUG_ENTER("ft_parse_internal"); DBUG_ENTER("ft_parse_internal");
while (ft_simple_get_word(wtree->custom_arg, &doc, end, &w, TRUE)) while (ft_simple_get_word(wtree->custom_arg, &doc, end, &w, TRUE))
if (param->mysql_add_word(param, (char*) w.pos, w.len, 0)) if (param->mysql_add_word(param, w.pos, w.len, 0))
DBUG_RETURN(1); DBUG_RETURN(1);
DBUG_RETURN(0); DBUG_RETURN(0);
} }
...@@ -319,7 +319,7 @@ int ft_parse(TREE *wtree, const uchar *doc, mysql_ft_size_t doclen, ...@@ -319,7 +319,7 @@ int ft_parse(TREE *wtree, const uchar *doc, mysql_ft_size_t doclen,
param->mysql_add_word= ft_add_word; param->mysql_add_word= ft_add_word;
param->mysql_ftparam= &my_param; param->mysql_ftparam= &my_param;
param->cs= wtree->custom_arg; param->cs= wtree->custom_arg;
param->doc= (char*) doc; param->doc= doc;
param->length= doclen; param->length= doclen;
param->mode= MYSQL_FTPARSER_SIMPLE_MODE; param->mode= MYSQL_FTPARSER_SIMPLE_MODE;
DBUG_RETURN(parser->parse(param)); DBUG_RETURN(parser->parse(param));
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
typedef struct st_ft_stopwords typedef struct st_ft_stopwords
{ {
const char * pos; const uchar* pos;
size_t len; size_t len;
} FT_STOPWORD; } FT_STOPWORD;
...@@ -30,15 +30,15 @@ static int FT_STOPWORD_cmp(void* cmp_arg __attribute__((unused)), ...@@ -30,15 +30,15 @@ static int FT_STOPWORD_cmp(void* cmp_arg __attribute__((unused)),
FT_STOPWORD *w1, FT_STOPWORD *w2) FT_STOPWORD *w1, FT_STOPWORD *w2)
{ {
return ha_compare_text(default_charset_info, return ha_compare_text(default_charset_info,
(uchar *)w1->pos,w1->len, w1->pos, w1->len,
(uchar *)w2->pos,w2->len,0,0); w2->pos, w2->len, 0, 0);
} }
static void FT_STOPWORD_free(FT_STOPWORD *w, TREE_FREE action, static void FT_STOPWORD_free(FT_STOPWORD *w, TREE_FREE action,
void *arg __attribute__((unused))) void *arg __attribute__((unused)))
{ {
if (action == free_free) if (action == free_free)
my_free((uchar*) w->pos, MYF(0)); my_free((void*) w->pos, MYF(0));
} }
static int ft_add_stopword(const char *w) static int ft_add_stopword(const char *w)
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
# #
integer.cpp: .*control reaches end of non-void function.*: 1288-1427 integer.cpp: .*control reaches end of non-void function.*: 1288-1427
integer.cpp: .*no return statement in function returning non-void.*: 1288-1427
DictTabInfo.cpp : .*invalid access to non-static.* DictTabInfo.cpp : .*invalid access to non-static.*
DictTabInfo.cpp : .*macro was used incorrectly.* DictTabInfo.cpp : .*macro was used incorrectly.*
DbdihMain.cpp : .*unused variable.* : 6666-7013 DbdihMain.cpp : .*unused variable.* : 6666-7013
...@@ -27,13 +28,17 @@ _flex_tmp.c: .*not enough actual parameters for macro 'yywrap'.* ...@@ -27,13 +28,17 @@ _flex_tmp.c: .*not enough actual parameters for macro 'yywrap'.*
pars0lex.l: .*conversion from 'ulint' to 'int', possible loss of data.* pars0lex.l: .*conversion from 'ulint' to 'int', possible loss of data.*
btr/btr0cur\.c: .*value computed is not used.*: 3175-3375 btr/btr0cur\.c: .*value computed is not used.*: 3175-3375
include/buf0buf\.ic: unused parameter ‘mtr’ include/buf0buf\.ic: unused parameter ‘mtr’
fil/fil0fil\.c: pointer targets in passing argument.*differ in signedness
fil/fil0fil\.c: comparison between signed and unsigned : 3100-3199 fil/fil0fil\.c: comparison between signed and unsigned : 3100-3199
fil/fil0fil\.c: unused parameter fil/fil0fil\.c: unused parameter
log/log0recv\.c: unused variable log/log0recv\.c: unused variable
os/os0file\.c: unused parameter os/os0file\.c: unused parameter
os/os0file\.c: pointer targets in assignment differ in signedness
handler/i_s\.cc: unused variable handler/i_s\.cc: unused variable
sync/sync0rw\.c: unused parameter sync/sync0rw\.c: unused parameter
sync/sync0sync\.c: unused parameter sync/sync0sync\.c: unused parameter
sync/sync0sync\.c: unused variable
ut/ut0ut\.c: ignoring return value of
# #
# bdb is not critical to keep up to date # bdb is not critical to keep up to date
...@@ -98,10 +103,15 @@ storage/maria/ma_pagecache.c: .*'info_check_pin' defined but not used ...@@ -98,10 +103,15 @@ storage/maria/ma_pagecache.c: .*'info_check_pin' defined but not used
# I think these are due to mix of C and C++. # I think these are due to mix of C and C++.
# #
storage/pbxt/ : typedef.*was ignored in this declaration storage/pbxt/ : typedef.*was ignored in this declaration
ha_pbxt\.cc : variable.*might be clobbered by.*longjmp
# #
# Yassl # Yassl
include/runtime.hpp: .*pure_error.* include/runtime.hpp: .*pure_error.*
.*/extra/yassl/taocrypt/.*: comparison with string literal
.*/extra/yassl/taocrypt/src/blowfish\.cpp: array subscript is above array bounds
.*/extra/yassl/taocrypt/src/file\.cpp: ignoring return value
.*/extra/yassl/taocrypt/src/integer\.cpp: control reaches end of non-void function
# #
# Groff warnings on OpenSUSE. # Groff warnings on OpenSUSE.
......
...@@ -258,7 +258,7 @@ void do_tests() ...@@ -258,7 +258,7 @@ void do_tests()
#define test_kill_strategy(X) \ #define test_kill_strategy(X) \
diag("kill strategy: " #X); \ diag("kill strategy: " #X); \
DBUG_EXECUTE("reset_file", \ DBUG_EXECUTE("reset_file", \
{ rewind(DBUG_FILE); ftruncate(fileno(DBUG_FILE), 0); }); \ { rewind(DBUG_FILE); (void) ftruncate(fileno(DBUG_FILE), 0); }); \
DBUG_PRINT("info", ("kill strategy: " #X)); \ DBUG_PRINT("info", ("kill strategy: " #X)); \
kill_strategy=X; \ kill_strategy=X; \
do_one_test(); do_one_test();
......
...@@ -74,8 +74,11 @@ report_errors(SSL* ssl) ...@@ -74,8 +74,11 @@ report_errors(SSL* ssl)
} }
if (ssl) if (ssl)
DBUG_PRINT("error", ("error: %s", {
ERR_error_string(SSL_get_error(ssl, l), buf))); int error= SSL_get_error(ssl, l);
DBUG_PRINT("error", ("error: %s (%d)",
ERR_error_string(error, buf), error));
}
DBUG_PRINT("info", ("socket_errno: %d", socket_errno)); DBUG_PRINT("info", ("socket_errno: %d", socket_errno));
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
...@@ -174,16 +177,17 @@ void vio_ssl_delete(Vio *vio) ...@@ -174,16 +177,17 @@ void vio_ssl_delete(Vio *vio)
static int ssl_do(struct st_VioSSLFd *ptr, Vio *vio, long timeout, static int ssl_do(struct st_VioSSLFd *ptr, Vio *vio, long timeout,
int (*connect_accept_func)(SSL*)) int (*connect_accept_func)(SSL*), char *error_string)
{ {
SSL *ssl; SSL *ssl;
my_bool unused; my_bool unused;
my_bool was_blocking; my_bool was_blocking;
DBUG_ENTER("ssl_do"); DBUG_ENTER("ssl_do");
DBUG_PRINT("enter", ("ptr: 0x%lx, sd: %d ctx: 0x%lx", DBUG_PRINT("enter", ("ptr: 0x%lx, sd: %d ctx: 0x%lx",
(long) ptr, vio->sd, (long) ptr->ssl_context)); (long) ptr, vio->sd, (long) ptr->ssl_context));
error_string[0]= 0;
/* Set socket to blocking if not already set */ /* Set socket to blocking if not already set */
vio_blocking(vio, 1, &was_blocking); vio_blocking(vio, 1, &was_blocking);
...@@ -191,6 +195,7 @@ static int ssl_do(struct st_VioSSLFd *ptr, Vio *vio, long timeout, ...@@ -191,6 +195,7 @@ static int ssl_do(struct st_VioSSLFd *ptr, Vio *vio, long timeout,
{ {
DBUG_PRINT("error", ("SSL_new failure")); DBUG_PRINT("error", ("SSL_new failure"));
report_errors(ssl); report_errors(ssl);
strmov(error_string, "SSL_new failed");
vio_blocking(vio, was_blocking, &unused); vio_blocking(vio, was_blocking, &unused);
DBUG_RETURN(1); DBUG_RETURN(1);
} }
...@@ -203,6 +208,7 @@ static int ssl_do(struct st_VioSSLFd *ptr, Vio *vio, long timeout, ...@@ -203,6 +208,7 @@ static int ssl_do(struct st_VioSSLFd *ptr, Vio *vio, long timeout,
{ {
DBUG_PRINT("error", ("SSL_connect/accept failure")); DBUG_PRINT("error", ("SSL_connect/accept failure"));
report_errors(ssl); report_errors(ssl);
ERR_error_string(SSL_get_error(ssl, 0), error_string);
SSL_free(ssl); SSL_free(ssl);
vio_blocking(vio, was_blocking, &unused); vio_blocking(vio, was_blocking, &unused);
DBUG_RETURN(1); DBUG_RETURN(1);
...@@ -250,17 +256,19 @@ static int ssl_do(struct st_VioSSLFd *ptr, Vio *vio, long timeout, ...@@ -250,17 +256,19 @@ static int ssl_do(struct st_VioSSLFd *ptr, Vio *vio, long timeout,
} }
int sslaccept(struct st_VioSSLFd *ptr, Vio *vio, long timeout) int sslaccept(struct st_VioSSLFd *ptr, Vio *vio, long timeout,
char *error_string)
{ {
DBUG_ENTER("sslaccept"); DBUG_ENTER("sslaccept");
DBUG_RETURN(ssl_do(ptr, vio, timeout, SSL_accept)); DBUG_RETURN(ssl_do(ptr, vio, timeout, SSL_accept, error_string));
} }
int sslconnect(struct st_VioSSLFd *ptr, Vio *vio, long timeout) int sslconnect(struct st_VioSSLFd *ptr, Vio *vio, long timeout,
char *error_string)
{ {
DBUG_ENTER("sslconnect"); DBUG_ENTER("sslconnect");
DBUG_RETURN(ssl_do(ptr, vio, timeout, SSL_connect)); DBUG_RETURN(ssl_do(ptr, vio, timeout, SSL_connect, error_string));
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment