mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
8b3993bc01
Docs/Makefile.am: Removed typo Docs/internals.texi: Added documentation about filesort Docs/manual.texi: Lots of changes, including information about the password in the mysql.user table config.h.in: ***MISSING WEAVE*** heap/hp_rnext.c: Fix of reading of read-next include/config-win.h: Fix for Ia64 include/global.h: Fix for Ia64 include/my_base.h: Fix for Ia64 include/myisam.h: New repair options isam/_dynrec.c: Typo fixes isam/_search.c: Fix for Ia64 merge/rrnd.c: Fix of ORDER BY for MERGE tables myisam/ft_eval.c: Fix for Ia64 myisam/ft_parser.c: Fix for Ia64 myisam/ft_static.c: Portability fixes myisam/mi_check.c: Fix for Ia64 + delay key creation myisam/mi_locking.c: Portability fixes myisam/myisamdef.h: Fixes for automatic table repair myisam/myisampack.c: Version number increment myisammrg/myrg_rrnd.c: Fix of ORDER BY for mymerge tables mysql.proj: Updated mysys/charset.c: Fix for Ia64 mysys/mf_casecnv.c: Fix for Ia64 mysys/mf_pack.c: Fix for Ia64 mysys/mf_path.c: Fix for Ia64 mysys/mf_wfile.c: Fix for Ia64 mysys/my_alloc.c: Fix for Ia64 mysys/my_lib.c: Fix for Ia64 mysys/my_lread.c: Fix for Ia64 mysys/my_lwrite.c: Fix for Ia64 mysys/my_winthread.c: Fix for Ia64 mysys/string.c: Fix for Ia64 mysys/thr_alarm.c: Fix for Ia64 mysys/thr_rwlock.c: Fix of scheduler bug for systems without rw_locks regex/regcomp.c: Fix for Ia64 regex/regex.h: Fix for Ia64 regex/regex2.h: Fix for Ia64 scripts/mysqlhotcopy.sh: Explicit version number (because of bitkeeper) sql-bench/bench-init.pl.sh: New help message sql-bench/server-cfg.sh: Updates for postgreSQL 7.0 sql/ChangeLog: Changelog sql/field.cc: Fix of datetime function handling sql/filesort.cc: More comments sql/gen_lex_hash.cc: More options sql/ha_berkeley.cc: Fix for part key reading sql/ha_berkeley.h: Indentation sql/ha_myisam.cc: Fix for delayed key creation sql/ha_myisam.h: Fix for delayed key creation sql/handler.h: Fix for delayed key creation sql/item_func.cc: Fix of crash when using constant expression with UDF functions in WHERE sql/item_timefunc.cc: Fix of datetime function handling sql/mini_client.cc: Portability fix sql/mysql_priv.h: Optimization of select initialization sql/mysqld.cc: Portability fixes, thread cache and min argument for connect_timeout sql/sql_load.cc: Delayed key handling sql/sql_parse.cc: Portability fixes and select initialization optimization sql/sql_select.cc: Small optimization + more comments sql/sql_table.cc: Fix default value adding to blob with alter table + delayed index creation sql/sql_yacc.yy: Optimized select initialization sql/structs.h: Fix for part key read strings/ctype-sjis.c: Fix for Ia64 strings/ctype-tis620.c: Fix for Ia64 strings/t_ctype.h: bk fix support-files/mysql.spec.sh: Added comment vio/viotest-ssl.cc: bk fix vio/viotest-sslconnect.cc: bk fix vio/viotest.cc: bk fix BitKeeper/etc/logging_ok: Logging to logging@openlogging.org accepted
104 lines
2.3 KiB
C++
104 lines
2.3 KiB
C++
#include "all.h"
|
|
|
|
#include <sys/types.h>
|
|
#include <sys/socket.h>
|
|
#include <stdio.h>
|
|
#include <unistd.h>
|
|
|
|
|
|
void
|
|
fatal_error( const char* r)
|
|
{
|
|
perror(r);
|
|
exit(0);
|
|
}
|
|
|
|
void
|
|
print_usage()
|
|
{
|
|
printf("viossltest: testing SSL virtual IO. Usage:\n");
|
|
printf("viossltest server-key server-cert client-key client-cert [CAfile] [CApath]\n");
|
|
}
|
|
|
|
int
|
|
main( int argc,
|
|
char** argv)
|
|
{
|
|
char* server_key = 0;
|
|
char* server_cert = 0;
|
|
char* client_key = 0;
|
|
char* client_cert = 0;
|
|
char* ca_file = 0;
|
|
char* ca_path = 0;
|
|
int sv[2];
|
|
|
|
if (argc<5)
|
|
{
|
|
print_usage();
|
|
return 1;
|
|
}
|
|
|
|
if (socketpair(PF_UNIX, SOCK_STREAM, IPPROTO_IP, sv)==-1)
|
|
fatal_error("socketpair");
|
|
|
|
server_key = argv[1];
|
|
server_cert = argv[2];
|
|
client_key = argv[3];
|
|
client_cert = argv[4];
|
|
if (argc>5)
|
|
ca_file = argv[5];
|
|
if (argc>6)
|
|
ca_path = argv[6];
|
|
printf("Server key/cert : %s/%s\n", server_key, server_cert);
|
|
printf("Client key/cert : %s/%s\n", client_key, client_cert);
|
|
if (ca_file!=0)
|
|
printf("CAfile : %s\n", ca_file);
|
|
if (ca_path!=0)
|
|
printf("CApath : %s\n", ca_path);
|
|
|
|
VIO_NS::VioSSLAcceptorFd* ssl_acceptor = new VIO_NS::VioSSLAcceptorFd(server_key, server_cert, ca_file, ca_path);
|
|
VIO_NS::VioSSLConnectorFd* ssl_connector = new VIO_NS::VioSSLConnectorFd(client_key, client_cert, ca_file, ca_path);
|
|
|
|
printf("Socketpair: %d , %d\n", sv[0], sv[1]);
|
|
|
|
VIO_NS::VioSSL* client_vio = ssl_connector->connect(sv[0]);
|
|
VIO_NS::VioSSL* server_vio = ssl_acceptor->accept(sv[1]);
|
|
|
|
|
|
int child_pid = fork();
|
|
if (child_pid==-1) {
|
|
delete ssl_acceptor;
|
|
delete ssl_connector;
|
|
fatal_error("fork");
|
|
}
|
|
if (child_pid==0) {
|
|
//child, therefore, client
|
|
char xbuf[100];
|
|
int r = client_vio->read(xbuf, sizeof(xbuf));
|
|
if (r<=0) {
|
|
delete ssl_acceptor;
|
|
delete ssl_connector;
|
|
fatal_error("client:SSL_read");
|
|
}
|
|
printf("*** client cipher %s\n",client_vio->cipher_description());
|
|
xbuf[r] = 0;
|
|
printf("client:got %s\n", xbuf);
|
|
delete client_vio;
|
|
delete ssl_acceptor;
|
|
delete ssl_connector;
|
|
sleep(1);
|
|
} else {
|
|
const char* s = "Huhuhuh";
|
|
int r = server_vio->write((void *)s, strlen(s));
|
|
if (r<=0) {
|
|
delete ssl_acceptor;
|
|
delete ssl_connector;
|
|
fatal_error("server:SSL_write");
|
|
}
|
|
printf("*** server cipher %s\n",server_vio->cipher_description());
|
|
delete server_vio;
|
|
delete ssl_acceptor;
|
|
delete ssl_connector;
|
|
sleep(1);
|
|
}
|
|
}
|