diff options
| -rw-r--r-- | ext/mysqlnd/mysqlnd.c | 97 | ||||
| -rw-r--r-- | ext/mysqlnd/mysqlnd.h | 4 | ||||
| -rw-r--r-- | ext/mysqlnd/mysqlnd_auth.c | 14 | ||||
| -rw-r--r-- | ext/mysqlnd/mysqlnd_ps.c | 2 | ||||
| -rw-r--r-- | ext/mysqlnd/mysqlnd_result.c | 4 | ||||
| -rw-r--r-- | ext/mysqlnd/mysqlnd_result_meta.c | 2 | ||||
| -rw-r--r-- | ext/mysqlnd/mysqlnd_structs.h | 42 | 
7 files changed, 82 insertions, 83 deletions
| diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c index c92b577682..b0498ef404 100644 --- a/ext/mysqlnd/mysqlnd.c +++ b/ext/mysqlnd/mysqlnd.c @@ -179,6 +179,7 @@ static enum mysqlnd_connection_state  MYSQLND_METHOD(mysqlnd_connection_state, get)(const struct st_mysqlnd_connection_state * const state_struct)  {  	DBG_ENTER("mysqlnd_connection_state::get") +	DBG_INF_FMT("State=%u", state_struct->state);  	DBG_RETURN(state_struct->state);  }  /* }}} */ @@ -186,7 +187,7 @@ MYSQLND_METHOD(mysqlnd_connection_state, get)(const struct st_mysqlnd_connection  /* {{{ mysqlnd_connection_state::set */  static void -MYSQLND_METHOD(mysqlnd_connection_state, set)(struct st_mysqlnd_connection_state * const state_struct, enum mysqlnd_connection_state state) +MYSQLND_METHOD(mysqlnd_connection_state, set)(struct st_mysqlnd_connection_state * const state_struct, const enum mysqlnd_connection_state state)  {  	DBG_ENTER("mysqlnd_connection_state::set")  	DBG_INF_FMT("New state=%u", state); @@ -202,6 +203,8 @@ MYSQLND_CLASS_METHODS_START(mysqlnd_connection_state)  MYSQLND_CLASS_METHODS_END; + +  /* {{{ mysqlnd_upsert_status_init */  void  mysqlnd_connection_state_init(struct st_mysqlnd_connection_state * const state) @@ -277,25 +280,25 @@ MYSQLND_METHOD(mysqlnd_conn_data, free_contents)(MYSQLND_CONN_DATA * conn)  	DBG_INF("Freeing memory of members"); -	if (conn->host) { -		mnd_pefree(conn->host, pers); -		conn->host = NULL; +	if (conn->hostname.s) { +		mnd_pefree(conn->hostname.s, pers); +		conn->hostname.s = NULL;  	} -	if (conn->user) { -		mnd_pefree(conn->user, pers); -		conn->user = NULL; +	if (conn->username.s) { +		mnd_pefree(conn->username.s, pers); +		conn->username.s = NULL;  	} -	if (conn->passwd) { -		mnd_pefree(conn->passwd, pers); -		conn->passwd = NULL; +	if (conn->password.s) { +		mnd_pefree(conn->password.s, pers); +		conn->password.s = NULL;  	}  	if (conn->connect_or_select_db.s) {  		mnd_pefree(conn->connect_or_select_db.s, pers);  		conn->connect_or_select_db.s = NULL;  	} -	if (conn->unix_socket) { -		mnd_pefree(conn->unix_socket, pers); -		conn->unix_socket = NULL; +	if (conn->unix_socket.s) { +		mnd_pefree(conn->unix_socket.s, pers); +		conn->unix_socket.s = NULL;  	}  	DBG_INF_FMT("scheme=%s", conn->scheme.s);  	if (conn->scheme.s) { @@ -888,29 +891,29 @@ MYSQLND_METHOD(mysqlnd_conn_data, connect)(MYSQLND_CONN_DATA * conn,  			goto err; /* OOM */  		} -		conn->user_len			= username.l; -		conn->user				= mnd_pestrndup(username.s, conn->user_len, conn->persistent); -		conn->passwd			= mnd_pestrndup(password.s, password.l, conn->persistent); -		conn->passwd_len		= password.l; +		conn->username.l		= username.l; +		conn->username.s		= mnd_pestrndup(username.s, conn->username.l, conn->persistent); +		conn->password.l		= password.l; +		conn->password.s		= mnd_pestrndup(password.s, conn->password.l, conn->persistent);  		conn->port				= port; -		conn->connect_or_select_db.s = mnd_pestrndup(database.s, database.l, conn->persistent);  		conn->connect_or_select_db.l = database.l; +		conn->connect_or_select_db.s = mnd_pestrndup(database.s, conn->connect_or_select_db.l, conn->persistent); -		if (!conn->user || !conn->passwd || !conn->connect_or_select_db.s) { +		if (!conn->username.s || !conn->password.s|| !conn->connect_or_select_db.s) {  			SET_OOM_ERROR(conn->error_info);  			goto err; /* OOM */  		}  		if (!unix_socket && !named_pipe) { -			conn->host = mnd_pestrndup(hostname.s, hostname.l, conn->persistent); -			if (!conn->host) { +			conn->hostname.s = mnd_pestrndup(hostname.s, hostname.l, conn->persistent); +			if (!conn->hostname.s) {  				SET_OOM_ERROR(conn->error_info);  				goto err; /* OOM */  			} -			conn->host_len = hostname.l; +			conn->hostname.l = hostname.l;  			{  				char *p; -				mnd_sprintf(&p, 0, "%s via TCP/IP", conn->host); +				mnd_sprintf(&p, 0, "%s via TCP/IP", conn->hostname);  				if (!p) {  					SET_OOM_ERROR(conn->error_info);  					goto err; /* OOM */ @@ -923,12 +926,12 @@ MYSQLND_METHOD(mysqlnd_conn_data, connect)(MYSQLND_CONN_DATA * conn,  				}  			}  		} else { -			conn->unix_socket = mnd_pestrdup(socket_or_pipe.s, conn->persistent); +			conn->unix_socket.s = mnd_pestrdup(socket_or_pipe.s, conn->persistent);  			if (unix_socket) {  				conn->host_info = mnd_pestrdup("Localhost via UNIX socket", conn->persistent);  			} else if (named_pipe) {  				char *p; -				mnd_sprintf(&p, 0, "%s via named pipe", conn->unix_socket); +				mnd_sprintf(&p, 0, "%s via named pipe", conn->unix_socket.s);  				if (!p) {  					SET_OOM_ERROR(conn->error_info);  					goto err; /* OOM */ @@ -942,11 +945,11 @@ MYSQLND_METHOD(mysqlnd_conn_data, connect)(MYSQLND_CONN_DATA * conn,  			} else {  				php_error_docref(NULL, E_WARNING, "Impossible. Should be either socket or a pipe. Report a bug!");  			} -			if (!conn->unix_socket || !conn->host_info) { +			if (!conn->unix_socket.s || !conn->host_info) {  				SET_OOM_ERROR(conn->error_info);  				goto err; /* OOM */  			} -			conn->unix_socket_len = strlen(conn->unix_socket); +			conn->unix_socket.l = strlen(conn->unix_socket.s);  		}  		conn->max_packet_size	= MYSQLND_ASSEMBLED_PACKET_MAX_SIZE;  		/* todo: check if charset is available */ @@ -1078,7 +1081,7 @@ PHPAPI MYSQLND * mysqlnd_connection_connect(MYSQLND * conn_handle,    Still the result from the query is PASS  */  static enum_func_status -MYSQLND_METHOD(mysqlnd_conn_data, query)(MYSQLND_CONN_DATA * conn, const char * query, unsigned int query_len) +MYSQLND_METHOD(mysqlnd_conn_data, query)(MYSQLND_CONN_DATA * conn, const char * const query, const size_t query_len)  {  	const size_t this_func = STRUCT_OFFSET(MYSQLND_CLASS_METHODS_TYPE(mysqlnd_conn_data), query);  	enum_func_status ret = FAIL; @@ -1103,7 +1106,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, query)(MYSQLND_CONN_DATA * conn, const char *  /* {{{ mysqlnd_conn_data::send_query */  static enum_func_status -MYSQLND_METHOD(mysqlnd_conn_data, send_query)(MYSQLND_CONN_DATA * conn, const char * query, unsigned int query_len, +MYSQLND_METHOD(mysqlnd_conn_data, send_query)(MYSQLND_CONN_DATA * conn, const char * const query, const size_t query_len,  											  enum_mysqlnd_send_query_type type, zval *read_cb, zval *err_cb)  {  	const size_t this_func = STRUCT_OFFSET(MYSQLND_CLASS_METHODS_TYPE(mysqlnd_conn_data), send_query); @@ -1353,7 +1356,7 @@ mysqlnd_poll(MYSQLND **r_array, MYSQLND **e_array, MYSQLND ***dont_poll, long se  /* {{{ mysqlnd_conn_data::list_method */  MYSQLND_RES * -MYSQLND_METHOD(mysqlnd_conn_data, list_method)(MYSQLND_CONN_DATA * conn, const char * query, const char *achtung_wild, char *par1) +MYSQLND_METHOD(mysqlnd_conn_data, list_method)(MYSQLND_CONN_DATA * conn, const char * const query, const char * const achtung_wild, const char * const par1)  {  	const size_t this_func = STRUCT_OFFSET(MYSQLND_CLASS_METHODS_TYPE(mysqlnd_conn_data), list_method);  	char * show_query = NULL; @@ -1500,7 +1503,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, dump_debug_info)(MYSQLND_CONN_DATA * const con  /* {{{ mysqlnd_conn_data::select_db */  static enum_func_status -MYSQLND_METHOD(mysqlnd_conn_data, select_db)(MYSQLND_CONN_DATA * const conn, const char * const db, unsigned int db_len) +MYSQLND_METHOD(mysqlnd_conn_data, select_db)(MYSQLND_CONN_DATA * const conn, const char * const db, const size_t db_len)  {  	const size_t this_func = STRUCT_OFFSET(MYSQLND_CLASS_METHODS_TYPE(mysqlnd_conn_data), select_db);  	enum_func_status ret = FAIL; @@ -1978,7 +1981,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, next_result)(MYSQLND_CONN_DATA * const conn)  /* {{{ mysqlnd_field_type_name */ -PHPAPI const char *mysqlnd_field_type_name(enum mysqlnd_field_types field_type) +PHPAPI const char * mysqlnd_field_type_name(const enum mysqlnd_field_types field_type)  {  	switch(field_type) {  		case FIELD_TYPE_JSON: @@ -2033,12 +2036,12 @@ PHPAPI const char *mysqlnd_field_type_name(enum mysqlnd_field_types field_type)  /* {{{ mysqlnd_conn_data::change_user */  static enum_func_status  MYSQLND_METHOD(mysqlnd_conn_data, change_user)(MYSQLND_CONN_DATA * const conn, -										  const char * user, -										  const char * passwd, -										  const char * db, -										  zend_bool silent, -										  size_t passwd_len -										 ) +											   const char * user, +											   const char * passwd, +											   const char * db, +											   zend_bool silent, +											   size_t passwd_len +			)  {  	const size_t this_func = STRUCT_OFFSET(MYSQLND_CLASS_METHODS_TYPE(mysqlnd_conn_data), change_user);  	enum_func_status ret = FAIL; @@ -2059,6 +2062,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, change_user)(MYSQLND_CONN_DATA * const conn,  	}  	if (!passwd) {  		passwd = ""; +		passwd_len = 0;  	}  	if (!db) {  		db = ""; @@ -2693,8 +2697,8 @@ MYSQLND_METHOD(mysqlnd_conn_data, tx_savepoint_release)(MYSQLND_CONN_DATA * conn  /* {{{ mysqlnd_conn_data::negotiate_client_api_capabilities */ -static unsigned int -MYSQLND_METHOD(mysqlnd_conn_data, negotiate_client_api_capabilities)(MYSQLND_CONN_DATA * const conn, const unsigned int flags) +static size_t +MYSQLND_METHOD(mysqlnd_conn_data, negotiate_client_api_capabilities)(MYSQLND_CONN_DATA * const conn, const size_t flags)  {  	unsigned int ret = 0;  	DBG_ENTER("mysqlnd_conn_data::negotiate_client_api_capabilities"); @@ -2709,7 +2713,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, negotiate_client_api_capabilities)(MYSQLND_CON  /* {{{ mysqlnd_conn_data::get_client_api_capabilities */ -static unsigned int +static size_t  MYSQLND_METHOD(mysqlnd_conn_data, get_client_api_capabilities)(const MYSQLND_CONN_DATA * const conn)  {  	DBG_ENTER("mysqlnd_conn_data::get_client_api_capabilities"); @@ -2720,18 +2724,17 @@ MYSQLND_METHOD(mysqlnd_conn_data, get_client_api_capabilities)(const MYSQLND_CON  /* {{{ mysqlnd_conn_data::local_tx_start */  static enum_func_status -MYSQLND_METHOD(mysqlnd_conn_data, local_tx_start)(MYSQLND_CONN_DATA * conn, size_t this_func) +MYSQLND_METHOD(mysqlnd_conn_data, local_tx_start)(MYSQLND_CONN_DATA * conn, const size_t this_func)  { -	enum_func_status ret = PASS;  	DBG_ENTER("mysqlnd_conn_data::local_tx_start"); -	DBG_RETURN(ret); +	DBG_RETURN(PASS);  }  /* }}} */  /* {{{ mysqlnd_conn_data::local_tx_end */  static enum_func_status -MYSQLND_METHOD(mysqlnd_conn_data, local_tx_end)(MYSQLND_CONN_DATA * conn, size_t this_func, enum_func_status status) +MYSQLND_METHOD(mysqlnd_conn_data, local_tx_end)(MYSQLND_CONN_DATA * conn, const size_t this_func, const enum_func_status status)  {  	DBG_ENTER("mysqlnd_conn_data::local_tx_end");  	DBG_RETURN(status); @@ -2871,7 +2874,7 @@ MYSQLND_METHOD_PRIVATE(mysqlnd_conn, dtor)(MYSQLND * conn)  /* {{{ mysqlnd_conn_data::close */  static enum_func_status -MYSQLND_METHOD(mysqlnd_conn, close)(MYSQLND * conn_handle, enum_connection_close_type close_type) +MYSQLND_METHOD(mysqlnd_conn, close)(MYSQLND * conn_handle, const enum_connection_close_type close_type)  {  	const size_t this_func = STRUCT_OFFSET(MYSQLND_CLASS_METHODS_TYPE(mysqlnd_conn), close);  	MYSQLND_CONN_DATA * conn = conn_handle->data; @@ -2916,7 +2919,7 @@ MYSQLND_CLASS_METHODS_END;  /* {{{ mysqlnd_connection_init */  PHPAPI MYSQLND * -mysqlnd_connection_init(unsigned int client_flags, zend_bool persistent, struct st_mysqlnd_object_factory_methods * object_factory) +mysqlnd_connection_init(const size_t client_flags, const zend_bool persistent, struct st_mysqlnd_object_factory_methods * object_factory)  {  	struct st_mysqlnd_object_factory_methods * factory = object_factory? object_factory : &MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_object_factory);  	MYSQLND * ret; diff --git a/ext/mysqlnd/mysqlnd.h b/ext/mysqlnd/mysqlnd.h index f683562811..58a3aef164 100644 --- a/ext/mysqlnd/mysqlnd.h +++ b/ext/mysqlnd/mysqlnd.h @@ -87,7 +87,7 @@ PHPAPI const MYSQLND_CHARSET * mysqlnd_find_charset_name(const char * const char  #define mysqlnd_connect(conn, host, user, pass, pass_len, db, db_len, port, socket, mysql_flags, client_api_flags) \  			mysqlnd_connection_connect((conn), (host), (user), (pass), (pass_len), (db), (db_len), (port), (socket), (mysql_flags), (client_api_flags)) -PHPAPI MYSQLND * mysqlnd_connection_init(unsigned int client_flags, zend_bool persistent, struct st_mysqlnd_object_factory_methods * object_factory); +PHPAPI MYSQLND * mysqlnd_connection_init(const size_t client_flags, const zend_bool persistent, struct st_mysqlnd_object_factory_methods * object_factory);  PHPAPI MYSQLND * mysqlnd_connection_connect(MYSQLND * conn,  											const char * const host,  											const char * const user, @@ -185,7 +185,7 @@ PHPAPI void mysqlnd_free_param_bind_dtor(MYSQLND_PARAM_BIND * param_bind);  PHPAPI void mysqlnd_free_result_bind_dtor(MYSQLND_RESULT_BIND * result_bind); -PHPAPI const char * mysqlnd_field_type_name(enum mysqlnd_field_types field_type); +PHPAPI const char * mysqlnd_field_type_name(const enum mysqlnd_field_types field_type);  /* LOAD DATA LOCAL */  void mysqlnd_local_infile_default(MYSQLND_CONN_DATA * conn); diff --git a/ext/mysqlnd/mysqlnd_auth.c b/ext/mysqlnd/mysqlnd_auth.c index 01868336dd..fd9d174c12 100644 --- a/ext/mysqlnd/mysqlnd_auth.c +++ b/ext/mysqlnd/mysqlnd_auth.c @@ -271,18 +271,18 @@ mysqlnd_auth_change_user(MYSQLND_CONN_DATA * const conn,  	}  	if (ret == PASS) {  		char * tmp = NULL; -		/* if we get conn->user as parameter and then we first free it, then estrndup it, we will crash */ +		/* if we get conn->username as parameter and then we first free it, then estrndup it, we will crash */  		tmp = mnd_pestrndup(user, user_len, conn->persistent); -		if (conn->user) { -			mnd_pefree(conn->user, conn->persistent); +		if (conn->username.s) { +			mnd_pefree(conn->username.s, conn->persistent);  		} -		conn->user = tmp; +		conn->username.s = tmp;  		tmp = mnd_pestrdup(passwd, conn->persistent); -		if (conn->passwd) { -			mnd_pefree(conn->passwd, conn->persistent); +		if (conn->password.s) { +			mnd_pefree(conn->password.s, conn->persistent);  		} -		conn->passwd = tmp; +		conn->password.s = tmp;  		if (conn->last_message.s) {  			mnd_pefree(conn->last_message.s, conn->persistent); diff --git a/ext/mysqlnd/mysqlnd_ps.c b/ext/mysqlnd/mysqlnd_ps.c index d7a170dd82..d5a9b214bf 100644 --- a/ext/mysqlnd/mysqlnd_ps.c +++ b/ext/mysqlnd/mysqlnd_ps.c @@ -377,7 +377,7 @@ mysqlnd_stmt_prepare_read_eof(MYSQLND_STMT * s)  /* {{{ mysqlnd_stmt::prepare */  static enum_func_status -MYSQLND_METHOD(mysqlnd_stmt, prepare)(MYSQLND_STMT * const s, const char * const query, unsigned int query_len) +MYSQLND_METHOD(mysqlnd_stmt, prepare)(MYSQLND_STMT * const s, const char * const query, const size_t query_len)  {  	MYSQLND_STMT_DATA * stmt = s? s->data:NULL;  	MYSQLND_STMT * s_to_prepare = s; diff --git a/ext/mysqlnd/mysqlnd_result.c b/ext/mysqlnd/mysqlnd_result.c index 27a463f1eb..f3f26b43ce 100644 --- a/ext/mysqlnd/mysqlnd_result.c +++ b/ext/mysqlnd/mysqlnd_result.c @@ -928,7 +928,7 @@ MYSQLND_METHOD(mysqlnd_result_unbuffered, fetch_row)(MYSQLND_RES * result, void  /* {{{ mysqlnd_res::use_result */  static MYSQLND_RES * -MYSQLND_METHOD(mysqlnd_res, use_result)(MYSQLND_RES * const result, zend_bool ps) +MYSQLND_METHOD(mysqlnd_res, use_result)(MYSQLND_RES * const result, const zend_bool ps)  {  	DBG_ENTER("mysqlnd_res::use_result"); @@ -1506,7 +1506,7 @@ MYSQLND_METHOD(mysqlnd_res, skip_result)(MYSQLND_RES * const result)  /* {{{ mysqlnd_res::free_result */  static enum_func_status -MYSQLND_METHOD(mysqlnd_res, free_result)(MYSQLND_RES * result, zend_bool implicit) +MYSQLND_METHOD(mysqlnd_res, free_result)(MYSQLND_RES * result, const zend_bool implicit)  {  	DBG_ENTER("mysqlnd_res::free_result"); diff --git a/ext/mysqlnd/mysqlnd_result_meta.c b/ext/mysqlnd/mysqlnd_result_meta.c index 85c9794583..bb6133471e 100644 --- a/ext/mysqlnd/mysqlnd_result_meta.c +++ b/ext/mysqlnd/mysqlnd_result_meta.c @@ -171,7 +171,7 @@ MYSQLND_METHOD(mysqlnd_res_meta, free)(MYSQLND_RES_METADATA * meta)  /* {{{ mysqlnd_res::clone_metadata */  static MYSQLND_RES_METADATA * -MYSQLND_METHOD(mysqlnd_res_meta, clone_metadata)(const MYSQLND_RES_METADATA * const meta, zend_bool persistent) +MYSQLND_METHOD(mysqlnd_res_meta, clone_metadata)(const MYSQLND_RES_METADATA * const meta, const zend_bool persistent)  {  	unsigned int i;  	/* +1 is to have empty marker at the end */ diff --git a/ext/mysqlnd/mysqlnd_structs.h b/ext/mysqlnd/mysqlnd_structs.h index 9c7bfda277..ba5a525877 100644 --- a/ext/mysqlnd/mysqlnd_structs.h +++ b/ext/mysqlnd/mysqlnd_structs.h @@ -395,8 +395,8 @@ MYSQLND_CLASS_METHODS_TYPE(mysqlnd_object_factory)  typedef enum_func_status	(*func_mysqlnd_conn_data__connect)(MYSQLND_CONN_DATA * conn, MYSQLND_CSTRING hostname, MYSQLND_CSTRING username, MYSQLND_CSTRING password, MYSQLND_CSTRING database, unsigned int port, MYSQLND_CSTRING socket_or_pipe, unsigned int mysql_flags);  typedef zend_ulong			(*func_mysqlnd_conn_data__escape_string)(MYSQLND_CONN_DATA * const conn, char *newstr, const char *escapestr, size_t escapestr_len);  typedef enum_func_status	(*func_mysqlnd_conn_data__set_charset)(MYSQLND_CONN_DATA * const conn, const char * const charset); -typedef enum_func_status	(*func_mysqlnd_conn_data__query)(MYSQLND_CONN_DATA * conn, const char * query, unsigned int query_len); -typedef enum_func_status	(*func_mysqlnd_conn_data__send_query)(MYSQLND_CONN_DATA * conn, const char *query, unsigned int query_len, enum_mysqlnd_send_query_type type, zval *read_cb, zval *err_cb); +typedef enum_func_status	(*func_mysqlnd_conn_data__query)(MYSQLND_CONN_DATA * conn, const char * const query, const size_t query_len); +typedef enum_func_status	(*func_mysqlnd_conn_data__send_query)(MYSQLND_CONN_DATA * conn, const char * const query, const size_t query_len, enum_mysqlnd_send_query_type type, zval *read_cb, zval *err_cb);  typedef enum_func_status	(*func_mysqlnd_conn_data__reap_query)(MYSQLND_CONN_DATA * conn, enum_mysqlnd_reap_result_type type);  typedef MYSQLND_RES *		(*func_mysqlnd_conn_data__use_result)(MYSQLND_CONN_DATA * const conn, const unsigned int flags);  typedef MYSQLND_RES *		(*func_mysqlnd_conn_data__store_result)(MYSQLND_CONN_DATA * const conn, const unsigned int flags); @@ -410,7 +410,7 @@ typedef enum_func_status	(*func_mysqlnd_conn_data__refresh_server)(MYSQLND_CONN_  typedef enum_func_status	(*func_mysqlnd_conn_data__ping)(MYSQLND_CONN_DATA * const conn);  typedef enum_func_status	(*func_mysqlnd_conn_data__kill_connection)(MYSQLND_CONN_DATA * conn, unsigned int pid); -typedef enum_func_status	(*func_mysqlnd_conn_data__select_db)(MYSQLND_CONN_DATA * const conn, const char * const db, unsigned int db_len); +typedef enum_func_status	(*func_mysqlnd_conn_data__select_db)(MYSQLND_CONN_DATA * const conn, const char * const db, const size_t db_len);  typedef enum_func_status	(*func_mysqlnd_conn_data__server_dump_debug_information)(MYSQLND_CONN_DATA * const conn);  typedef enum_func_status	(*func_mysqlnd_conn_data__change_user)(MYSQLND_CONN_DATA * const conn, const char * user, const char * passwd, const char * db, zend_bool silent, size_t passwd_len); @@ -427,7 +427,7 @@ typedef const char *		(*func_mysqlnd_conn_data__get_host_information)(const MYSQ  typedef unsigned int		(*func_mysqlnd_conn_data__get_protocol_information)(const MYSQLND_CONN_DATA * const conn);  typedef const char *		(*func_mysqlnd_conn_data__get_last_message)(const MYSQLND_CONN_DATA * const conn);  typedef const char *		(*func_mysqlnd_conn_data__charset_name)(const MYSQLND_CONN_DATA * const conn); -typedef MYSQLND_RES *		(*func_mysqlnd_conn_data__list_method)(MYSQLND_CONN_DATA * conn, const char * query, const char * achtung_wild, char *par1); +typedef MYSQLND_RES *		(*func_mysqlnd_conn_data__list_method)(MYSQLND_CONN_DATA * conn, const char * const query, const char * const achtung_wild, const char * const par1);  typedef uint64_t			(*func_mysqlnd_conn_data__get_last_insert_id)(const MYSQLND_CONN_DATA * const conn);  typedef uint64_t			(*func_mysqlnd_conn_data__get_affected_rows)(const MYSQLND_CONN_DATA * const conn); @@ -467,8 +467,8 @@ typedef void				(*func_mysqlnd_conn_data__tx_cor_options_to_string)(const MYSQLN  typedef enum_func_status	(*func_mysqlnd_conn_data__tx_savepoint)(MYSQLND_CONN_DATA * conn, const char * const name);  typedef enum_func_status	(*func_mysqlnd_conn_data__tx_savepoint_release)(MYSQLND_CONN_DATA * conn, const char * const name); -typedef enum_func_status	(*func_mysqlnd_conn_data__local_tx_start)(MYSQLND_CONN_DATA * conn, size_t this_func); -typedef enum_func_status	(*func_mysqlnd_conn_data__local_tx_end)(MYSQLND_CONN_DATA * conn, size_t this_func, enum_func_status status); +typedef enum_func_status	(*func_mysqlnd_conn_data__local_tx_start)(MYSQLND_CONN_DATA * conn, const size_t this_func); +typedef enum_func_status	(*func_mysqlnd_conn_data__local_tx_end)(MYSQLND_CONN_DATA * conn, const size_t this_func, const enum_func_status status);  typedef enum_func_status	(*func_mysqlnd_conn_data__execute_init_commands)(MYSQLND_CONN_DATA * conn);  typedef unsigned int		(*func_mysqlnd_conn_data__get_updated_connect_flags)(MYSQLND_CONN_DATA * conn, unsigned int mysql_flags);  typedef enum_func_status	(*func_mysqlnd_conn_data__connect_handshake)(MYSQLND_CONN_DATA * conn, const MYSQLND_CSTRING * const scheme, const MYSQLND_CSTRING * const username, const MYSQLND_CSTRING * const password, const MYSQLND_CSTRING * const database, const unsigned int mysql_flags); @@ -477,8 +477,8 @@ typedef struct st_mysqlnd_authentication_plugin * (*func_mysqlnd_conn_data__fetc  typedef enum_func_status	(*func_mysqlnd_conn_data__set_client_option_2d)(MYSQLND_CONN_DATA * const conn, enum_mysqlnd_client_option option, const char * const key, const char * const value); -typedef unsigned int		(*func_mysqlnd_conn_data__negotiate_client_api_capabilities)(MYSQLND_CONN_DATA * const conn, const unsigned int flags); -typedef unsigned int		(*func_mysqlnd_conn_data__get_client_api_capabilities)(const MYSQLND_CONN_DATA * const conn); +typedef size_t				(*func_mysqlnd_conn_data__negotiate_client_api_capabilities)(MYSQLND_CONN_DATA * const conn, const size_t flags); +typedef size_t				(*func_mysqlnd_conn_data__get_client_api_capabilities)(const MYSQLND_CONN_DATA * const conn);  typedef MYSQLND_STRING		(*func_mysqlnd_conn_data__get_scheme)(MYSQLND_CONN_DATA * conn, MYSQLND_CSTRING hostname, MYSQLND_CSTRING socket_or_pipe, unsigned int port, zend_bool * unix_socket, zend_bool * named_pipe); @@ -580,7 +580,7 @@ MYSQLND_CLASS_METHODS_TYPE(mysqlnd_conn_data)  typedef enum_func_status	(*func_mysqlnd_data__connect)(MYSQLND * conn, const MYSQLND_CSTRING hostname, const MYSQLND_CSTRING username, const MYSQLND_CSTRING password, const MYSQLND_CSTRING database, unsigned int port, const MYSQLND_CSTRING socket_or_pipe, unsigned int mysql_flags);  typedef MYSQLND *			(*func_mysqlnd_conn__clone_object)(MYSQLND * const conn);  typedef void				(*func_mysqlnd_conn__dtor)(MYSQLND * conn); -typedef enum_func_status	(*func_mysqlnd_conn__close)(MYSQLND * conn, enum_connection_close_type close_type); +typedef enum_func_status	(*func_mysqlnd_conn__close)(MYSQLND * conn, const enum_connection_close_type close_type);  MYSQLND_CLASS_METHODS_TYPE(mysqlnd_conn)  { @@ -597,7 +597,7 @@ typedef enum_func_status	(*func_mysqlnd_res__row_decoder)(MYSQLND_MEMORY_POOL_CH  									zend_bool as_int_or_float, MYSQLND_STATS * stats); -typedef MYSQLND_RES *		(*func_mysqlnd_res__use_result)(MYSQLND_RES * const result, zend_bool ps_protocol); +typedef MYSQLND_RES *		(*func_mysqlnd_res__use_result)(MYSQLND_RES * const result, const zend_bool ps_protocol);  typedef MYSQLND_RES *		(*func_mysqlnd_res__store_result)(MYSQLND_RES * result, MYSQLND_CONN_DATA * const conn, const unsigned int flags);  typedef void 				(*func_mysqlnd_res__fetch_into)(MYSQLND_RES *result, const unsigned int flags, zval *return_value, enum_mysqlnd_extension ext ZEND_FILE_LINE_DC);  typedef MYSQLND_ROW_C 		(*func_mysqlnd_res__fetch_row_c)(MYSQLND_RES *result); @@ -618,7 +618,7 @@ typedef zend_ulong *		(*func_mysqlnd_res__fetch_lengths)(MYSQLND_RES * const res  typedef enum_func_status	(*func_mysqlnd_res__store_result_fetch_data)(MYSQLND_CONN_DATA * const conn, MYSQLND_RES * result, MYSQLND_RES_METADATA * meta, MYSQLND_MEMORY_POOL_CHUNK *** row_buffers, zend_bool binary_protocol);  typedef void				(*func_mysqlnd_res__free_result_buffers)(MYSQLND_RES * result);	/* private */ -typedef enum_func_status	(*func_mysqlnd_res__free_result)(MYSQLND_RES * result, zend_bool implicit); +typedef enum_func_status	(*func_mysqlnd_res__free_result)(MYSQLND_RES * result, const zend_bool implicit);  typedef void				(*func_mysqlnd_res__free_result_internal)(MYSQLND_RES *result);  typedef void				(*func_mysqlnd_res__free_result_contents)(MYSQLND_RES *result);  typedef void				(*func_mysqlnd_res__free_buffered_data)(MYSQLND_RES *result); @@ -704,7 +704,7 @@ typedef const MYSQLND_FIELD *	(*func_mysqlnd_res_meta__fetch_fields)(MYSQLND_RES  typedef MYSQLND_FIELD_OFFSET	(*func_mysqlnd_res_meta__field_tell)(const MYSQLND_RES_METADATA * const meta);  typedef MYSQLND_FIELD_OFFSET	(*func_mysqlnd_res_meta__field_seek)(MYSQLND_RES_METADATA * const meta, const MYSQLND_FIELD_OFFSET field_offset);  typedef enum_func_status		(*func_mysqlnd_res_meta__read_metadata)(MYSQLND_RES_METADATA * const meta, MYSQLND_CONN_DATA * conn); -typedef MYSQLND_RES_METADATA *	(*func_mysqlnd_res_meta__clone_metadata)(const MYSQLND_RES_METADATA * const meta, zend_bool persistent); +typedef MYSQLND_RES_METADATA *	(*func_mysqlnd_res_meta__clone_metadata)(const MYSQLND_RES_METADATA * const meta, const zend_bool persistent);  typedef void					(*func_mysqlnd_res_meta__free_metadata)(MYSQLND_RES_METADATA * meta);  MYSQLND_CLASS_METHODS_TYPE(mysqlnd_res_meta) @@ -720,7 +720,7 @@ MYSQLND_CLASS_METHODS_TYPE(mysqlnd_res_meta)  }; -typedef enum_func_status	(*func_mysqlnd_stmt__prepare)(MYSQLND_STMT * const stmt, const char * const query, unsigned int query_len); +typedef enum_func_status	(*func_mysqlnd_stmt__prepare)(MYSQLND_STMT * const stmt, const char * const query, const size_t query_len);  typedef enum_func_status	(*func_mysqlnd_stmt__send_execute)(MYSQLND_STMT * const s, enum_mysqlnd_send_execute_type type, zval * read_cb, zval * err_cb);  typedef enum_func_status	(*func_mysqlnd_stmt__execute)(MYSQLND_STMT * const stmt);  typedef MYSQLND_RES *		(*func_mysqlnd_stmt__use_result)(MYSQLND_STMT * const stmt); @@ -865,7 +865,7 @@ typedef struct st_mysqlnd_protocol_command * (*func_mysqlnd__command_factory)(en  typedef struct st_mysqlnd_connection_state MYSQLND_CONNECTION_STATE;  typedef enum mysqlnd_connection_state (*func_mysqlnd_connection_state__get)(const MYSQLND_CONNECTION_STATE * const state_struct); -typedef void (*func_mysqlnd_connection_state__set)(MYSQLND_CONNECTION_STATE * const state_struct, enum mysqlnd_connection_state state); +typedef void (*func_mysqlnd_connection_state__set)(MYSQLND_CONNECTION_STATE * const state_struct, const enum mysqlnd_connection_state state);  MYSQLND_CLASS_METHODS_TYPE(mysqlnd_connection_state) @@ -889,14 +889,10 @@ struct st_mysqlnd_connection_data  	MYSQLND_PROTOCOL_PAYLOAD_DECODER_FACTORY * payload_decoder_factory;  /* Information related */ -	char			*host; -	unsigned int	host_len; -	char			*unix_socket; -	unsigned int	unix_socket_len; -	char			*user; -	unsigned int	user_len; -	char			*passwd; -	unsigned int	passwd_len; +	MYSQLND_STRING	hostname; +	MYSQLND_STRING	unix_socket; +	MYSQLND_STRING	username; +	MYSQLND_STRING	password;  	MYSQLND_STRING	scheme;  	uint64_t		thread_id;  	char			*server_version; @@ -944,7 +940,7 @@ struct st_mysqlnd_connection_data  	/* stats */  	MYSQLND_STATS	* stats; -	unsigned int	client_api_capabilities; +	size_t			client_api_capabilities;  	zval			async_read_cb;  	zval			async_err_cb; | 
