267
267
!(str=getenv("LOGIN")))
268
268
str="UNKNOWN_USER";
270
(void) strmake(name,str,USERNAME_LENGTH);
270
strncpy(name,str,USERNAME_LENGTH);
271
271
#elif HAVE_CUSERID
272
272
(void) cuserid(name);
274
strmov(name,"UNKNOWN_USER");
274
strcpy(name,"UNKNOWN_USER");
297
297
net= &drizzle->net;
298
298
net->last_errno= errcode;
299
strmov(net->last_error, ER(errcode));
300
strmov(net->sqlstate, sqlstate);
299
strcpy(net->last_error, ER(errcode));
300
strcpy(net->sqlstate, sqlstate);
304
304
drizzle_server_last_errno= errcode;
305
strmov(drizzle_server_last_error, ER(errcode));
305
strcpy(drizzle_server_last_error, ER(errcode));
398
398
(unknown error sql state).
401
strmov(net->sqlstate, unknown_sqlstate);
401
strcpy(net->sqlstate, unknown_sqlstate);
404
(void) strmake(net->last_error,(char*) pos,
405
min((uint) len,(uint) sizeof(net->last_error)-1));
404
strncpy(net->last_error,(char*) pos, min((uint) len,
405
(uint32_t) sizeof(net->last_error)-1));
408
408
set_drizzle_error(drizzle, CR_UNKNOWN_ERROR, unknown_sqlstate);
754
case 26: /* shared_memory_base_name */
756
if (options->shared_memory_base_name != def_shared_memory_base_name)
757
my_free(options->shared_memory_base_name,MYF(MY_ALLOW_ZERO_PTR));
758
options->shared_memory_base_name=my_strdup(opt_arg,MYF(MY_WME));
761
752
case 27: /* multi-results */
762
753
options->client_flag|= CLIENT_MULTI_RESULTS;
1390
1369
Part 0: Grab a socket and connect it to the server
1392
#if defined(HAVE_SMEM)
1393
if ((!drizzle->options.protocol ||
1394
drizzle->options.protocol == DRIZZLE_PROTOCOL_MEMORY) &&
1395
(!host || !strcmp(host,LOCAL_HOST)))
1397
if ((create_shared_memory(drizzle,net, drizzle->options.connect_timeout)) ==
1398
INVALID_HANDLE_VALUE)
1400
if (drizzle->options.protocol == DRIZZLE_PROTOCOL_MEMORY)
1404
Try also with PIPE or TCP/IP. Clear the error from
1405
create_shared_memory().
1408
net_clear_error(net);
1412
drizzle->options.protocol=DRIZZLE_PROTOCOL_MEMORY;
1414
host=drizzle->options.shared_memory_base_name;
1415
snprintf(host_info=buff, sizeof(buff)-1,
1416
ER(CR_SHARED_MEMORY_CONNECTION), host);
1419
#endif /* HAVE_SMEM */
1421
(!drizzle->options.protocol ||
1422
drizzle->options.protocol == DRIZZLE_PROTOCOL_SOCKET) &&
1423
(unix_socket || drizzle_unix_port) &&
1424
(!host || !strcmp(host,LOCAL_HOST)))
1426
my_socket sock= socket(AF_UNIX, SOCK_STREAM, 0);
1427
if (sock == SOCKET_ERROR)
1429
set_drizzle_extended_error(drizzle, CR_SOCKET_CREATE_ERROR,
1431
ER(CR_SOCKET_CREATE_ERROR),
1436
net->vio= vio_new(sock, VIO_TYPE_SOCKET,
1437
VIO_LOCALHOST | VIO_BUFFERED_READ);
1440
set_drizzle_error(drizzle, CR_CONN_UNKNOW_PROTOCOL, unknown_sqlstate);
1447
unix_socket= drizzle_unix_port;
1448
host_info= (char*) ER(CR_LOCALHOST_CONNECTION);
1450
memset((char*) &UNIXaddr, 0, sizeof(UNIXaddr));
1451
UNIXaddr.sun_family= AF_UNIX;
1452
strmake(UNIXaddr.sun_path, unix_socket, sizeof(UNIXaddr.sun_path)-1);
1454
if (my_connect(sock, (struct sockaddr *) &UNIXaddr, sizeof(UNIXaddr),
1455
drizzle->options.connect_timeout))
1457
set_drizzle_extended_error(drizzle, CR_CONNECTION_ERROR,
1459
ER(CR_CONNECTION_ERROR),
1460
unix_socket, socket_errno);
1461
vio_delete(net->vio);
1465
drizzle->options.protocol=DRIZZLE_PROTOCOL_SOCKET;
1467
1371
if (!net->vio &&
1468
1372
(!drizzle->options.protocol ||
1469
1373
drizzle->options.protocol == DRIZZLE_PROTOCOL_TCP))
1603
1507
Scramble is split into two parts because old clients does not understand
1604
1508
long scrambles; here goes the first part.
1606
strmake(drizzle->scramble, end, SCRAMBLE_LENGTH_323);
1510
strncpy(drizzle->scramble, end, SCRAMBLE_LENGTH_323);
1607
1511
end+= SCRAMBLE_LENGTH_323+1;
1609
1513
if (pkt_length >= (uint) (end+1 - (char*) net->read_pos))
1618
1522
if (pkt_length >= (uint) (end + SCRAMBLE_LENGTH - SCRAMBLE_LENGTH_323 + 1 -
1619
1523
(char *) net->read_pos))
1620
strmake(drizzle->scramble+SCRAMBLE_LENGTH_323, end,
1524
strncpy(drizzle->scramble+SCRAMBLE_LENGTH_323, end,
1621
1525
SCRAMBLE_LENGTH-SCRAMBLE_LENGTH_323);
1623
1527
drizzle->server_capabilities&= ~CLIENT_SECURE_CONNECTION;
1647
1551
set_drizzle_error(drizzle, CR_OUT_OF_MEMORY, unknown_sqlstate);
1650
strmov(drizzle->host_info,host_info);
1651
strmov(drizzle->host,host);
1554
strcpy(drizzle->host_info,host_info);
1555
strcpy(drizzle->host,host);
1652
1556
if (unix_socket)
1653
strmov(drizzle->unix_socket,unix_socket);
1557
strcpy(drizzle->unix_socket,unix_socket);
1655
1559
drizzle->unix_socket=0;
1656
strmov(drizzle->server_version,(char*) net->read_pos+1);
1560
strcpy(drizzle->server_version,(char*) net->read_pos+1);
1657
1561
drizzle->port=port;
1694
1598
/* This needs to be changed as it's not useful with big packets */
1695
1599
if (user && user[0])
1696
strmake(end,user,USERNAME_LENGTH); /* Max user name */
1600
strncpy(end,user,USERNAME_LENGTH); /* Max user name */
1698
1602
read_user_name((char*) end);
1700
1604
/* We have to handle different version of handshake here */
1701
#ifdef _CUSTOMCONFIG_
1702
#include "_cust_libdrizzle.h"
1704
1605
end= strend(end) + 1;
1708
1609
*end++= SCRAMBLE_LENGTH;
1709
scramble(end, drizzle->scramble, passwd);
1710
1610
end+= SCRAMBLE_LENGTH;
1716
1616
/* Add database if needed */
1717
1617
if (db && (drizzle->server_capabilities & CLIENT_CONNECT_WITH_DB))
1719
end= strmake(end, db, NAME_LEN) + 1;
1619
end= strncpy(end, db, NAME_LEN) + NAME_LEN + 1;
1720
1620
drizzle->db= my_strdup(db,MYF(MY_WME));
1821
1721
drizzle->client_flag | CLIENT_REMEMBER_OPTIONS))
1823
1723
drizzle->net.last_errno= tmp_drizzle.net.last_errno;
1824
strmov(drizzle->net.last_error, tmp_drizzle.net.last_error);
1825
strmov(drizzle->net.sqlstate, tmp_drizzle.net.sqlstate);
1724
strcpy(drizzle->net.last_error, tmp_drizzle.net.last_error);
1725
strcpy(drizzle->net.sqlstate, tmp_drizzle.net.sqlstate);
1828
1728
if (drizzle_set_character_set(&tmp_drizzle, drizzle->charset->csname))
1830
1730
memset((char*) &tmp_drizzle.options, 0, sizeof(tmp_drizzle.options));
1831
1731
drizzle_close(&tmp_drizzle);
1832
1732
drizzle->net.last_errno= tmp_drizzle.net.last_errno;
1833
strmov(drizzle->net.last_error, tmp_drizzle.net.last_error);
1834
strmov(drizzle->net.sqlstate, tmp_drizzle.net.sqlstate);
1733
strcpy(drizzle->net.last_error, tmp_drizzle.net.last_error);
1734
strcpy(drizzle->net.sqlstate, tmp_drizzle.net.sqlstate);
1894
1794
delete_dynamic(init_commands);
1895
1795
my_free((char*)init_commands,MYF(MY_WME));
1898
if (drizzle->options.shared_memory_base_name != def_shared_memory_base_name)
1899
my_free(drizzle->options.shared_memory_base_name,MYF(MY_ALLOW_ZERO_PTR));
1900
#endif /* HAVE_SMEM */
1901
1797
memset((char*) &drizzle->options, 0, sizeof(drizzle->options));
2207
2103
drizzle->options.compress= 1; /* Remember for connect */
2208
2104
drizzle->options.client_flag|= CLIENT_COMPRESS;
2210
case DRIZZLE_OPT_NAMED_PIPE: /* This option is depricated */
2211
drizzle->options.protocol=DRIZZLE_PROTOCOL_PIPE; /* Force named pipe */
2213
2106
case DRIZZLE_OPT_LOCAL_INFILE: /* Allow LOAD DATA LOCAL ?*/
2214
2107
if (!arg || test(*(uint*) arg))
2215
2108
drizzle->options.client_flag|= CLIENT_LOCAL_FILES;
2238
2131
case DRIZZLE_OPT_PROTOCOL:
2239
2132
drizzle->options.protocol= *(uint*) arg;
2241
case DRIZZLE_SHARED_MEMORY_BASE_NAME:
2243
if (drizzle->options.shared_memory_base_name != def_shared_memory_base_name)
2244
my_free(drizzle->options.shared_memory_base_name,MYF(MY_ALLOW_ZERO_PTR));
2245
drizzle->options.shared_memory_base_name=my_strdup(arg,MYF(MY_WME));
2248
2134
case DRIZZLE_OPT_USE_REMOTE_CONNECTION:
2249
case DRIZZLE_OPT_USE_EMBEDDED_CONNECTION:
2250
2135
case DRIZZLE_OPT_GUESS_CONNECTION:
2251
2136
drizzle->options.methods_to_use= option;