mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
One should not only have to include my_net.h to work with sockets.
This wrapper noew will include all the necessary, system specific files, which makes all normal source files much easier to write and maintain. Portability fixes.
This commit is contained in:
@ -8903,7 +8903,13 @@ version 4.0;
|
|||||||
@item
|
@item
|
||||||
The old C API functions @code{mysql_drop_db}, @code{mysql_create_db} and
|
The old C API functions @code{mysql_drop_db}, @code{mysql_create_db} and
|
||||||
@code{mysql_connect} are not supported anymore, unless one compiles
|
@code{mysql_connect} are not supported anymore, unless one compiles
|
||||||
MySQL with @code{USE_OLD_FUNCTIONS}.
|
MySQL with @code{USE_OLD_FUNCTIONS}. Instead of doing this, one should
|
||||||
|
change the client to use the new 4.0 API.
|
||||||
|
@item
|
||||||
|
In the @code{MYSQL_FIELD} structure, @code{length} and @code{max_length} has
|
||||||
|
changed from @code{unsigned int} to @code{unsigned long}. This should not
|
||||||
|
cause any other problems than some warnings if you use these to
|
||||||
|
@code{printf()} type function.
|
||||||
@item
|
@item
|
||||||
You should use @code{TRUNCATE TABLE} when you want to delete all rows
|
You should use @code{TRUNCATE TABLE} when you want to delete all rows
|
||||||
from a table and you don't care of how many rows where deleted.
|
from a table and you don't care of how many rows where deleted.
|
||||||
|
@ -928,7 +928,7 @@ static void print_header(MYSQL_RES *result)
|
|||||||
putchar('|');
|
putchar('|');
|
||||||
while ((field = mysql_fetch_field(result)))
|
while ((field = mysql_fetch_field(result)))
|
||||||
{
|
{
|
||||||
printf(" %-*s|",field->max_length+1,field->name);
|
printf(" %-*s|",(int) field->max_length+1,field->name);
|
||||||
}
|
}
|
||||||
putchar('\n');
|
putchar('\n');
|
||||||
print_top(result);
|
print_top(result);
|
||||||
@ -983,11 +983,11 @@ static void print_relative_row(MYSQL_RES *result, MYSQL_ROW cur, uint row)
|
|||||||
|
|
||||||
mysql_field_seek(result, 0);
|
mysql_field_seek(result, 0);
|
||||||
field = mysql_fetch_field(result);
|
field = mysql_fetch_field(result);
|
||||||
printf("| %-*s|", field->max_length + 1, cur[0]);
|
printf("| %-*s|", (int) field->max_length + 1, cur[0]);
|
||||||
|
|
||||||
field = mysql_fetch_field(result);
|
field = mysql_fetch_field(result);
|
||||||
tmp = cur[1] ? strtoull(cur[1], NULL, 0) : (ulonglong) 0;
|
tmp = cur[1] ? strtoull(cur[1], NULL, 0) : (ulonglong) 0;
|
||||||
printf(" %-*s|\n", field->max_length + 1,
|
printf(" %-*s|\n", (int) field->max_length + 1,
|
||||||
llstr((tmp - last_values[row]), buff));
|
llstr((tmp - last_values[row]), buff));
|
||||||
last_values[row] = tmp;
|
last_values[row] = tmp;
|
||||||
}
|
}
|
||||||
|
@ -713,7 +713,7 @@ static void print_res_header(MYSQL_RES *result)
|
|||||||
putchar('|');
|
putchar('|');
|
||||||
while ((field = mysql_fetch_field(result)))
|
while ((field = mysql_fetch_field(result)))
|
||||||
{
|
{
|
||||||
printf(" %-*s|",field->max_length+1,field->name);
|
printf(" %-*s|",(int) field->max_length+1,field->name);
|
||||||
}
|
}
|
||||||
putchar('\n');
|
putchar('\n');
|
||||||
print_res_top(result);
|
print_res_top(result);
|
||||||
|
@ -20,16 +20,11 @@
|
|||||||
#define RESOLVE_VERSION "2.0"
|
#define RESOLVE_VERSION "2.0"
|
||||||
|
|
||||||
#include <my_global.h>
|
#include <my_global.h>
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#ifndef HAVE_BROKEN_NETINET_INCLUDES
|
|
||||||
#include <netinet/in.h>
|
|
||||||
#endif
|
|
||||||
#include <arpa/inet.h>
|
|
||||||
#include <netdb.h>
|
|
||||||
#include <m_ctype.h>
|
#include <m_ctype.h>
|
||||||
|
#include <my_net.h>
|
||||||
#include <my_sys.h>
|
#include <my_sys.h>
|
||||||
#include <m_string.h>
|
#include <m_string.h>
|
||||||
|
#include <netdb.h>
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
|
|
||||||
#if !defined(_AIX) && !defined(HAVE_UNIXWARE7_THREADS) && !defined(HAVE_UNIXWARE7_POSIX) && !defined(h_errno)
|
#if !defined(_AIX) && !defined(HAVE_UNIXWARE7_THREADS) && !defined(HAVE_UNIXWARE7_POSIX) && !defined(h_errno)
|
||||||
|
@ -653,6 +653,7 @@ typedef off_t os_off_t;
|
|||||||
#define socket_errno WSAGetLastError()
|
#define socket_errno WSAGetLastError()
|
||||||
#define SOCKET_EINTR WSAEINTR
|
#define SOCKET_EINTR WSAEINTR
|
||||||
#define SOCKET_EAGAIN WSAEINPROGRESS
|
#define SOCKET_EAGAIN WSAEINPROGRESS
|
||||||
|
#define SOCKET_EWOULDBLOCK WSAEINPROGRESS
|
||||||
#define SOCKET_ENFILE ENFILE
|
#define SOCKET_ENFILE ENFILE
|
||||||
#define SOCKET_EMFILE EMFILE
|
#define SOCKET_EMFILE EMFILE
|
||||||
#elif defined(OS2)
|
#elif defined(OS2)
|
||||||
|
@ -15,14 +15,20 @@
|
|||||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
||||||
MA 02111-1307, USA */
|
MA 02111-1307, USA */
|
||||||
|
|
||||||
/* thread safe version of some common functions */
|
/*
|
||||||
|
thread safe version of some common functions:
|
||||||
|
my_inet_ntoa
|
||||||
|
|
||||||
/* for thread safe my_inet_ntoa */
|
This file is also used to make handling of sockets and ioctl()
|
||||||
#ifdef __cplusplus
|
portable accross systems.
|
||||||
extern "C" {
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
#if !defined(MSDOS) && !defined(__WIN__) && !defined(__BEOS__)
|
*/
|
||||||
|
|
||||||
|
#ifndef _my_net_h
|
||||||
|
#define _my_net_h
|
||||||
|
C_MODE_START
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
#ifdef HAVE_SYS_SOCKET_H
|
#ifdef HAVE_SYS_SOCKET_H
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#endif
|
#endif
|
||||||
@ -32,10 +38,35 @@ extern "C" {
|
|||||||
#ifdef HAVE_ARPA_INET_H
|
#ifdef HAVE_ARPA_INET_H
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
#endif
|
#endif
|
||||||
#endif /* !defined(MSDOS) && !defined(__WIN__) */
|
#ifdef HAVE_POLL
|
||||||
|
#include <sys/poll.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_SYS_IOCTL_H
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(MSDOS) && !defined(__WIN__) && !defined(HAVE_BROKEN_NETINET_INCLUDES) && !defined(__BEOS__)
|
||||||
|
#include <netinet/in_systm.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <netinet/ip.h>
|
||||||
|
#if !defined(alpha_linux_port)
|
||||||
|
#include <netinet/tcp.h>
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__EMX__)
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
#define ioctlsocket(A,B,C) ioctl((A),(B),(void *)(C),sizeof(*(C)))
|
||||||
|
#undef HAVE_FCNTL
|
||||||
|
#endif /* defined(__EMX__) */
|
||||||
|
|
||||||
|
#if defined(MSDOS) || defined(__WIN__)
|
||||||
|
#define O_NONBLOCK 1 /* For emulation of fcntl() */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Thread safe or portable version of some functions */
|
||||||
|
|
||||||
void my_inet_ntoa(struct in_addr in, char *buf);
|
void my_inet_ntoa(struct in_addr in, char *buf);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
C_MODE_END
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -203,7 +203,7 @@ typedef struct st_udf_init
|
|||||||
{
|
{
|
||||||
my_bool maybe_null; /* 1 if function can return NULL */
|
my_bool maybe_null; /* 1 if function can return NULL */
|
||||||
unsigned int decimals; /* for real functions */
|
unsigned int decimals; /* for real functions */
|
||||||
unsigned int max_length; /* For string functions */
|
unsigned long max_length; /* For string functions */
|
||||||
char *ptr; /* free pointer for function data */
|
char *ptr; /* free pointer for function data */
|
||||||
my_bool const_item; /* 0 if result is independent of arguments */
|
my_bool const_item; /* 0 if result is independent of arguments */
|
||||||
} UDF_INIT;
|
} UDF_INIT;
|
||||||
|
@ -31,16 +31,16 @@
|
|||||||
#include <winsock.h>
|
#include <winsock.h>
|
||||||
#endif
|
#endif
|
||||||
#include <my_global.h>
|
#include <my_global.h>
|
||||||
#include "mysql_embed.h"
|
#include <mysql.h>
|
||||||
|
#include <mysql_embed.h>
|
||||||
#include <mysql_com.h>
|
#include <mysql_com.h>
|
||||||
#include <violite.h>
|
#include <mysqld_error.h>
|
||||||
#include <my_sys.h>
|
#include <my_sys.h>
|
||||||
#include <m_string.h>
|
#include <m_string.h>
|
||||||
#include "mysql.h"
|
#include <my_net.h>
|
||||||
#include "mysqld_error.h"
|
#include <violite.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <sys/types.h>
|
|
||||||
|
|
||||||
#ifdef MYSQL_SERVER
|
#ifdef MYSQL_SERVER
|
||||||
ulong max_allowed_packet=65536;
|
ulong max_allowed_packet=65536;
|
||||||
@ -60,20 +60,9 @@ ulong net_write_timeout= NET_WRITE_TIMEOUT;
|
|||||||
#endif
|
#endif
|
||||||
ulong net_buffer_length=8192; /* Default length. Enlarged if necessary */
|
ulong net_buffer_length=8192; /* Default length. Enlarged if necessary */
|
||||||
|
|
||||||
#if !defined(__WIN__) && !defined(MSDOS)
|
#if defined(__WIN__) || defined(MSDOS)
|
||||||
#include <sys/socket.h>
|
|
||||||
#else
|
|
||||||
#undef MYSQL_SERVER /* Win32 can't handle interrupts */
|
#undef MYSQL_SERVER /* Win32 can't handle interrupts */
|
||||||
#endif
|
#endif
|
||||||
#if !defined(MSDOS) && !defined(__WIN__) && !defined(HAVE_BROKEN_NETINET_INCLUDES) && !defined(__BEOS__)
|
|
||||||
#include <netinet/in_systm.h>
|
|
||||||
#include <netinet/in.h>
|
|
||||||
#include <netinet/ip.h>
|
|
||||||
#if !defined(alpha_linux_port)
|
|
||||||
#include <netinet/tcp.h>
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#include "mysqld_error.h"
|
|
||||||
#ifdef MYSQL_SERVER
|
#ifdef MYSQL_SERVER
|
||||||
#include "my_pthread.h"
|
#include "my_pthread.h"
|
||||||
#include "thr_alarm.h"
|
#include "thr_alarm.h"
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
#include "mysql_embed.h"
|
#include "mysql_embed.h"
|
||||||
#include "mysql.h"
|
#include "mysql.h"
|
||||||
|
|
||||||
#ifndef HAVE_VIO /* is Vio suppored by the Vio lib ? */
|
#ifndef HAVE_VIO /* is Vio enabled */
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <my_sys.h>
|
#include <my_sys.h>
|
||||||
@ -37,27 +37,6 @@
|
|||||||
#include <dbug.h>
|
#include <dbug.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
#if defined(__EMX__)
|
|
||||||
#include <sys/ioctl.h>
|
|
||||||
#define ioctlsocket(A,B,C) ioctl((A),(B),(void *)(C),sizeof(*(C)))
|
|
||||||
#undef HAVE_FCNTL
|
|
||||||
#endif /* defined(__EMX__) */
|
|
||||||
|
|
||||||
#if defined(MSDOS) || defined(__WIN__)
|
|
||||||
#ifdef __WIN__
|
|
||||||
#undef errno
|
|
||||||
#undef EINTR
|
|
||||||
#undef EAGAIN
|
|
||||||
#define errno WSAGetLastError()
|
|
||||||
#define EINTR WSAEINTR
|
|
||||||
#define EAGAIN WSAEINPROGRESS
|
|
||||||
#endif /* __WIN__ */
|
|
||||||
#define O_NONBLOCK 1 /* For emulation of fcntl() */
|
|
||||||
#endif
|
|
||||||
#ifndef EWOULDBLOCK
|
|
||||||
#define EWOULDBLOCK EAGAIN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef __WIN__
|
#ifndef __WIN__
|
||||||
#define HANDLE void *
|
#define HANDLE void *
|
||||||
#endif
|
#endif
|
||||||
@ -72,14 +51,11 @@ struct st_vio
|
|||||||
struct sockaddr_in remote; /* Remote internet address */
|
struct sockaddr_in remote; /* Remote internet address */
|
||||||
enum enum_vio_type type; /* Type of connection */
|
enum enum_vio_type type; /* Type of connection */
|
||||||
char desc[30]; /* String description */
|
char desc[30]; /* String description */
|
||||||
/* #ifdef EMBEDDED_LIBRARY */
|
|
||||||
/* void *dest_net; */
|
|
||||||
void *dest_thd;
|
void *dest_thd;
|
||||||
char *packets, **last_packet;
|
char *packets, **last_packet;
|
||||||
char *where_in_packet, *end_of_packet;
|
char *where_in_packet, *end_of_packet;
|
||||||
my_bool reading;
|
my_bool reading;
|
||||||
MEM_ROOT root;
|
MEM_ROOT root;
|
||||||
/* #endif */
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Initialize the communication buffer */
|
/* Initialize the communication buffer */
|
||||||
@ -90,7 +66,7 @@ Vio *vio_new(my_socket sd, enum enum_vio_type type, my_bool localhost)
|
|||||||
vio = (Vio *) my_malloc (sizeof(*vio),MYF(MY_WME|MY_ZEROFILL));
|
vio = (Vio *) my_malloc (sizeof(*vio),MYF(MY_WME|MY_ZEROFILL));
|
||||||
if (vio)
|
if (vio)
|
||||||
{
|
{
|
||||||
init_alloc_root(&vio->root, 8192, 1024);
|
init_alloc_root(&vio->root, 8192, 8192);
|
||||||
vio->root.min_malloc = sizeof(char *) + 4;
|
vio->root.min_malloc = sizeof(char *) + 4;
|
||||||
vio->last_packet = &vio->packets;
|
vio->last_packet = &vio->packets;
|
||||||
}
|
}
|
||||||
@ -126,7 +102,7 @@ void vio_reset(Vio *vio)
|
|||||||
|
|
||||||
int vio_errno(Vio *vio __attribute__((unused)))
|
int vio_errno(Vio *vio __attribute__((unused)))
|
||||||
{
|
{
|
||||||
return errno; /* On Win32 this mapped to WSAGetLastError() */
|
return socket_errno; /* On Win32 this mapped to WSAGetLastError() */
|
||||||
}
|
}
|
||||||
|
|
||||||
int vio_read(Vio * vio, gptr buf, int size)
|
int vio_read(Vio * vio, gptr buf, int size)
|
||||||
@ -198,8 +174,9 @@ int vio_keepalive(Vio* vio, my_bool set_keep_alive)
|
|||||||
my_bool
|
my_bool
|
||||||
vio_should_retry(Vio * vio __attribute__((unused)))
|
vio_should_retry(Vio * vio __attribute__((unused)))
|
||||||
{
|
{
|
||||||
int en = errno;
|
int en = socket_errno;
|
||||||
return en == EAGAIN || en == EINTR || en == EWOULDBLOCK;
|
return (en == SOCKET_EAGAIN || en == SOCKET_EINTR ||
|
||||||
|
en == SOCKET_EWOULDBLOCK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ drop database foo;
|
|||||||
drop database if exists foo;
|
drop database if exists foo;
|
||||||
flush tables with read lock;
|
flush tables with read lock;
|
||||||
create database foo;
|
create database foo;
|
||||||
Can't execute the query because you have a conflicting read lock
|
Got one of the listed errors
|
||||||
unlock tables;
|
unlock tables;
|
||||||
create database foo;
|
create database foo;
|
||||||
show databases;
|
show databases;
|
||||||
@ -37,7 +37,7 @@ mysql
|
|||||||
test
|
test
|
||||||
flush tables with read lock;
|
flush tables with read lock;
|
||||||
drop database foo;
|
drop database foo;
|
||||||
Can't execute the query because you have a conflicting read lock
|
Got one of the listed errors
|
||||||
unlock tables;
|
unlock tables;
|
||||||
drop database foo;
|
drop database foo;
|
||||||
show databases;
|
show databases;
|
||||||
|
@ -13,7 +13,7 @@ Unknown table 'not_existing_database' in field list
|
|||||||
select count(not_existing_database.t1.a) from t1;
|
select count(not_existing_database.t1.a) from t1;
|
||||||
Unknown table 'not_existing_database.t1' in field list
|
Unknown table 'not_existing_database.t1' in field list
|
||||||
select count(not_existing_database.t1.a) from not_existing_database.t1;
|
select count(not_existing_database.t1.a) from not_existing_database.t1;
|
||||||
Table 'not_existing_database.t1' doesn't exist
|
Got one of the listed errors
|
||||||
select 1 from t1 order by 2;
|
select 1 from t1 order by 2;
|
||||||
Unknown column '2' in 'order clause'
|
Unknown column '2' in 'order clause'
|
||||||
select 1 from t1 group by 2;
|
select 1 from t1 group by 2;
|
||||||
|
@ -48,7 +48,7 @@ id parent_id level
|
|||||||
15 102 2
|
15 102 2
|
||||||
update t1 set id=id+1000;
|
update t1 set id=id+1000;
|
||||||
update t1 set id=1024 where id=1009;
|
update t1 set id=1024 where id=1009;
|
||||||
Duplicate entry '1024' for key 1
|
Got one of the listed errors
|
||||||
select * from t1;
|
select * from t1;
|
||||||
id parent_id level
|
id parent_id level
|
||||||
1001 100 0
|
1001 100 0
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
drop database AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA;
|
drop database AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA;
|
||||||
Incorrect database name 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
Got one of the listed errors
|
||||||
|
@ -31,16 +31,16 @@
|
|||||||
#include <winsock.h>
|
#include <winsock.h>
|
||||||
#endif
|
#endif
|
||||||
#include <my_global.h>
|
#include <my_global.h>
|
||||||
#include "mysql_embed.h"
|
#include <mysql.h>
|
||||||
|
#include <mysql_embed.h>
|
||||||
#include <mysql_com.h>
|
#include <mysql_com.h>
|
||||||
#include <violite.h>
|
#include <mysqld_error.h>
|
||||||
#include <my_sys.h>
|
#include <my_sys.h>
|
||||||
#include <m_string.h>
|
#include <m_string.h>
|
||||||
#include "mysql.h"
|
#include <my_net.h>
|
||||||
#include "mysqld_error.h"
|
#include <violite.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <sys/types.h>
|
|
||||||
|
|
||||||
#ifdef MYSQL_SERVER
|
#ifdef MYSQL_SERVER
|
||||||
ulong max_allowed_packet=65536;
|
ulong max_allowed_packet=65536;
|
||||||
@ -60,20 +60,9 @@ ulong net_write_timeout= NET_WRITE_TIMEOUT;
|
|||||||
#endif
|
#endif
|
||||||
ulong net_buffer_length=8192; /* Default length. Enlarged if necessary */
|
ulong net_buffer_length=8192; /* Default length. Enlarged if necessary */
|
||||||
|
|
||||||
#if !defined(__WIN__) && !defined(MSDOS)
|
#if defined(__WIN__) || defined(MSDOS)
|
||||||
#include <sys/socket.h>
|
|
||||||
#else
|
|
||||||
#undef MYSQL_SERVER /* Win32 can't handle interrupts */
|
#undef MYSQL_SERVER /* Win32 can't handle interrupts */
|
||||||
#endif
|
#endif
|
||||||
#if !defined(MSDOS) && !defined(__WIN__) && !defined(HAVE_BROKEN_NETINET_INCLUDES) && !defined(__BEOS__)
|
|
||||||
#include <netinet/in_systm.h>
|
|
||||||
#include <netinet/in.h>
|
|
||||||
#include <netinet/ip.h>
|
|
||||||
#if !defined(alpha_linux_port)
|
|
||||||
#include <netinet/tcp.h>
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#include "mysqld_error.h"
|
|
||||||
#ifdef MYSQL_SERVER
|
#ifdef MYSQL_SERVER
|
||||||
#include "my_pthread.h"
|
#include "my_pthread.h"
|
||||||
#include "thr_alarm.h"
|
#include "thr_alarm.h"
|
||||||
|
12
vio/vio.c
12
vio/vio.c
@ -25,22 +25,10 @@
|
|||||||
#include <my_global.h>
|
#include <my_global.h>
|
||||||
#include <mysql_com.h>
|
#include <mysql_com.h>
|
||||||
#include <violite.h>
|
#include <violite.h>
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <assert.h>
|
|
||||||
#include <my_sys.h>
|
#include <my_sys.h>
|
||||||
#include <my_net.h>
|
#include <my_net.h>
|
||||||
#include <m_string.h>
|
#include <m_string.h>
|
||||||
#ifdef HAVE_POLL
|
|
||||||
#include <sys/poll.h>
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_SYS_IOCTL_H
|
|
||||||
#include <sys/ioctl.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__EMX__) || defined(OS2)
|
|
||||||
#define ioctlsocket ioctl
|
|
||||||
#endif /* defined(__EMX__) */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Helper to fill most of the Vio* with defaults.
|
* Helper to fill most of the Vio* with defaults.
|
||||||
|
@ -27,36 +27,10 @@
|
|||||||
#include <mysql_com.h>
|
#include <mysql_com.h>
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <assert.h>
|
|
||||||
#include <violite.h>
|
#include <violite.h>
|
||||||
#include <my_sys.h>
|
#include <my_sys.h>
|
||||||
#include <my_net.h>
|
#include <my_net.h>
|
||||||
#include <m_string.h>
|
#include <m_string.h>
|
||||||
#ifdef HAVE_POLL
|
|
||||||
#include <sys/poll.h>
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_SYS_IOCTL_H
|
|
||||||
#include <sys/ioctl.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#if !defined(MSDOS) && !defined(__WIN__) && !defined(HAVE_BROKEN_NETINET_INCLUDES) && !defined(__BEOS__)
|
|
||||||
#include <netinet/ip.h>
|
|
||||||
#if !defined(alpha_linux_port)
|
|
||||||
#include <netinet/tcp.h>
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__EMX__) || defined(OS2)
|
|
||||||
#define ioctlsocket ioctl
|
|
||||||
#endif /* defined(__EMX__) */
|
|
||||||
|
|
||||||
#if defined(MSDOS) || defined(__WIN__)
|
|
||||||
#define O_NONBLOCK 1 /* For emulation of fcntl() */
|
|
||||||
#endif
|
|
||||||
#ifndef EWOULDBLOCK
|
|
||||||
#define SOCKET_EWOULDBLOCK SOCKET_EAGAIN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef __WIN__
|
#ifndef __WIN__
|
||||||
#define HANDLE void *
|
#define HANDLE void *
|
||||||
@ -243,7 +217,8 @@ my_bool
|
|||||||
vio_should_retry(Vio * vio __attribute__((unused)))
|
vio_should_retry(Vio * vio __attribute__((unused)))
|
||||||
{
|
{
|
||||||
int en = socket_errno;
|
int en = socket_errno;
|
||||||
return en == SOCKET_EAGAIN || en == SOCKET_EINTR || en == SOCKET_EWOULDBLOCK;
|
return (en == SOCKET_EAGAIN || en == SOCKET_EINTR ||
|
||||||
|
en == SOCKET_EWOULDBLOCK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
38
vio/viossl.c
38
vio/viossl.c
@ -34,31 +34,6 @@
|
|||||||
#include <my_sys.h>
|
#include <my_sys.h>
|
||||||
#include <my_net.h>
|
#include <my_net.h>
|
||||||
#include <m_string.h>
|
#include <m_string.h>
|
||||||
#ifdef HAVE_POLL
|
|
||||||
#include <sys/poll.h>
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_SYS_IOCTL_H
|
|
||||||
#include <sys/ioctl.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__EMX__)
|
|
||||||
#define ioctlsocket ioctl
|
|
||||||
#endif /* defined(__EMX__) */
|
|
||||||
|
|
||||||
#if defined(MSDOS) || defined(__WIN__)
|
|
||||||
#ifdef __WIN__
|
|
||||||
#undef errno
|
|
||||||
#undef EINTR
|
|
||||||
#undef EAGAIN
|
|
||||||
#define errno WSAGetLastError()
|
|
||||||
#define EINTR WSAEINTR
|
|
||||||
#define EAGAIN WSAEINPROGRESS
|
|
||||||
#endif /* __WIN__ */
|
|
||||||
#define O_NONBLOCK 1 /* For emulation of fcntl() */
|
|
||||||
#endif
|
|
||||||
#ifndef EWOULDBLOCK
|
|
||||||
#define EWOULDBLOCK EAGAIN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef __WIN__
|
#ifndef __WIN__
|
||||||
#define HANDLE void *
|
#define HANDLE void *
|
||||||
@ -83,7 +58,7 @@ report_errors()
|
|||||||
if (!any_ssl_error) {
|
if (!any_ssl_error) {
|
||||||
DBUG_PRINT("info", ("No OpenSSL errors."));
|
DBUG_PRINT("info", ("No OpenSSL errors."));
|
||||||
}
|
}
|
||||||
DBUG_PRINT("info", ("BTW, errno=%d", errno));
|
DBUG_PRINT("info", ("BTW, errno=%d", scoket_errno));
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,7 +77,7 @@ void vio_ssl_delete(Vio * vio)
|
|||||||
|
|
||||||
int vio_ssl_errno(Vio *vio __attribute__((unused)))
|
int vio_ssl_errno(Vio *vio __attribute__((unused)))
|
||||||
{
|
{
|
||||||
return errno; /* On Win32 this mapped to WSAGetLastError() */
|
return socket_errno; /* On Win32 this mapped to WSAGetLastError() */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -195,8 +170,9 @@ int vio_ssl_keepalive(Vio* vio, my_bool set_keep_alive)
|
|||||||
my_bool
|
my_bool
|
||||||
vio_ssl_should_retry(Vio * vio __attribute__((unused)))
|
vio_ssl_should_retry(Vio * vio __attribute__((unused)))
|
||||||
{
|
{
|
||||||
int en = errno;
|
int en = socket_errno;
|
||||||
return en == EAGAIN || en == EINTR || en == EWOULDBLOCK;
|
return (en == SOCKET_EAGAIN || en == SOCKET_EINTR ||
|
||||||
|
en == SOCKET_EWOULDBLOCK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -217,7 +193,7 @@ int vio_ssl_close(Vio * vio)
|
|||||||
r= -1;
|
r= -1;
|
||||||
if (r)
|
if (r)
|
||||||
{
|
{
|
||||||
DBUG_PRINT("error", ("close() failed, error: %d",errno));
|
DBUG_PRINT("error", ("close() failed, error: %d",socket_errno));
|
||||||
report_errors();
|
report_errors();
|
||||||
/* FIXME: error handling (not critical for MySQL) */
|
/* FIXME: error handling (not critical for MySQL) */
|
||||||
}
|
}
|
||||||
@ -257,7 +233,7 @@ my_bool vio_ssl_peer_addr(Vio * vio, char *buf)
|
|||||||
if (getpeername(vio->sd, (struct sockaddr *) (& (vio->remote)),
|
if (getpeername(vio->sd, (struct sockaddr *) (& (vio->remote)),
|
||||||
&addrLen) != 0)
|
&addrLen) != 0)
|
||||||
{
|
{
|
||||||
DBUG_PRINT("exit", ("getpeername, error: %d", errno));
|
DBUG_PRINT("exit", ("getpeername, error: %d", socket_errno));
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
}
|
}
|
||||||
/* FIXME */
|
/* FIXME */
|
||||||
|
Reference in New Issue
Block a user