diff options
author | monty@mashka.mysql.fi <> | 2003-09-11 20:31:40 +0300 |
---|---|---|
committer | monty@mashka.mysql.fi <> | 2003-09-11 20:31:40 +0300 |
commit | 7538242e4f410f6e0586dfc6024e975e766aa4f5 (patch) | |
tree | 1475a169c541e6b7aedb36103dd255fe52fc0517 /include | |
parent | 9de77cc983e9456fb2d2fec6a02b77fe3d7e4d14 (diff) | |
parent | 73f66f68fd9588d89a0dac8457bab8e713ae7a49 (diff) | |
download | mariadb-git-7538242e4f410f6e0586dfc6024e975e766aa4f5.tar.gz |
merge with 4.1 tree
Diffstat (limited to 'include')
-rw-r--r-- | include/config-win.h | 1 | ||||
-rw-r--r-- | include/m_string.h | 10 | ||||
-rw-r--r-- | include/my_sys.h | 6 | ||||
-rw-r--r-- | include/mysql.h | 8 | ||||
-rw-r--r-- | include/mysql_com.h | 4 | ||||
-rw-r--r-- | include/violite.h | 202 |
6 files changed, 93 insertions, 138 deletions
diff --git a/include/config-win.h b/include/config-win.h index 6b40a0f2ed3..7830cc8b9cd 100644 --- a/include/config-win.h +++ b/include/config-win.h @@ -283,6 +283,7 @@ inline double ulonglong2double(ulonglong value) #define HAVE_ISAM /* We want to have support for ISAM in 4.0 */ #define HAVE_QUERY_CACHE #define SPRINTF_RETURNS_INT +#define HAVE_SETFILEPOINTER #define HAVE_VIO #ifdef NOT_USED diff --git a/include/m_string.h b/include/m_string.h index 5863bb51b73..062d0b4cf65 100644 --- a/include/m_string.h +++ b/include/m_string.h @@ -122,6 +122,16 @@ extern void bmove_align(gptr dst,const gptr src,uint len); #define bmove512(A,B,C) memcpy(A,B,C) #endif +#ifdef HAVE_purify +#include <assert.h> +#define memcpy_overlap(A,B,C) \ +DBUG_ASSERT((A) == (B) || ((A)+(C)) <= (B) || ((B)+(C)) <= (A)); \ +bmove((byte*) key,(byte*) from,(size_t) length); +#else +#define memcpy_overlap(A,B,C) memcpy((A), (B), (C)) +#endif /* HAVE_purify */ + + /* Prototypes for string functions */ #if !defined(bfill) && !defined(HAVE_BFILL) diff --git a/include/my_sys.h b/include/my_sys.h index 4e727af3aa8..47a039baddd 100644 --- a/include/my_sys.h +++ b/include/my_sys.h @@ -683,6 +683,8 @@ extern int _my_b_get(IO_CACHE *info); extern int _my_b_async_read(IO_CACHE *info,byte *Buffer,uint Count); extern int _my_b_write(IO_CACHE *info,const byte *Buffer,uint Count); extern int my_b_append(IO_CACHE *info,const byte *Buffer,uint Count); +extern int my_b_safe_write(IO_CACHE *info,const byte *Buffer,uint Count); + extern int my_block_write(IO_CACHE *info, const byte *Buffer, uint Count, my_off_t pos); extern int _flush_io_cache(IO_CACHE *info, int need_append_buffer_lock); @@ -744,8 +746,8 @@ extern void set_prealloc_root(MEM_ROOT *root, char *ptr); extern char *strdup_root(MEM_ROOT *root,const char *str); extern char *strmake_root(MEM_ROOT *root,const char *str,uint len); extern char *memdup_root(MEM_ROOT *root,const char *str,uint len); -extern void load_defaults(const char *conf_file, const char **groups, - int *argc, char ***argv); +extern int load_defaults(const char *conf_file, const char **groups, + int *argc, char ***argv); extern void free_defaults(char **argv); extern void print_defaults(const char *conf_file, const char **groups); extern my_bool my_compress(byte *, ulong *, ulong *); diff --git a/include/mysql.h b/include/mysql.h index ff00e75687d..a4e4e9fcee4 100644 --- a/include/mysql.h +++ b/include/mysql.h @@ -497,10 +497,12 @@ typedef struct st_mysql_bind /* Following are for internal use. Set by mysql_bind_param */ unsigned char *inter_buffer; /* for the current data position */ unsigned long offset; /* offset position for char/binary fetch */ + unsigned long internal_length; /* Used if length is 0 */ unsigned int param_number; /* For null count and error messages */ my_bool long_data_used; /* If used with mysql_send_long_data */ my_bool binary_data; /* data buffer is binary */ my_bool null_field; /* NULL data cache flag */ + my_bool internal_is_null; /* Used if is_null is 0 */ void (*store_param_func)(NET *net, struct st_mysql_bind *param); void (*fetch_result)(struct st_mysql_bind *, unsigned char **row); } MYSQL_BIND; @@ -575,13 +577,13 @@ my_bool STDCALL mysql_rollback(MYSQL * mysql); my_bool STDCALL mysql_autocommit(MYSQL * mysql, my_bool auto_mode); int STDCALL mysql_fetch(MYSQL_STMT *stmt); int STDCALL mysql_fetch_column(MYSQL_STMT *stmt, MYSQL_BIND *bind, - my_ulonglong column, + unsigned int column, unsigned long offset); my_bool STDCALL mysql_send_long_data(MYSQL_STMT *stmt, unsigned int param_number, const char *data, unsigned long length); -MYSQL_RES *STDCALL mysql_prepare_result(MYSQL_STMT *stmt); +MYSQL_RES *STDCALL mysql_get_metadata(MYSQL_STMT *stmt); MYSQL_RES *STDCALL mysql_param_result(MYSQL_STMT *stmt); my_ulonglong STDCALL mysql_stmt_affected_rows(MYSQL_STMT *stmt); int STDCALL mysql_stmt_store_result(MYSQL_STMT *stmt); @@ -620,6 +622,8 @@ int STDCALL mysql_drop_db(MYSQL *mysql, const char *DB); unsigned long net_safe_read(MYSQL* mysql); void mysql_once_init(void); +extern my_bool server_inited; + #ifdef __NETWARE__ #pragma pack(pop) /* restore alignment */ #endif diff --git a/include/mysql_com.h b/include/mysql_com.h index b8dc877f125..d5a70e4dfe8 100644 --- a/include/mysql_com.h +++ b/include/mysql_com.h @@ -342,8 +342,8 @@ const char *mysql_errno_to_sqlstate(unsigned int mysql_errno); /* Some other useful functions */ void my_init(void); -void load_defaults(const char *conf_file, const char **groups, - int *argc, char ***argv); +int load_defaults(const char *conf_file, const char **groups, + int *argc, char ***argv); my_bool my_thread_init(void); void my_thread_end(void); diff --git a/include/violite.h b/include/violite.h index 9205f5b799a..37c5abbbe67 100644 --- a/include/violite.h +++ b/include/violite.h @@ -37,18 +37,24 @@ enum enum_vio_type VIO_TYPE_SSL, VIO_TYPE_SHARED_MEMORY }; -#ifndef __WIN__ -#define HANDLE void * -#endif - Vio* vio_new(my_socket sd, enum enum_vio_type type, my_bool localhost); #ifdef __WIN__ Vio* vio_new_win32pipe(HANDLE hPipe); -Vio* vio_new_win32shared_memory(NET *net,HANDLE handle_file_map, HANDLE handle_map, - HANDLE event_server_wrote, HANDLE event_server_read, - HANDLE event_client_wrote, HANDLE event_client_read); -#endif +Vio* vio_new_win32shared_memory(NET *net,HANDLE handle_file_map, + HANDLE handle_map, + HANDLE event_server_wrote, + HANDLE event_server_read, + HANDLE event_client_wrote, + HANDLE event_client_read); +int vio_read_pipe(Vio *vio, gptr buf, int size); +int vio_write_pipe(Vio *vio, const gptr buf, int size); +int vio_close_pipe(Vio * vio); +#else +#define HANDLE void * +#endif /* __WIN__ */ + void vio_delete(Vio* vio); +int vio_close(Vio* vio); #ifdef EMBEDDED_LIBRARY void vio_reset(Vio *vio); @@ -57,71 +63,73 @@ void vio_reset(Vio* vio, enum enum_vio_type type, my_socket sd, HANDLE hPipe, my_bool localhost); #endif -/* - * vio_read and vio_write should have the same semantics - * as read(2) and write(2). - */ int vio_read(Vio *vio, gptr buf, int size); int vio_write(Vio *vio, const gptr buf, int size); -/* - * Whenever the socket is set to blocking mode or not. - */ int vio_blocking(Vio *vio, my_bool onoff, my_bool *old_mode); my_bool vio_is_blocking(Vio *vio); -/* - * setsockopt TCP_NODELAY at IPPROTO_TCP level, when possible. - */ +/* setsockopt TCP_NODELAY at IPPROTO_TCP level, when possible */ int vio_fastsend(Vio *vio); -/* - * setsockopt SO_KEEPALIVE at SOL_SOCKET level, when possible. - */ +/* setsockopt SO_KEEPALIVE at SOL_SOCKET level, when possible */ int vio_keepalive(Vio *vio, my_bool onoff); -/* - * Whenever we should retry the last read/write operation. - */ +/* Whenever we should retry the last read/write operation. */ my_bool vio_should_retry(Vio *vio); -/* - * When the workday is over... - */ -int vio_close(Vio* vio); -/* - * Short text description of the socket for those, who are curious.. - */ +/* Short text description of the socket for those, who are curious.. */ const char* vio_description(Vio *vio); - /* Return the type of the connection */ enum enum_vio_type vio_type(Vio* vio); - /* Return last error number */ -int vio_errno(Vio*vio); - +int vio_errno(Vio*vio); /* Get socket number */ my_socket vio_fd(Vio*vio); +/* Remote peer's address and name in text form */ +my_bool vio_peer_addr(Vio* vio, char *buf, uint16 *port); +/* Remotes in_addr */ +void vio_in_addr(Vio *vio, struct in_addr *in); +my_bool vio_poll_read(Vio *vio,uint timeout); +void vio_timeout(Vio *vio,uint timeout); -/* - * Remote peer's address and name in text form. - */ -my_bool vio_peer_addr(Vio* vio, char *buf, uint16 *port); +#ifdef HAVE_OPENSSL +#define HEADER_DES_LOCL_H dummy_something +#include <openssl/ssl.h> +#include <openssl/err.h> -/* Remotes in_addr */ +struct st_VioSSLAcceptorFd +{ + SSL_CTX *ssl_context; + SSL_METHOD *ssl_method; + struct st_VioSSLAcceptorFd *session_id_context; +}; -void vio_in_addr(Vio *vio, struct in_addr *in); +/* One copy for client */ +struct st_VioSSLConnectorFd +{ + SSL_CTX *ssl_context; + /* function pointers which are only once for SSL client */ + SSL_METHOD *ssl_method; +}; -my_bool vio_poll_read(Vio *vio,uint timeout); +int sslaccept(struct st_VioSSLAcceptorFd*, Vio *, long timeout); +int sslconnect(struct st_VioSSLConnectorFd*, Vio *, long timeout); -#ifdef __cplusplus -} -#endif +struct st_VioSSLConnectorFd +*new_VioSSLConnectorFd(const char *key_file, const char *cert_file, + const char *ca_file, const char *ca_path, + const char *cipher); +struct st_VioSSLAcceptorFd +*new_VioSSLAcceptorFd(const char *key_file, const char *cert_file, + const char *ca_file,const char *ca_path, + const char *cipher); +Vio *new_VioSSL(struct st_VioSSLAcceptorFd *fd, Vio *sd, int state); +#endif /* HAVE_OPENSSL */ #ifdef HAVE_SMEM int vio_read_shared_memory(Vio *vio, gptr buf, int size); int vio_write_shared_memory(Vio *vio, const gptr buf, int size); int vio_close_shared_memory(Vio * vio); #endif -#ifdef __WIN__ -int vio_read_pipe(Vio *vio, gptr buf, int size); -int vio_write_pipe(Vio *vio, const gptr buf, int size); -int vio_close_pipe(Vio * vio); + +#ifdef __cplusplus +} #endif #if defined(HAVE_VIO) && !defined(DONT_MAP_VIO) @@ -138,77 +146,9 @@ int vio_close_pipe(Vio * vio); #define vio_close(vio) ((vio)->vioclose)(vio) #define vio_peer_addr(vio, buf, prt) (vio)->peer_addr(vio, buf, prt) #define vio_in_addr(vio, in) (vio)->in_addr(vio, in) +#define vio_timeout(vio, seconds) (vio)->timeout(vio, seconds) #endif /* defined(HAVE_VIO) && !defined(DONT_MAP_VIO) */ -#ifdef HAVE_OPENSSL -#define HEADER_DES_LOCL_H dummy_something -#include <openssl/ssl.h> -#include <openssl/err.h> -#include "my_net.h" /* needed because of struct in_addr */ - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -void vio_ssl_delete(Vio* vio); - -int vio_ssl_read(Vio* vio,gptr buf, int size); -int vio_ssl_write(Vio* vio,const gptr buf,int size); - -/* setsockopt TCP_NODELAY at IPPROTO_TCP level, when possible. */ - int vio_ssl_fastsend(Vio* vio); -/* setsockopt SO_KEEPALIVE at SOL_SOCKET level, when possible. */ -int vio_ssl_keepalive(Vio* vio, my_bool onoff); -/* Whenever we should retry the last read/write operation. */ -my_bool vio_ssl_should_retry(Vio* vio); -/* When the workday is over... */ -int vio_ssl_close(Vio* vio); -/* Return last error number */ -int vio_ssl_errno(Vio *vio); -my_bool vio_ssl_peer_addr(Vio* vio, char *buf, uint16 *port); -void vio_ssl_in_addr(Vio *vio, struct in_addr *in); -int vio_ssl_blocking(Vio * vio, my_bool set_blocking_mode, my_bool *old_mode); - -/* Single copy for server */ -enum vio_ssl_acceptorfd_state -{ - state_connect = 1, - state_accept = 2 -}; - -struct st_VioSSLAcceptorFd -{ - SSL_CTX* ssl_context_; - SSL_METHOD* ssl_method_; - struct st_VioSSLAcceptorFd* session_id_context_; -}; - -/* One copy for client */ -struct st_VioSSLConnectorFd -{ - SSL_CTX* ssl_context_; - /* function pointers which are only once for SSL client */ - SSL_METHOD* ssl_method_; -}; - -int sslaccept(struct st_VioSSLAcceptorFd*, Vio*, long timeout); -int sslconnect(struct st_VioSSLConnectorFd*, Vio*, long timeout); - -struct st_VioSSLConnectorFd -*new_VioSSLConnectorFd(const char* key_file, const char* cert_file, - const char* ca_file, const char* ca_path, - const char* cipher); -struct st_VioSSLAcceptorFd -*new_VioSSLAcceptorFd(const char* key_file, const char* cert_file, - const char* ca_file,const char* ca_path, - const char* cipher); -Vio* new_VioSSL(struct st_VioSSLAcceptorFd* fd, Vio* sd,int state); - -#ifdef __cplusplus -} -#endif -#endif /* HAVE_OPENSSL */ - /* This enumerator is used in parser - should be always visible */ enum SSL_type { @@ -237,7 +177,7 @@ struct st_vio void (*viodelete)(Vio*); int (*vioerrno)(Vio*); int (*read)(Vio*, gptr, int); - int (*write)(Vio*, const gptr, int); + int (*write)(Vio*, gptr, int); int (*vioblocking)(Vio*, my_bool, my_bool *); my_bool (*is_blocking)(Vio*); int (*viokeepalive)(Vio*, my_bool); @@ -246,20 +186,18 @@ struct st_vio void (*in_addr)(Vio*, struct in_addr*); my_bool (*should_retry)(Vio*); int (*vioclose)(Vio*); - -#ifdef HAVE_OPENSSL - SSL* ssl_; -#endif /* HAVE_OPENSSL */ + void (*timeout)(Vio*, unsigned int timeout); + void *ssl_arg; #ifdef HAVE_SMEM - HANDLE handle_file_map; - char *handle_map; - HANDLE event_server_wrote; - HANDLE event_server_read; - HANDLE event_client_wrote; - HANDLE event_client_read; - long shared_memory_remain; - char *shared_memory_pos; - NET *net; + HANDLE handle_file_map; + char *handle_map; + HANDLE event_server_wrote; + HANDLE event_server_read; + HANDLE event_client_wrote; + HANDLE event_client_read; + long shared_memory_remain; + char *shared_memory_pos; + NET *net; #endif /* HAVE_SMEM */ #endif /* HAVE_VIO */ }; |