- rename MYSQLND_NET to MYSQLND_PPEC (protocol packet envelope codec).
  PPEC does only the encoding and decoding to the protocol frame.
This commit is contained in:
Andrey Hristov 2015-11-10 11:02:33 +01:00
parent 80d59a3a36
commit 654d1a7caf
13 changed files with 246 additions and 234 deletions

View File

@ -342,7 +342,7 @@ MYSQLND_METHOD_PRIVATE(mysqlnd_conn_data, dtor)(MYSQLND_CONN_DATA * conn)
conn->m->free_options(conn); conn->m->free_options(conn);
if (conn->net) { if (conn->net) {
mysqlnd_net_free(conn->net, conn->stats, conn->error_info); mysqlnd_ppec_free(conn->net, conn->stats, conn->error_info);
conn->net = NULL; conn->net = NULL;
} }
@ -664,7 +664,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, execute_init_commands)(MYSQLND_CONN_DATA * con
static unsigned int static unsigned int
MYSQLND_METHOD(mysqlnd_conn_data, get_updated_connect_flags)(MYSQLND_CONN_DATA * conn, unsigned int mysql_flags) MYSQLND_METHOD(mysqlnd_conn_data, get_updated_connect_flags)(MYSQLND_CONN_DATA * conn, unsigned int mysql_flags)
{ {
MYSQLND_NET * net = conn->net; MYSQLND_PPEC * net = conn->net;
MYSQLND_VIO * vio = conn->vio; MYSQLND_VIO * vio = conn->vio;
DBG_ENTER("mysqlnd_conn_data::get_updated_connect_flags"); DBG_ENTER("mysqlnd_conn_data::get_updated_connect_flags");
@ -784,10 +784,8 @@ MYSQLND_METHOD(mysqlnd_conn_data, connect)(MYSQLND_CONN_DATA * conn,
zend_bool reconnect = FALSE; zend_bool reconnect = FALSE;
zend_bool saved_compression = FALSE; zend_bool saved_compression = FALSE;
zend_bool local_tx_started = FALSE; zend_bool local_tx_started = FALSE;
MYSQLND_NET * net = conn->net; MYSQLND_PPEC * net = conn->net;
MYSQLND_STRING transport = { NULL, 0 }; MYSQLND_STRING transport = { NULL, 0 };
// char * transport = NULL;
// int transport_len;
DBG_ENTER("mysqlnd_conn_data::connect"); DBG_ENTER("mysqlnd_conn_data::connect");
DBG_INF_FMT("conn=%p", conn); DBG_INF_FMT("conn=%p", conn);

View File

@ -360,7 +360,7 @@ mysqlnd_native_auth_get_auth_data(struct st_mysqlnd_authentication_plugin * self
MYSQLND_CONN_DATA * conn, const char * const user, const char * const passwd, MYSQLND_CONN_DATA * conn, const char * const user, const char * const passwd,
const size_t passwd_len, zend_uchar * auth_plugin_data, size_t auth_plugin_data_len, const size_t passwd_len, zend_uchar * auth_plugin_data, size_t auth_plugin_data_len,
const MYSQLND_SESSION_OPTIONS * const session_options, const MYSQLND_SESSION_OPTIONS * const session_options,
const MYSQLND_NET_OPTIONS * const io_options, const MYSQLND_PPEC_OPTIONS * const ppec_options,
zend_ulong mysql_flags zend_ulong mysql_flags
) )
{ {
@ -420,7 +420,7 @@ mysqlnd_pam_auth_get_auth_data(struct st_mysqlnd_authentication_plugin * self,
MYSQLND_CONN_DATA * conn, const char * const user, const char * const passwd, MYSQLND_CONN_DATA * conn, const char * const user, const char * const passwd,
const size_t passwd_len, zend_uchar * auth_plugin_data, size_t auth_plugin_data_len, const size_t passwd_len, zend_uchar * auth_plugin_data, size_t auth_plugin_data_len,
const MYSQLND_SESSION_OPTIONS * const session_options, const MYSQLND_SESSION_OPTIONS * const session_options,
const MYSQLND_NET_OPTIONS * const io_options, const MYSQLND_PPEC_OPTIONS * const ppec_options,
zend_ulong mysql_flags zend_ulong mysql_flags
) )
{ {
@ -481,7 +481,7 @@ mysqlnd_xor_string(char * dst, const size_t dst_len, const char * xor_str, const
static RSA * static RSA *
mysqlnd_sha256_get_rsa_key(MYSQLND_CONN_DATA * conn, mysqlnd_sha256_get_rsa_key(MYSQLND_CONN_DATA * conn,
const MYSQLND_SESSION_OPTIONS * const session_options, const MYSQLND_SESSION_OPTIONS * const session_options,
const MYSQLND_NET_OPTIONS * const io_options const MYSQLND_PPEC_OPTIONS * const io_options
) )
{ {
RSA * ret = NULL; RSA * ret = NULL;
@ -570,7 +570,7 @@ mysqlnd_sha256_auth_get_auth_data(struct st_mysqlnd_authentication_plugin * self
MYSQLND_CONN_DATA * conn, const char * const user, const char * const passwd, MYSQLND_CONN_DATA * conn, const char * const user, const char * const passwd,
const size_t passwd_len, zend_uchar * auth_plugin_data, size_t auth_plugin_data_len, const size_t passwd_len, zend_uchar * auth_plugin_data, size_t auth_plugin_data_len,
const MYSQLND_SESSION_OPTIONS * const session_options, const MYSQLND_SESSION_OPTIONS * const session_options,
const MYSQLND_NET_OPTIONS * const io_options, const MYSQLND_PPEC_OPTIONS * const ppec_options,
zend_ulong mysql_flags zend_ulong mysql_flags
) )
{ {
@ -588,7 +588,7 @@ mysqlnd_sha256_auth_get_auth_data(struct st_mysqlnd_authentication_plugin * self
memcpy(ret, passwd, passwd_len); memcpy(ret, passwd, passwd_len);
} else { } else {
*auth_data_len = 0; *auth_data_len = 0;
server_public_key = mysqlnd_sha256_get_rsa_key(conn, session_options, io_options); server_public_key = mysqlnd_sha256_get_rsa_key(conn, session_options, ppec_options);
if (server_public_key) { if (server_public_key) {
int server_public_key_len; int server_public_key_len;

View File

@ -140,7 +140,7 @@ MYSQLND_METHOD(mysqlnd_object_factory, get_connection)(struct st_mysqlnd_object_
mysqlnd_stats_init(&data->stats, STAT_LAST, persistent); mysqlnd_stats_init(&data->stats, STAT_LAST, persistent);
data->net = mysqlnd_net_init(persistent, data->stats, data->error_info); data->net = mysqlnd_ppec_init(persistent, data->stats, data->error_info);
data->vio = mysqlnd_vio_init(persistent, data->stats, data->error_info); data->vio = mysqlnd_vio_init(persistent, data->stats, data->error_info);
data->payload_decoder_factory = mysqlnd_protocol_payload_decoder_factory_init(data, persistent); data->payload_decoder_factory = mysqlnd_protocol_payload_decoder_factory_init(data, persistent);
data->command_factory = mysqlnd_command_factory_get(); data->command_factory = mysqlnd_command_factory_get();
@ -243,37 +243,37 @@ MYSQLND_METHOD(mysqlnd_object_factory, get_prepared_statement)(MYSQLND_CONN_DATA
/* }}} */ /* }}} */
/* {{{ mysqlnd_object_factory::get_net */ /* {{{ mysqlnd_object_factory::get_ppec */
static MYSQLND_NET * static MYSQLND_PPEC *
MYSQLND_METHOD(mysqlnd_object_factory, get_net)(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info) MYSQLND_METHOD(mysqlnd_object_factory, get_ppec)(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info)
{ {
size_t net_alloc_size = sizeof(MYSQLND_NET) + mysqlnd_plugin_count() * sizeof(void *); size_t ppec_alloc_size = sizeof(MYSQLND_PPEC) + mysqlnd_plugin_count() * sizeof(void *);
size_t net_data_alloc_size = sizeof(MYSQLND_NET_DATA) + mysqlnd_plugin_count() * sizeof(void *); size_t ppec_data_alloc_size = sizeof(MYSQLND_PPEC_DATA) + mysqlnd_plugin_count() * sizeof(void *);
MYSQLND_NET * net = mnd_pecalloc(1, net_alloc_size, persistent); MYSQLND_PPEC * ppec = mnd_pecalloc(1, ppec_alloc_size, persistent);
MYSQLND_NET_DATA * net_data = mnd_pecalloc(1, net_data_alloc_size, persistent); MYSQLND_PPEC_DATA * ppec_data = mnd_pecalloc(1, ppec_data_alloc_size, persistent);
DBG_ENTER("mysqlnd_object_factory::get_net"); DBG_ENTER("mysqlnd_object_factory::get_ppec");
DBG_INF_FMT("persistent=%u", persistent); DBG_INF_FMT("persistent=%u", persistent);
if (net && net_data) { if (ppec && ppec_data) {
net->data = net_data; ppec->data = ppec_data;
net->persistent = net->data->persistent = persistent; ppec->persistent = ppec->data->persistent = persistent;
net->data->m = *mysqlnd_net_get_methods(); ppec->data->m = *mysqlnd_ppec_get_methods();
if (PASS != net->data->m.init(net, stats, error_info)) { if (PASS != ppec->data->m.init(ppec, stats, error_info)) {
net->data->m.dtor(net, stats, error_info); ppec->data->m.dtor(ppec, stats, error_info);
net = NULL; ppec = NULL;
} }
} else { } else {
if (net_data) { if (ppec_data) {
mnd_pefree(net_data, persistent); mnd_pefree(ppec_data, persistent);
net_data = NULL; ppec_data = NULL;
} }
if (net) { if (ppec) {
mnd_pefree(net, persistent); mnd_pefree(ppec, persistent);
net = NULL; ppec = NULL;
} }
} }
DBG_RETURN(net); DBG_RETURN(ppec);
} }
/* }}} */ /* }}} */
@ -337,7 +337,7 @@ PHPAPI MYSQLND_CLASS_METHODS_START(mysqlnd_object_factory)
MYSQLND_METHOD(mysqlnd_object_factory, get_connection), MYSQLND_METHOD(mysqlnd_object_factory, get_connection),
MYSQLND_METHOD(mysqlnd_object_factory, clone_connection_object), MYSQLND_METHOD(mysqlnd_object_factory, clone_connection_object),
MYSQLND_METHOD(mysqlnd_object_factory, get_prepared_statement), MYSQLND_METHOD(mysqlnd_object_factory, get_prepared_statement),
MYSQLND_METHOD(mysqlnd_object_factory, get_net), MYSQLND_METHOD(mysqlnd_object_factory, get_ppec),
MYSQLND_METHOD(mysqlnd_object_factory, get_vio), MYSQLND_METHOD(mysqlnd_object_factory, get_vio),
MYSQLND_METHOD(mysqlnd_object_factory, get_protocol_payload_decoder_factory) MYSQLND_METHOD(mysqlnd_object_factory, get_protocol_payload_decoder_factory)
MYSQLND_CLASS_METHODS_END; MYSQLND_CLASS_METHODS_END;

View File

@ -140,16 +140,30 @@ mysqlnd_plugin__get_plugin_stmt_data(const MYSQLND_STMT * stmt, unsigned int plu
/* }}} */ /* }}} */
/* {{{ mysqlnd_plugin__get_plugin_net_data */ /* {{{ mysqlnd_plugin__get_plugin_ppec_data */
static void ** static void **
mysqlnd_plugin__get_plugin_net_data(const MYSQLND_NET * net, unsigned int plugin_id) mysqlnd_plugin__get_plugin_ppec_data(const MYSQLND_PPEC * ppec, unsigned int plugin_id)
{ {
DBG_ENTER("_mysqlnd_plugin__get_plugin_net_data"); DBG_ENTER("mysqlnd_plugin__get_plugin_ppec_data");
DBG_INF_FMT("plugin_id=%u", plugin_id); DBG_INF_FMT("plugin_id=%u", plugin_id);
if (!net || plugin_id >= mysqlnd_plugin_count()) { if (!ppec || plugin_id >= mysqlnd_plugin_count()) {
return NULL; return NULL;
} }
DBG_RETURN((void *)((char *)net + sizeof(MYSQLND_NET) + plugin_id * sizeof(void *))); DBG_RETURN((void *)((char *)ppec + sizeof(MYSQLND_PPEC) + plugin_id * sizeof(void *)));
}
/* }}} */
/* {{{ _mysqlnd_plugin__get_plugin_vio_data */
static void **
mysqlnd_plugin__get_plugin_vio_data(const MYSQLND_VIO * vio, unsigned int plugin_id)
{
DBG_ENTER("_mysqlnd_plugin__get_plugin_vio_data");
DBG_INF_FMT("plugin_id=%u", plugin_id);
if (!vio || plugin_id >= mysqlnd_plugin_count()) {
return NULL;
}
DBG_RETURN((void *)((char *)vio + sizeof(MYSQLND_VIO) + plugin_id * sizeof(void *)));
} }
/* }}} */ /* }}} */
@ -163,7 +177,8 @@ struct st_mysqlnd_plugin__plugin_area_getters mysqlnd_plugin_area_getters =
mysqlnd_plugin__get_plugin_result_buffered_data_c, mysqlnd_plugin__get_plugin_result_buffered_data_c,
mysqlnd_plugin__get_plugin_stmt_data, mysqlnd_plugin__get_plugin_stmt_data,
mysqlnd_plugin__get_plugin_protocol_data, mysqlnd_plugin__get_plugin_protocol_data,
mysqlnd_plugin__get_plugin_net_data, mysqlnd_plugin__get_plugin_ppec_data,
mysqlnd_plugin__get_plugin_vio_data,
}; };
@ -309,20 +324,20 @@ _mysqlnd_protocol_payload_decoder_factory_set_methods(MYSQLND_CLASS_METHODS_TYPE
/* }}} */ /* }}} */
/* {{{ _mysqlnd_net_get_methods */ /* {{{ _mysqlnd_ppec_get_methods */
static MYSQLND_CLASS_METHODS_TYPE(mysqlnd_net) * static MYSQLND_CLASS_METHODS_TYPE(mysqlnd_protocol_packet_envelope_codec) *
_mysqlnd_net_get_methods() _mysqlnd_ppec_get_methods()
{ {
return &MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_net); return &MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_protocol_packet_envelope_codec);
} }
/* }}} */ /* }}} */
/* {{{ _mysqlnd_net_set_methods */ /* {{{ _mysqlnd_ppec_set_methods */
static void static void
_mysqlnd_net_set_methods(MYSQLND_CLASS_METHODS_TYPE(mysqlnd_net) * methods) _mysqlnd_ppec_set_methods(MYSQLND_CLASS_METHODS_TYPE(mysqlnd_protocol_packet_envelope_codec) * methods)
{ {
MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_net) = *methods; MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_protocol_packet_envelope_codec) = *methods;
} }
/* }}} */ /* }}} */
@ -416,8 +431,8 @@ struct st_mysqlnd_plugin_methods_xetters mysqlnd_plugin_methods_xetters =
_mysqlnd_protocol_payload_decoder_factory_set_methods, _mysqlnd_protocol_payload_decoder_factory_set_methods,
}, },
{ {
_mysqlnd_net_get_methods, _mysqlnd_ppec_get_methods,
_mysqlnd_net_set_methods, _mysqlnd_ppec_set_methods,
}, },
{ {
_mysqlnd_vio_get_methods, _mysqlnd_vio_get_methods,

View File

@ -31,7 +31,8 @@ struct st_mysqlnd_plugin__plugin_area_getters
void ** (*get_result_buffered_aread_c)(const MYSQLND_RES_BUFFERED_C * result, unsigned int plugin_id); void ** (*get_result_buffered_aread_c)(const MYSQLND_RES_BUFFERED_C * result, unsigned int plugin_id);
void ** (*get_stmt_area)(const MYSQLND_STMT * stmt, unsigned int plugin_id); void ** (*get_stmt_area)(const MYSQLND_STMT * stmt, unsigned int plugin_id);
void ** (*get_protocol_decoder_area)(const MYSQLND_PROTOCOL_PAYLOAD_DECODER_FACTORY * factory, unsigned int plugin_id); void ** (*get_protocol_decoder_area)(const MYSQLND_PROTOCOL_PAYLOAD_DECODER_FACTORY * factory, unsigned int plugin_id);
void ** (*get_net_area)(const MYSQLND_NET * net, unsigned int plugin_id); void ** (*get_ppec_area)(const MYSQLND_PPEC * ppec, unsigned int plugin_id);
void ** (*get_vio_area)(const MYSQLND_VIO * vio, unsigned int plugin_id);
}; };
extern struct st_mysqlnd_plugin__plugin_area_getters mysqlnd_plugin_area_getters; extern struct st_mysqlnd_plugin__plugin_area_getters mysqlnd_plugin_area_getters;
@ -44,7 +45,8 @@ extern struct st_mysqlnd_plugin__plugin_area_getters mysqlnd_plugin_area_getters
#define mysqlnd_plugin_get_plugin_result_buffered_data_c(res, p_id) mysqlnd_plugin_area_getters.get_result_buffered_aread_c((res), (p_id)) #define mysqlnd_plugin_get_plugin_result_buffered_data_c(res, p_id) mysqlnd_plugin_area_getters.get_result_buffered_aread_c((res), (p_id))
#define mysqlnd_plugin_get_plugin_stmt_data(stmt, p_id) mysqlnd_plugin_area_getters.get_stmt_area((stmt), (p_id)) #define mysqlnd_plugin_get_plugin_stmt_data(stmt, p_id) mysqlnd_plugin_area_getters.get_stmt_area((stmt), (p_id))
#define mysqlnd_plugin_get_plugin_protocol_data(proto, p_id) mysqlnd_plugin_area_getters.get_protocol_decoder_area((proto), (p_id)) #define mysqlnd_plugin_get_plugin_protocol_data(proto, p_id) mysqlnd_plugin_area_getters.get_protocol_decoder_area((proto), (p_id))
#define mysqlnd_plugin_get_plugin_net_data(net, p_id) mysqlnd_plugin_area_getters.get_net_area((net), (p_id)) #define mysqlnd_plugin_get_plugin_ppec_data(ppec, p_id) mysqlnd_plugin_area_getters.get_ppec_area((ppec), (p_id))
#define mysqlnd_plugin_get_plugin_vio_data(vio, p_id) mysqlnd_plugin_area_getters.get_ppec_area((vio), (p_id))
struct st_mysqlnd_plugin_methods_xetters struct st_mysqlnd_plugin_methods_xetters
@ -97,11 +99,11 @@ struct st_mysqlnd_plugin_methods_xetters
void (*set)(MYSQLND_CLASS_METHODS_TYPE(mysqlnd_protocol_payload_decoder_factory) *methods); void (*set)(MYSQLND_CLASS_METHODS_TYPE(mysqlnd_protocol_payload_decoder_factory) *methods);
} protocol; } protocol;
struct st_mnd_net_xetters struct st_mnd_ppec_xetters
{ {
MYSQLND_CLASS_METHODS_TYPE(mysqlnd_net) * (*get)(); MYSQLND_CLASS_METHODS_TYPE(mysqlnd_protocol_packet_envelope_codec) * (*get)();
void (*set)(MYSQLND_CLASS_METHODS_TYPE(mysqlnd_net) * methods); void (*set)(MYSQLND_CLASS_METHODS_TYPE(mysqlnd_protocol_packet_envelope_codec) * methods);
} net; } ppec;
struct st_mnd_vio_xetters struct st_mnd_vio_xetters
{ {
@ -149,8 +151,8 @@ extern struct st_mysqlnd_plugin_methods_xetters mysqlnd_plugin_methods_xetters;
#define mysqlnd_protocol_get_methods() mysqlnd_plugin_methods_xetters.protocol.get() #define mysqlnd_protocol_get_methods() mysqlnd_plugin_methods_xetters.protocol.get()
#define mysqlnd_protocol_set_methods(m) mysqlnd_plugin_methods_xetters.protocol.set((m)) #define mysqlnd_protocol_set_methods(m) mysqlnd_plugin_methods_xetters.protocol.set((m))
#define mysqlnd_net_get_methods() mysqlnd_plugin_methods_xetters.net.get() #define mysqlnd_ppec_get_methods() mysqlnd_plugin_methods_xetters.ppec.get()
#define mysqlnd_net_set_methods(m) mysqlnd_plugin_methods_xetters.net.set((m)) #define mysqlnd_ppec_set_methods(m) mysqlnd_plugin_methods_xetters.ppec.set((m))
#define mysqlnd_vio_get_methods() mysqlnd_plugin_methods_xetters.vio.get() #define mysqlnd_vio_get_methods() mysqlnd_plugin_methods_xetters.vio.get()
#define mysqlnd_vio_set_methods(m) mysqlnd_plugin_methods_xetters.vio.set((m)) #define mysqlnd_vio_set_methods(m) mysqlnd_plugin_methods_xetters.vio.set((m))

View File

@ -151,7 +151,7 @@ mysqlnd_handle_local_infile(MYSQLND_CONN_DATA * conn, const char * const filenam
int bufsize; int bufsize;
size_t ret; size_t ret;
MYSQLND_INFILE infile; MYSQLND_INFILE infile;
MYSQLND_NET * net = conn->net; MYSQLND_PPEC * net = conn->net;
MYSQLND_VIO * vio = conn->vio; MYSQLND_VIO * vio = conn->vio;
DBG_ENTER("mysqlnd_handle_local_infile"); DBG_ENTER("mysqlnd_handle_local_infile");

View File

@ -154,7 +154,7 @@ PHPAPI extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_res);
PHPAPI extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_result_unbuffered); PHPAPI extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_result_unbuffered);
PHPAPI extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_result_buffered); PHPAPI extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_result_buffered);
PHPAPI extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_protocol_payload_decoder_factory); PHPAPI extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_protocol_payload_decoder_factory);
PHPAPI extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_net); PHPAPI extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_protocol_packet_envelope_codec);
PHPAPI extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_vio); PHPAPI extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_vio);
PHPAPI extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_upsert_status); PHPAPI extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_upsert_status);
PHPAPI extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_error_info); PHPAPI extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_error_info);

View File

@ -2185,15 +2185,15 @@ MYSQLND_METHOD(mysqlnd_stmt, free_stmt_content)(MYSQLND_STMT * const s)
/* }}} */ /* }}} */
/* {{{ mysqlnd_stmt::net_close */ /* {{{ mysqlnd_stmt::close_on_server */
static enum_func_status static enum_func_status
MYSQLND_METHOD_PRIVATE(mysqlnd_stmt, net_close)(MYSQLND_STMT * const s, zend_bool implicit) MYSQLND_METHOD_PRIVATE(mysqlnd_stmt, close_on_server)(MYSQLND_STMT * const s, zend_bool implicit)
{ {
MYSQLND_STMT_DATA * stmt = s? s->data:NULL; MYSQLND_STMT_DATA * stmt = s? s->data:NULL;
MYSQLND_CONN_DATA * conn; MYSQLND_CONN_DATA * conn;
enum_mysqlnd_collected_stats statistic = STAT_LAST; enum_mysqlnd_collected_stats statistic = STAT_LAST;
DBG_ENTER("mysqlnd_stmt::net_close"); DBG_ENTER("mysqlnd_stmt::close_on_server");
if (!stmt || !stmt->conn) { if (!stmt || !stmt->conn) {
DBG_RETURN(FAIL); DBG_RETURN(FAIL);
} }
@ -2292,7 +2292,7 @@ MYSQLND_METHOD(mysqlnd_stmt, dtor)(MYSQLND_STMT * const s, zend_bool implicit)
MYSQLND_INC_GLOBAL_STATISTIC(implicit == TRUE? STAT_STMT_CLOSE_IMPLICIT: MYSQLND_INC_GLOBAL_STATISTIC(implicit == TRUE? STAT_STMT_CLOSE_IMPLICIT:
STAT_STMT_CLOSE_EXPLICIT); STAT_STMT_CLOSE_EXPLICIT);
ret = s->m->net_close(s, implicit); ret = s->m->close_on_server(s, implicit);
mnd_pefree(stmt, persistent); mnd_pefree(stmt, persistent);
} }
mnd_pefree(s, persistent); mnd_pefree(s, persistent);
@ -2368,7 +2368,7 @@ MYSQLND_CLASS_METHODS_START(mysqlnd_stmt)
MYSQLND_METHOD(mysqlnd_stmt, free_result), MYSQLND_METHOD(mysqlnd_stmt, free_result),
MYSQLND_METHOD(mysqlnd_stmt, data_seek), MYSQLND_METHOD(mysqlnd_stmt, data_seek),
MYSQLND_METHOD(mysqlnd_stmt, reset), MYSQLND_METHOD(mysqlnd_stmt, reset),
MYSQLND_METHOD_PRIVATE(mysqlnd_stmt, net_close), MYSQLND_METHOD_PRIVATE(mysqlnd_stmt, close_on_server),
MYSQLND_METHOD(mysqlnd_stmt, dtor), MYSQLND_METHOD(mysqlnd_stmt, dtor),
MYSQLND_METHOD(mysqlnd_stmt, fetch), MYSQLND_METHOD(mysqlnd_stmt, fetch),

View File

@ -234,12 +234,14 @@ typedef struct st_mysqlnd_session_options
#endif #endif
} MYSQLND_SESSION_OPTIONS; } MYSQLND_SESSION_OPTIONS;
typedef struct st_mysqlnd_net_options
typedef struct st_mysqlnd_protocol_packet_envelope_codec_options
{ {
uint64_t flags; uint64_t flags;
char * sha256_server_public_key; char * sha256_server_public_key;
} MYSQLND_NET_OPTIONS; } MYSQLND_PPEC_OPTIONS;
typedef struct st_mysqlnd_vio_options typedef struct st_mysqlnd_vio_options
{ {
@ -270,8 +272,8 @@ typedef struct st_mysqlnd_vio_options
typedef struct st_mysqlnd_connection MYSQLND; typedef struct st_mysqlnd_connection MYSQLND;
typedef struct st_mysqlnd_connection_data MYSQLND_CONN_DATA; typedef struct st_mysqlnd_connection_data MYSQLND_CONN_DATA;
typedef struct st_mysqlnd_net MYSQLND_NET; typedef struct st_mysqlnd_protocol_packet_envelope_codec MYSQLND_PPEC;
typedef struct st_mysqlnd_net_data MYSQLND_NET_DATA; typedef struct st_mysqlnd_protocol_packet_envelope_codec_data MYSQLND_PPEC_DATA;
typedef struct st_mysqlnd_vio MYSQLND_VIO; typedef struct st_mysqlnd_vio MYSQLND_VIO;
typedef struct st_mysqlnd_vio_data MYSQLND_VIO_DATA; typedef struct st_mysqlnd_vio_data MYSQLND_VIO_DATA;
typedef struct st_mysqlnd_protocol_payload_decoder_factory MYSQLND_PROTOCOL_PAYLOAD_DECODER_FACTORY; typedef struct st_mysqlnd_protocol_payload_decoder_factory MYSQLND_PROTOCOL_PAYLOAD_DECODER_FACTORY;
@ -318,49 +320,6 @@ struct st_mysqlnd_stats
}; };
typedef struct st_mysqlnd_read_buffer {
zend_uchar * data;
size_t offset;
size_t size;
size_t len;
zend_bool (*is_empty)(struct st_mysqlnd_read_buffer *);
void (*read)(struct st_mysqlnd_read_buffer *, size_t count, zend_uchar * dest);
size_t (*bytes_left)(struct st_mysqlnd_read_buffer *);
void (*free_buffer)(struct st_mysqlnd_read_buffer **);
} MYSQLND_READ_BUFFER;
typedef enum_func_status (*func_mysqlnd_net__init)(MYSQLND_NET * const net, MYSQLND_STATS * const stats, MYSQLND_ERROR_INFO * const error_info);
typedef void (*func_mysqlnd_net__dtor)(MYSQLND_NET * const net, MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info);
typedef enum_func_status (*func_mysqlnd_net__connect)(MYSQLND_NET * const net, const MYSQLND_CSTRING scheme, const zend_bool persistent, MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info);
typedef enum_func_status (*func_mysqlnd_net__set_client_option)(MYSQLND_NET * const net, enum_mysqlnd_client_option option, const char * const value);
typedef enum_func_status (*func_mysqlnd_net__decode)(zend_uchar * uncompressed_data, const size_t uncompressed_data_len, const zend_uchar * const compressed_data, const size_t compressed_data_len);
typedef enum_func_status (*func_mysqlnd_net__encode)(zend_uchar * compress_buffer, size_t * compress_buffer_len, const zend_uchar * const uncompressed_data, const size_t uncompressed_data_len);
typedef size_t (*func_mysqlnd_net__send)(MYSQLND_NET * const net, MYSQLND_VIO * const vio, zend_uchar * const buffer, const size_t count, MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info);
typedef enum_func_status (*func_mysqlnd_net__receive)(MYSQLND_NET * const net, MYSQLND_VIO * const vio, zend_uchar * const buffer, const size_t count, MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info);
typedef enum_func_status (*func_mysqlnd_net__read_compressed_packet_from_stream_and_fill_read_buffer)(MYSQLND_NET * net, MYSQLND_VIO * const vio, size_t net_payload_size, MYSQLND_STATS * conn_stats, MYSQLND_ERROR_INFO * error_info);
typedef void (*func_mysqlnd_net__free_contents)(MYSQLND_NET * net);
MYSQLND_CLASS_METHODS_TYPE(mysqlnd_net)
{
func_mysqlnd_net__init init;
func_mysqlnd_net__dtor dtor;
func_mysqlnd_net__connect connect;
func_mysqlnd_net__set_client_option set_client_option;
func_mysqlnd_net__decode decode;
func_mysqlnd_net__encode encode;
func_mysqlnd_net__send send;
func_mysqlnd_net__receive receive;
func_mysqlnd_net__read_compressed_packet_from_stream_and_fill_read_buffer read_compressed_packet_from_stream_and_fill_read_buffer;
func_mysqlnd_net__free_contents free_contents;
};
typedef enum_func_status (*func_mysqlnd_vio__init)(MYSQLND_VIO * const vio, MYSQLND_STATS * const stats, MYSQLND_ERROR_INFO * const error_info); typedef enum_func_status (*func_mysqlnd_vio__init)(MYSQLND_VIO * const vio, MYSQLND_STATS * const stats, MYSQLND_ERROR_INFO * const error_info);
typedef void (*func_mysqlnd_vio__dtor)(MYSQLND_VIO * const vio, MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info); typedef void (*func_mysqlnd_vio__dtor)(MYSQLND_VIO * const vio, MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info);
@ -419,7 +378,7 @@ MYSQLND_CLASS_METHODS_TYPE(mysqlnd_object_factory);
typedef MYSQLND * (*func_mysqlnd_object_factory__get_connection)(struct st_mysqlnd_object_factory_methods * factory, zend_bool persistent); typedef MYSQLND * (*func_mysqlnd_object_factory__get_connection)(struct st_mysqlnd_object_factory_methods * factory, zend_bool persistent);
typedef MYSQLND * (*func_mysqlnd_object_factory__clone_connection_object)(MYSQLND * conn); typedef MYSQLND * (*func_mysqlnd_object_factory__clone_connection_object)(MYSQLND * conn);
typedef MYSQLND_STMT * (*func_mysqlnd_object_factory__get_prepared_statement)(MYSQLND_CONN_DATA * conn, zend_bool persistent); typedef MYSQLND_STMT * (*func_mysqlnd_object_factory__get_prepared_statement)(MYSQLND_CONN_DATA * conn, zend_bool persistent);
typedef MYSQLND_NET * (*func_mysqlnd_object_factory__get_net)(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info); typedef MYSQLND_PPEC * (*func_mysqlnd_object_factory__get_net)(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info);
typedef MYSQLND_VIO * (*func_mysqlnd_object_factory__get_vio)(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info); typedef MYSQLND_VIO * (*func_mysqlnd_object_factory__get_vio)(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info);
typedef MYSQLND_PROTOCOL_PAYLOAD_DECODER_FACTORY * (*func_mysqlnd_object_factory__get_protocol_payload_decoder_factory)(MYSQLND_CONN_DATA * conn, zend_bool persistent); typedef MYSQLND_PROTOCOL_PAYLOAD_DECODER_FACTORY * (*func_mysqlnd_object_factory__get_protocol_payload_decoder_factory)(MYSQLND_CONN_DATA * conn, zend_bool persistent);
@ -774,7 +733,7 @@ typedef enum_func_status (*func_mysqlnd_stmt__next_result)(MYSQLND_STMT * const
typedef enum_func_status (*func_mysqlnd_stmt__free_result)(MYSQLND_STMT * const stmt); typedef enum_func_status (*func_mysqlnd_stmt__free_result)(MYSQLND_STMT * const stmt);
typedef enum_func_status (*func_mysqlnd_stmt__seek_data)(const MYSQLND_STMT * const stmt, uint64_t row); typedef enum_func_status (*func_mysqlnd_stmt__seek_data)(const MYSQLND_STMT * const stmt, uint64_t row);
typedef enum_func_status (*func_mysqlnd_stmt__reset)(MYSQLND_STMT * const stmt); typedef enum_func_status (*func_mysqlnd_stmt__reset)(MYSQLND_STMT * const stmt);
typedef enum_func_status (*func_mysqlnd_stmt__net_close)(MYSQLND_STMT * const stmt, zend_bool implicit); /* private */ typedef enum_func_status (*func_mysqlnd_stmt__close_on_server)(MYSQLND_STMT * const stmt, zend_bool implicit); /* private */
typedef enum_func_status (*func_mysqlnd_stmt__dtor)(MYSQLND_STMT * const stmt, zend_bool implicit); /* use this for mysqlnd_stmt_close */ typedef enum_func_status (*func_mysqlnd_stmt__dtor)(MYSQLND_STMT * const stmt, zend_bool implicit); /* use this for mysqlnd_stmt_close */
typedef enum_func_status (*func_mysqlnd_stmt__fetch)(MYSQLND_STMT * const stmt, zend_bool * const fetched_anything); typedef enum_func_status (*func_mysqlnd_stmt__fetch)(MYSQLND_STMT * const stmt, zend_bool * const fetched_anything);
typedef enum_func_status (*func_mysqlnd_stmt__bind_parameters)(MYSQLND_STMT * const stmt, MYSQLND_PARAM_BIND * const param_bind); typedef enum_func_status (*func_mysqlnd_stmt__bind_parameters)(MYSQLND_STMT * const stmt, MYSQLND_PARAM_BIND * const param_bind);
@ -820,7 +779,7 @@ MYSQLND_CLASS_METHODS_TYPE(mysqlnd_stmt)
func_mysqlnd_stmt__free_result free_result; func_mysqlnd_stmt__free_result free_result;
func_mysqlnd_stmt__seek_data seek_data; func_mysqlnd_stmt__seek_data seek_data;
func_mysqlnd_stmt__reset reset; func_mysqlnd_stmt__reset reset;
func_mysqlnd_stmt__net_close net_close; func_mysqlnd_stmt__close_on_server close_on_server;
func_mysqlnd_stmt__dtor dtor; func_mysqlnd_stmt__dtor dtor;
func_mysqlnd_stmt__fetch fetch; func_mysqlnd_stmt__fetch fetch;
@ -867,42 +826,6 @@ MYSQLND_CLASS_METHODS_TYPE(mysqlnd_stmt)
}; };
struct st_mysqlnd_net_data
{
php_stream *stream;
zend_bool compressed;
zend_bool ssl;
MYSQLND_NET_OPTIONS options;
unsigned int refcount;
zend_bool persistent;
MYSQLND_CLASS_METHODS_TYPE(mysqlnd_net) m;
};
struct st_mysqlnd_net
{
/* cmd buffer */
// MYSQLND_CMD_BUFFER cmd_buffer;
struct st_mysqlnd_net_data * data;
#ifdef MYSQLND_COMPRESSION_ENABLED
MYSQLND_READ_BUFFER * uncompressed_data;
#else
void * unused_pad1;
#endif
zend_bool persistent;
/* sequence for simple checking of correct packets */
zend_uchar packet_no;
zend_uchar compressed_envelope_packet_no;
};
struct st_mysqlnd_vio_data struct st_mysqlnd_vio_data
{ {
php_stream *stream; php_stream *stream;
@ -963,7 +886,7 @@ struct st_mysqlnd_connection_state
struct st_mysqlnd_connection_data struct st_mysqlnd_connection_data
{ {
/* Operation related */ /* Operation related */
MYSQLND_NET * net; MYSQLND_PPEC * net;
MYSQLND_VIO * vio; MYSQLND_VIO * vio;
MYSQLND_PROTOCOL_PAYLOAD_DECODER_FACTORY * payload_decoder_factory; MYSQLND_PROTOCOL_PAYLOAD_DECODER_FACTORY * payload_decoder_factory;
@ -1152,6 +1075,82 @@ struct st_mysqlnd_protocol_payload_decoder_factory
}; };
typedef struct st_mysqlnd_read_buffer {
zend_uchar * data;
size_t offset;
size_t size;
size_t len;
zend_bool (*is_empty)(struct st_mysqlnd_read_buffer *);
void (*read)(struct st_mysqlnd_read_buffer *, size_t count, zend_uchar * dest);
size_t (*bytes_left)(struct st_mysqlnd_read_buffer *);
void (*free_buffer)(struct st_mysqlnd_read_buffer **);
} MYSQLND_READ_BUFFER;
typedef enum_func_status (*func_mysqlnd_ppec__init)(MYSQLND_PPEC * const net, MYSQLND_STATS * const stats, MYSQLND_ERROR_INFO * const error_info);
typedef void (*func_mysqlnd_ppec__dtor)(MYSQLND_PPEC * const net, MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info);
typedef enum_func_status (*func_mysqlnd_ppec__connect)(MYSQLND_PPEC * const net, const MYSQLND_CSTRING scheme, const zend_bool persistent, MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info);
typedef enum_func_status (*func_mysqlnd_ppec__set_client_option)(MYSQLND_PPEC * const net, enum_mysqlnd_client_option option, const char * const value);
typedef enum_func_status (*func_mysqlnd_ppec__decode)(zend_uchar * uncompressed_data, const size_t uncompressed_data_len, const zend_uchar * const compressed_data, const size_t compressed_data_len);
typedef enum_func_status (*func_mysqlnd_ppec__encode)(zend_uchar * compress_buffer, size_t * compress_buffer_len, const zend_uchar * const uncompressed_data, const size_t uncompressed_data_len);
typedef size_t (*func_mysqlnd_ppec__send)(MYSQLND_PPEC * const net, MYSQLND_VIO * const vio, zend_uchar * const buffer, const size_t count, MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info);
typedef enum_func_status (*func_mysqlnd_ppec__receive)(MYSQLND_PPEC * const net, MYSQLND_VIO * const vio, zend_uchar * const buffer, const size_t count, MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info);
typedef enum_func_status (*func_mysqlnd_ppec__read_compressed_packet_from_stream_and_fill_read_buffer)(MYSQLND_PPEC * net, MYSQLND_VIO * const vio, size_t net_payload_size, MYSQLND_STATS * conn_stats, MYSQLND_ERROR_INFO * error_info);
typedef void (*func_mysqlnd_ppec__free_contents)(MYSQLND_PPEC * net);
MYSQLND_CLASS_METHODS_TYPE(mysqlnd_protocol_packet_envelope_codec)
{
func_mysqlnd_ppec__init init;
func_mysqlnd_ppec__dtor dtor;
func_mysqlnd_ppec__connect connect;
func_mysqlnd_ppec__set_client_option set_client_option;
func_mysqlnd_ppec__decode decode;
func_mysqlnd_ppec__encode encode;
func_mysqlnd_ppec__send send;
func_mysqlnd_ppec__receive receive;
func_mysqlnd_ppec__read_compressed_packet_from_stream_and_fill_read_buffer read_compressed_packet_from_stream_and_fill_read_buffer;
func_mysqlnd_ppec__free_contents free_contents;
};
struct st_mysqlnd_protocol_packet_envelope_codec_data
{
php_stream *stream;
zend_bool compressed;
zend_bool ssl;
MYSQLND_PPEC_OPTIONS options;
unsigned int refcount;
zend_bool persistent;
MYSQLND_CLASS_METHODS_TYPE(mysqlnd_protocol_packet_envelope_codec) m;
};
struct st_mysqlnd_protocol_packet_envelope_codec
{
struct st_mysqlnd_protocol_packet_envelope_codec_data * data;
#ifdef MYSQLND_COMPRESSION_ENABLED
MYSQLND_READ_BUFFER * uncompressed_data;
#else
void * unused_pad1;
#endif
zend_bool persistent;
/* sequence for simple checking of correct packets */
zend_uchar packet_no;
zend_uchar compressed_envelope_packet_no;
};
struct mysqlnd_field_hash_key struct mysqlnd_field_hash_key
{ {
@ -1373,7 +1372,7 @@ typedef zend_uchar * (*func_auth_plugin__get_auth_data)(struct st_mysqlnd_authen
MYSQLND_CONN_DATA * conn, const char * const user, const char * const passwd, MYSQLND_CONN_DATA * conn, const char * const user, const char * const passwd,
const size_t passwd_len, zend_uchar * auth_plugin_data, size_t auth_plugin_data_len, const size_t passwd_len, zend_uchar * auth_plugin_data, size_t auth_plugin_data_len,
const MYSQLND_SESSION_OPTIONS * const session_options, const MYSQLND_SESSION_OPTIONS * const session_options,
const MYSQLND_NET_OPTIONS * const net_options, zend_ulong mysql_flags const MYSQLND_PPEC_OPTIONS * const net_options, zend_ulong mysql_flags
); );
struct st_mysqlnd_authentication_plugin struct st_mysqlnd_authentication_plugin

View File

@ -14,7 +14,6 @@
+----------------------------------------------------------------------+ +----------------------------------------------------------------------+
| Authors: Andrey Hristov <andrey@mysql.com> | | Authors: Andrey Hristov <andrey@mysql.com> |
| Ulf Wendel <uwendel@mysql.com> | | Ulf Wendel <uwendel@mysql.com> |
| Georg Richter <georg@mysql.com> |
+----------------------------------------------------------------------+ +----------------------------------------------------------------------+
*/ */
@ -475,7 +474,7 @@ MYSQLND_METHOD(mysqlnd_vio, consume_uneaten_data)(MYSQLND_VIO * const net, enum
php_stream * net_stream = net->data->get_stream(net); php_stream * net_stream = net->data->get_stream(net);
int was_blocked = net_stream->ops->set_option(net_stream, opt, 0, NULL); int was_blocked = net_stream->ops->set_option(net_stream, opt, 0, NULL);
DBG_ENTER("mysqlnd_net::consume_uneaten_data"); DBG_ENTER("mysqlnd_vio::consume_uneaten_data");
if (PHP_STREAM_OPTION_RETURN_ERR != was_blocked) { if (PHP_STREAM_OPTION_RETURN_ERR != was_blocked) {
/* Do a read of 1 byte */ /* Do a read of 1 byte */
@ -630,7 +629,7 @@ MYSQLND_METHOD(mysqlnd_vio, enable_ssl)(MYSQLND_VIO * const net)
static enum_func_status static enum_func_status
MYSQLND_METHOD(mysqlnd_vio, disable_ssl)(MYSQLND_VIO * const vio) MYSQLND_METHOD(mysqlnd_vio, disable_ssl)(MYSQLND_VIO * const vio)
{ {
DBG_ENTER("mysqlnd_net::disable_ssl"); DBG_ENTER("mysqlnd_vio::disable_ssl");
DBG_RETURN(PASS); DBG_RETURN(PASS);
} }
/* }}} */ /* }}} */

View File

@ -14,22 +14,16 @@
+----------------------------------------------------------------------+ +----------------------------------------------------------------------+
| Authors: Andrey Hristov <andrey@mysql.com> | | Authors: Andrey Hristov <andrey@mysql.com> |
| Ulf Wendel <uwendel@mysql.com> | | Ulf Wendel <uwendel@mysql.com> |
| Georg Richter <georg@mysql.com> |
+----------------------------------------------------------------------+ +----------------------------------------------------------------------+
*/ */
/* $Id: mysqlnd_wireprotocol.h 291983 2009-12-11 11:58:57Z andrey $ */ #ifndef MYSQLND_VIO_H
#define MYSQLND_VIO_H
#ifndef MYSQLND_NET_H
#define MYSQLND_NET_H
PHPAPI MYSQLND_NET * mysqlnd_net_init(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info);
PHPAPI void mysqlnd_net_free(MYSQLND_NET * const net, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info);
PHPAPI MYSQLND_VIO * mysqlnd_vio_init(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info); PHPAPI MYSQLND_VIO * mysqlnd_vio_init(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info);
PHPAPI void mysqlnd_vio_free(MYSQLND_VIO * const vio, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info); PHPAPI void mysqlnd_vio_free(MYSQLND_VIO * const vio, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info);
#endif /* MYSQLND_NET_H */ #endif /* MYSQLND_VIO_H */
/* /*
* Local variables: * Local variables:

View File

@ -248,7 +248,7 @@ end:
/* {{{ mysqlnd_read_header */ /* {{{ mysqlnd_read_header */
static enum_func_status static enum_func_status
mysqlnd_read_header(MYSQLND_NET * net, MYSQLND_VIO * vio, MYSQLND_PACKET_HEADER * header, mysqlnd_read_header(MYSQLND_PPEC * net, MYSQLND_VIO * vio, MYSQLND_PACKET_HEADER * header,
MYSQLND_STATS * conn_stats, MYSQLND_ERROR_INFO * error_info) MYSQLND_STATS * conn_stats, MYSQLND_ERROR_INFO * error_info)
{ {
zend_uchar buffer[MYSQLND_HEADER_SIZE]; zend_uchar buffer[MYSQLND_HEADER_SIZE];
@ -292,7 +292,7 @@ mysqlnd_read_header(MYSQLND_NET * net, MYSQLND_VIO * vio, MYSQLND_PACKET_HEADER
/* {{{ mysqlnd_read_packet_header_and_body */ /* {{{ mysqlnd_read_packet_header_and_body */
static enum_func_status static enum_func_status
mysqlnd_read_packet_header_and_body(MYSQLND_PACKET_HEADER * packet_header, mysqlnd_read_packet_header_and_body(MYSQLND_PACKET_HEADER * packet_header,
MYSQLND_NET * net, MYSQLND_PPEC * net,
MYSQLND_VIO * vio, MYSQLND_VIO * vio,
MYSQLND_STATS * stats, MYSQLND_STATS * stats,
MYSQLND_ERROR_INFO * error_info, MYSQLND_ERROR_INFO * error_info,
@ -340,7 +340,7 @@ php_mysqlnd_greet_read(void * _packet)
zend_uchar *pad_start = NULL; zend_uchar *pad_start = NULL;
MYSQLND_PACKET_GREET *packet= (MYSQLND_PACKET_GREET *) _packet; MYSQLND_PACKET_GREET *packet= (MYSQLND_PACKET_GREET *) _packet;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info; MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
MYSQLND_NET * net = packet->header.net; MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio; MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats; MYSQLND_STATS * stats = packet->header.stats;
MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state; MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state;
@ -509,7 +509,7 @@ size_t php_mysqlnd_auth_write(void * _packet)
MYSQLND_PACKET_AUTH * packet= (MYSQLND_PACKET_AUTH *) _packet; MYSQLND_PACKET_AUTH * packet= (MYSQLND_PACKET_AUTH *) _packet;
MYSQLND_CONN_DATA * conn = packet->header.conn; MYSQLND_CONN_DATA * conn = packet->header.conn;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info; MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
MYSQLND_NET * net = packet->header.net; MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio; MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats; MYSQLND_STATS * stats = packet->header.stats;
MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state; MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state;
@ -671,7 +671,7 @@ php_mysqlnd_auth_response_read(void * _packet)
{ {
register MYSQLND_PACKET_AUTH_RESPONSE * packet= (MYSQLND_PACKET_AUTH_RESPONSE *) _packet; register MYSQLND_PACKET_AUTH_RESPONSE * packet= (MYSQLND_PACKET_AUTH_RESPONSE *) _packet;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info; MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
MYSQLND_NET * net = packet->header.net; MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio; MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats; MYSQLND_STATS * stats = packet->header.stats;
MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state; MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state;
@ -798,7 +798,7 @@ php_mysqlnd_change_auth_response_write(void * _packet)
{ {
MYSQLND_PACKET_CHANGE_AUTH_RESPONSE *packet= (MYSQLND_PACKET_CHANGE_AUTH_RESPONSE *) _packet; MYSQLND_PACKET_CHANGE_AUTH_RESPONSE *packet= (MYSQLND_PACKET_CHANGE_AUTH_RESPONSE *) _packet;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info; MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
MYSQLND_NET * net = packet->header.net; MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio; MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats; MYSQLND_STATS * stats = packet->header.stats;
MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state; MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state;
@ -846,7 +846,7 @@ php_mysqlnd_ok_read(void * _packet)
{ {
register MYSQLND_PACKET_OK *packet= (MYSQLND_PACKET_OK *) _packet; register MYSQLND_PACKET_OK *packet= (MYSQLND_PACKET_OK *) _packet;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info; MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
MYSQLND_NET * net = packet->header.net; MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio; MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats; MYSQLND_STATS * stats = packet->header.stats;
MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state; MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state;
@ -944,7 +944,7 @@ php_mysqlnd_eof_read(void * _packet)
*/ */
MYSQLND_PACKET_EOF *packet= (MYSQLND_PACKET_EOF *) _packet; MYSQLND_PACKET_EOF *packet= (MYSQLND_PACKET_EOF *) _packet;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info; MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
MYSQLND_NET * net = packet->header.net; MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio; MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats; MYSQLND_STATS * stats = packet->header.stats;
MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state; MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state;
@ -1023,7 +1023,7 @@ size_t php_mysqlnd_cmd_write(void * _packet)
/* Let's have some space, which we can use, if not enough, we will allocate new buffer */ /* Let's have some space, which we can use, if not enough, we will allocate new buffer */
MYSQLND_PACKET_COMMAND * packet= (MYSQLND_PACKET_COMMAND *) _packet; MYSQLND_PACKET_COMMAND * packet= (MYSQLND_PACKET_COMMAND *) _packet;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info; MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
MYSQLND_NET * net = packet->header.net; MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio; MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats; MYSQLND_STATS * stats = packet->header.stats;
MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state; MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state;
@ -1104,7 +1104,7 @@ php_mysqlnd_rset_header_read(void * _packet)
{ {
MYSQLND_PACKET_RSET_HEADER * packet= (MYSQLND_PACKET_RSET_HEADER *) _packet; MYSQLND_PACKET_RSET_HEADER * packet= (MYSQLND_PACKET_RSET_HEADER *) _packet;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info; MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
MYSQLND_NET * net = packet->header.net; MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio; MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats; MYSQLND_STATS * stats = packet->header.stats;
MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state; MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state;
@ -1250,7 +1250,7 @@ php_mysqlnd_rset_field_read(void * _packet)
/* Should be enough for the metadata of a single row */ /* Should be enough for the metadata of a single row */
MYSQLND_PACKET_RES_FIELD *packet = (MYSQLND_PACKET_RES_FIELD *) _packet; MYSQLND_PACKET_RES_FIELD *packet = (MYSQLND_PACKET_RES_FIELD *) _packet;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info; MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
MYSQLND_NET * net = packet->header.net; MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio; MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats; MYSQLND_STATS * stats = packet->header.stats;
MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state; MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state;
@ -1465,7 +1465,7 @@ void php_mysqlnd_rset_field_free_mem(void * _packet, zend_bool stack_allocation)
/* {{{ php_mysqlnd_read_row_ex */ /* {{{ php_mysqlnd_read_row_ex */
static enum_func_status static enum_func_status
php_mysqlnd_read_row_ex(MYSQLND_NET * net, php_mysqlnd_read_row_ex(MYSQLND_PPEC * net,
MYSQLND_VIO * vio, MYSQLND_VIO * vio,
MYSQLND_STATS * stats, MYSQLND_STATS * stats,
MYSQLND_ERROR_INFO * error_info, MYSQLND_ERROR_INFO * error_info,
@ -1825,7 +1825,7 @@ php_mysqlnd_rowp_read(void * _packet)
{ {
MYSQLND_PACKET_ROW *packet= (MYSQLND_PACKET_ROW *) _packet; MYSQLND_PACKET_ROW *packet= (MYSQLND_PACKET_ROW *) _packet;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info; MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
MYSQLND_NET * net = packet->header.net; MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio; MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats; MYSQLND_STATS * stats = packet->header.stats;
zend_uchar *p; zend_uchar *p;
@ -1950,7 +1950,7 @@ php_mysqlnd_stats_read(void * _packet)
{ {
MYSQLND_PACKET_STATS *packet= (MYSQLND_PACKET_STATS *) _packet; MYSQLND_PACKET_STATS *packet= (MYSQLND_PACKET_STATS *) _packet;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info; MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
MYSQLND_NET * net = packet->header.net; MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio; MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats; MYSQLND_STATS * stats = packet->header.stats;
MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state; MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state;
@ -1999,7 +1999,7 @@ php_mysqlnd_prepare_read(void * _packet)
{ {
MYSQLND_PACKET_PREPARE_RESPONSE *packet= (MYSQLND_PACKET_PREPARE_RESPONSE *) _packet; MYSQLND_PACKET_PREPARE_RESPONSE *packet= (MYSQLND_PACKET_PREPARE_RESPONSE *) _packet;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info; MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
MYSQLND_NET * net = packet->header.net; MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio; MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats; MYSQLND_STATS * stats = packet->header.stats;
MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state; MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state;
@ -2094,7 +2094,7 @@ php_mysqlnd_chg_user_read(void * _packet)
{ {
MYSQLND_PACKET_CHG_USER_RESPONSE *packet= (MYSQLND_PACKET_CHG_USER_RESPONSE *) _packet; MYSQLND_PACKET_CHG_USER_RESPONSE *packet= (MYSQLND_PACKET_CHG_USER_RESPONSE *) _packet;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info; MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
MYSQLND_NET * net = packet->header.net; MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio; MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats; MYSQLND_STATS * stats = packet->header.stats;
MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state; MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state;
@ -2189,7 +2189,7 @@ size_t php_mysqlnd_sha256_pk_request_write(void * _packet)
{ {
MYSQLND_PACKET_SHA256_PK_REQUEST * packet = (MYSQLND_PACKET_SHA256_PK_REQUEST *) _packet; MYSQLND_PACKET_SHA256_PK_REQUEST * packet = (MYSQLND_PACKET_SHA256_PK_REQUEST *) _packet;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info; MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
MYSQLND_NET * net = packet->header.net; MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio; MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats; MYSQLND_STATS * stats = packet->header.stats;
zend_uchar buffer[MYSQLND_HEADER_SIZE + 1]; zend_uchar buffer[MYSQLND_HEADER_SIZE + 1];
@ -2225,7 +2225,7 @@ php_mysqlnd_sha256_pk_request_response_read(void * _packet)
{ {
MYSQLND_PACKET_SHA256_PK_REQUEST_RESPONSE * packet= (MYSQLND_PACKET_SHA256_PK_REQUEST_RESPONSE *) _packet; MYSQLND_PACKET_SHA256_PK_REQUEST_RESPONSE * packet= (MYSQLND_PACKET_SHA256_PK_REQUEST_RESPONSE *) _packet;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info; MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
MYSQLND_NET * net = packet->header.net; MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio; MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats; MYSQLND_STATS * stats = packet->header.stats;
MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state; MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state;
@ -2936,12 +2936,12 @@ MYSQLND_METHOD(mysqlnd_protocol, send_command_handle_response)(
/* {{{ mysqlnd_net::connect */ /* {{{ mysqlnd_ppec::connect */
static enum_func_status static enum_func_status
MYSQLND_METHOD(mysqlnd_net, connect)(MYSQLND_NET * const net, const MYSQLND_CSTRING scheme, const zend_bool persistent, MYSQLND_METHOD(mysqlnd_ppec, connect)(MYSQLND_PPEC * const net, const MYSQLND_CSTRING scheme, const zend_bool persistent,
MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info) MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info)
{ {
DBG_ENTER("mysqlnd_net::connect"); DBG_ENTER("mysqlnd_ppec::connect");
net->packet_no = net->compressed_envelope_packet_no = 0; net->packet_no = net->compressed_envelope_packet_no = 0;
DBG_RETURN(PASS); DBG_RETURN(PASS);
} }
@ -2958,7 +2958,7 @@ MYSQLND_METHOD(mysqlnd_net, connect)(MYSQLND_NET * const net, const MYSQLND_CSTR
#define RESTORE_HEADER_SIZE(buffer, safe_storage) STORE_HEADER_SIZE((safe_storage), (buffer)) #define RESTORE_HEADER_SIZE(buffer, safe_storage) STORE_HEADER_SIZE((safe_storage), (buffer))
/* {{{ mysqlnd_net::send */ /* {{{ mysqlnd_ppec::send */
/* /*
IMPORTANT : It's expected that buffer has place in the beginning for MYSQLND_HEADER_SIZE !!!! IMPORTANT : It's expected that buffer has place in the beginning for MYSQLND_HEADER_SIZE !!!!
This is done for performance reasons in the caller of this function. This is done for performance reasons in the caller of this function.
@ -2970,7 +2970,7 @@ MYSQLND_METHOD(mysqlnd_net, connect)(MYSQLND_NET * const net, const MYSQLND_CSTR
count + MYSQLND_HEADER_SIZE = sizeof(buffer) (not the pointer but the actual buffer) count + MYSQLND_HEADER_SIZE = sizeof(buffer) (not the pointer but the actual buffer)
*/ */
static size_t static size_t
MYSQLND_METHOD(mysqlnd_net, send)(MYSQLND_NET * const net, MYSQLND_VIO * const vio, zend_uchar * const buffer, const size_t count, MYSQLND_METHOD(mysqlnd_ppec, send)(MYSQLND_PPEC * const net, MYSQLND_VIO * const vio, zend_uchar * const buffer, const size_t count,
MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info) MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info)
{ {
zend_uchar safe_buf[((MYSQLND_HEADER_SIZE) + (sizeof(zend_uchar)) - 1) / (sizeof(zend_uchar))]; zend_uchar safe_buf[((MYSQLND_HEADER_SIZE) + (sizeof(zend_uchar)) - 1) / (sizeof(zend_uchar))];
@ -2981,7 +2981,7 @@ MYSQLND_METHOD(mysqlnd_net, send)(MYSQLND_NET * const net, MYSQLND_VIO * const v
zend_uchar * compress_buf = NULL; zend_uchar * compress_buf = NULL;
size_t to_be_sent; size_t to_be_sent;
DBG_ENTER("mysqlnd_net::send"); DBG_ENTER("mysqlnd_ppec::send");
DBG_INF_FMT("count=" MYSQLND_SZ_T_SPEC " compression=%u", count, net->data->compressed); DBG_INF_FMT("count=" MYSQLND_SZ_T_SPEC " compression=%u", count, net->data->compressed);
if (net->data->compressed == TRUE) { if (net->data->compressed == TRUE) {
@ -3156,16 +3156,16 @@ mysqlnd_create_read_buffer(size_t count)
/* }}} */ /* }}} */
/* {{{ mysqlnd_net::read_compressed_packet_from_stream_and_fill_read_buffer */ /* {{{ mysqlnd_ppec::read_compressed_packet_from_stream_and_fill_read_buffer */
static enum_func_status static enum_func_status
MYSQLND_METHOD(mysqlnd_net, read_compressed_packet_from_stream_and_fill_read_buffer) MYSQLND_METHOD(mysqlnd_ppec, read_compressed_packet_from_stream_and_fill_read_buffer)
(MYSQLND_NET * net, MYSQLND_VIO * vio, size_t net_payload_size, MYSQLND_STATS * conn_stats, MYSQLND_ERROR_INFO * error_info) (MYSQLND_PPEC * net, MYSQLND_VIO * vio, size_t net_payload_size, MYSQLND_STATS * conn_stats, MYSQLND_ERROR_INFO * error_info)
{ {
size_t decompressed_size; size_t decompressed_size;
enum_func_status retval = PASS; enum_func_status retval = PASS;
zend_uchar * compressed_data = NULL; zend_uchar * compressed_data = NULL;
zend_uchar comp_header[COMPRESSED_HEADER_SIZE]; zend_uchar comp_header[COMPRESSED_HEADER_SIZE];
DBG_ENTER("mysqlnd_net::read_compressed_packet_from_stream_and_fill_read_buffer"); DBG_ENTER("mysqlnd_ppec::read_compressed_packet_from_stream_and_fill_read_buffer");
/* Read the compressed header */ /* Read the compressed header */
if (FAIL == vio->data->m.network_read(vio, comp_header, COMPRESSED_HEADER_SIZE, conn_stats, error_info)) { if (FAIL == vio->data->m.network_read(vio, comp_header, COMPRESSED_HEADER_SIZE, conn_stats, error_info)) {
@ -3205,15 +3205,15 @@ end:
#endif /* MYSQLND_COMPRESSION_ENABLED */ #endif /* MYSQLND_COMPRESSION_ENABLED */
/* {{{ mysqlnd_net::decode */ /* {{{ mysqlnd_ppec::decode */
static enum_func_status static enum_func_status
MYSQLND_METHOD(mysqlnd_net, decode)(zend_uchar * uncompressed_data, const size_t uncompressed_data_len, MYSQLND_METHOD(mysqlnd_ppec, decode)(zend_uchar * uncompressed_data, const size_t uncompressed_data_len,
const zend_uchar * const compressed_data, const size_t compressed_data_len) const zend_uchar * const compressed_data, const size_t compressed_data_len)
{ {
#ifdef MYSQLND_COMPRESSION_ENABLED #ifdef MYSQLND_COMPRESSION_ENABLED
int error; int error;
uLongf tmp_complen = uncompressed_data_len; uLongf tmp_complen = uncompressed_data_len;
DBG_ENTER("mysqlnd_net::decode"); DBG_ENTER("mysqlnd_ppec::decode");
error = uncompress(uncompressed_data, &tmp_complen, compressed_data, compressed_data_len); error = uncompress(uncompressed_data, &tmp_complen, compressed_data, compressed_data_len);
DBG_INF_FMT("compressed data: decomp_len=%lu compressed_size="MYSQLND_SZ_T_SPEC, tmp_complen, compressed_data_len); DBG_INF_FMT("compressed data: decomp_len=%lu compressed_size="MYSQLND_SZ_T_SPEC, tmp_complen, compressed_data_len);
@ -3222,22 +3222,22 @@ MYSQLND_METHOD(mysqlnd_net, decode)(zend_uchar * uncompressed_data, const size_t
} }
DBG_RETURN(error == Z_OK? PASS:FAIL); DBG_RETURN(error == Z_OK? PASS:FAIL);
#else #else
DBG_ENTER("mysqlnd_net::decode"); DBG_ENTER("mysqlnd_ppec::decode");
DBG_RETURN(FAIL); DBG_RETURN(FAIL);
#endif #endif
} }
/* }}} */ /* }}} */
/* {{{ mysqlnd_net::encode */ /* {{{ mysqlnd_ppec::encode */
static enum_func_status static enum_func_status
MYSQLND_METHOD(mysqlnd_net, encode)(zend_uchar * compress_buffer, size_t * compress_buffer_len, MYSQLND_METHOD(mysqlnd_ppec, encode)(zend_uchar * compress_buffer, size_t * compress_buffer_len,
const zend_uchar * const uncompressed_data, const size_t uncompressed_data_len) const zend_uchar * const uncompressed_data, const size_t uncompressed_data_len)
{ {
#ifdef MYSQLND_COMPRESSION_ENABLED #ifdef MYSQLND_COMPRESSION_ENABLED
int error; int error;
uLongf tmp_complen = *compress_buffer_len; uLongf tmp_complen = *compress_buffer_len;
DBG_ENTER("mysqlnd_net::encode"); DBG_ENTER("mysqlnd_ppec::encode");
error = compress(compress_buffer, &tmp_complen, uncompressed_data, uncompressed_data_len); error = compress(compress_buffer, &tmp_complen, uncompressed_data, uncompressed_data_len);
if (error != Z_OK) { if (error != Z_OK) {
@ -3249,22 +3249,22 @@ MYSQLND_METHOD(mysqlnd_net, encode)(zend_uchar * compress_buffer, size_t * compr
DBG_RETURN(error == Z_OK? PASS:FAIL); DBG_RETURN(error == Z_OK? PASS:FAIL);
#else #else
DBG_ENTER("mysqlnd_net::encode"); DBG_ENTER("mysqlnd_ppec::encode");
DBG_RETURN(FAIL); DBG_RETURN(FAIL);
#endif #endif
} }
/* }}} */ /* }}} */
/* {{{ mysqlnd_net::receive */ /* {{{ mysqlnd_ppec::receive */
static enum_func_status static enum_func_status
MYSQLND_METHOD(mysqlnd_net, receive)(MYSQLND_NET * const net, MYSQLND_VIO * const vio, zend_uchar * const buffer, const size_t count, MYSQLND_METHOD(mysqlnd_ppec, receive)(MYSQLND_PPEC * const net, MYSQLND_VIO * const vio, zend_uchar * const buffer, const size_t count,
MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info) MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info)
{ {
size_t to_read = count; size_t to_read = count;
zend_uchar * p = buffer; zend_uchar * p = buffer;
DBG_ENTER("mysqlnd_net::receive"); DBG_ENTER("mysqlnd_ppec::receive");
#ifdef MYSQLND_COMPRESSION_ENABLED #ifdef MYSQLND_COMPRESSION_ENABLED
if (net->data->compressed) { if (net->data->compressed) {
if (net->uncompressed_data) { if (net->uncompressed_data) {
@ -3322,11 +3322,11 @@ MYSQLND_METHOD(mysqlnd_net, receive)(MYSQLND_NET * const net, MYSQLND_VIO * cons
/* }}} */ /* }}} */
/* {{{ mysqlnd_net::set_client_option */ /* {{{ mysqlnd_ppec::set_client_option */
static enum_func_status static enum_func_status
MYSQLND_METHOD(mysqlnd_net, set_client_option)(MYSQLND_NET * const net, enum_mysqlnd_client_option option, const char * const value) MYSQLND_METHOD(mysqlnd_ppec, set_client_option)(MYSQLND_PPEC * const net, enum_mysqlnd_client_option option, const char * const value)
{ {
DBG_ENTER("mysqlnd_net::set_client_option"); DBG_ENTER("mysqlnd_ppec::set_client_option");
DBG_INF_FMT("option=%u", option); DBG_INF_FMT("option=%u", option);
switch (option) { switch (option) {
case MYSQL_OPT_COMPRESS: case MYSQL_OPT_COMPRESS:
@ -3349,12 +3349,12 @@ MYSQLND_METHOD(mysqlnd_net, set_client_option)(MYSQLND_NET * const net, enum_mys
/* }}} */ /* }}} */
/* {{{ mysqlnd_net::free_contents */ /* {{{ mysqlnd_ppec::free_contents */
static void static void
MYSQLND_METHOD(mysqlnd_net, free_contents)(MYSQLND_NET * net) MYSQLND_METHOD(mysqlnd_ppec, free_contents)(MYSQLND_PPEC * net)
{ {
zend_bool pers = net->persistent; zend_bool pers = net->persistent;
DBG_ENTER("mysqlnd_net::free_contents"); DBG_ENTER("mysqlnd_ppec::free_contents");
#ifdef MYSQLND_COMPRESSION_ENABLED #ifdef MYSQLND_COMPRESSION_ENABLED
if (net->uncompressed_data) { if (net->uncompressed_data) {
@ -3371,20 +3371,20 @@ MYSQLND_METHOD(mysqlnd_net, free_contents)(MYSQLND_NET * net)
/* }}} */ /* }}} */
/* {{{ mysqlnd_net::init */ /* {{{ mysqlnd_ppec::init */
static enum_func_status static enum_func_status
MYSQLND_METHOD(mysqlnd_net, init)(MYSQLND_NET * const net, MYSQLND_STATS * const stats, MYSQLND_ERROR_INFO * const error_info) MYSQLND_METHOD(mysqlnd_ppec, init)(MYSQLND_PPEC * const net, MYSQLND_STATS * const stats, MYSQLND_ERROR_INFO * const error_info)
{ {
return PASS; return PASS;
} }
/* }}} */ /* }}} */
/* {{{ mysqlnd_net::dtor */ /* {{{ mysqlnd_ppec::dtor */
static void static void
MYSQLND_METHOD(mysqlnd_net, dtor)(MYSQLND_NET * const net, MYSQLND_STATS * const stats, MYSQLND_ERROR_INFO * const error_info) MYSQLND_METHOD(mysqlnd_ppec, dtor)(MYSQLND_PPEC * const net, MYSQLND_STATS * const stats, MYSQLND_ERROR_INFO * const error_info)
{ {
DBG_ENTER("mysqlnd_net::dtor"); DBG_ENTER("mysqlnd_ppec::dtor");
if (net) { if (net) {
net->data->m.free_contents(net); net->data->m.free_contents(net);
@ -3396,46 +3396,46 @@ MYSQLND_METHOD(mysqlnd_net, dtor)(MYSQLND_NET * const net, MYSQLND_STATS * const
/* }}} */ /* }}} */
MYSQLND_CLASS_METHODS_START(mysqlnd_net) MYSQLND_CLASS_METHODS_START(mysqlnd_protocol_packet_envelope_codec)
MYSQLND_METHOD(mysqlnd_net, init), MYSQLND_METHOD(mysqlnd_ppec, init),
MYSQLND_METHOD(mysqlnd_net, dtor), MYSQLND_METHOD(mysqlnd_ppec, dtor),
MYSQLND_METHOD(mysqlnd_net, connect), MYSQLND_METHOD(mysqlnd_ppec, connect),
MYSQLND_METHOD(mysqlnd_net, set_client_option), MYSQLND_METHOD(mysqlnd_ppec, set_client_option),
MYSQLND_METHOD(mysqlnd_net, decode), MYSQLND_METHOD(mysqlnd_ppec, decode),
MYSQLND_METHOD(mysqlnd_net, encode), MYSQLND_METHOD(mysqlnd_ppec, encode),
MYSQLND_METHOD(mysqlnd_net, send), MYSQLND_METHOD(mysqlnd_ppec, send),
MYSQLND_METHOD(mysqlnd_net, receive), MYSQLND_METHOD(mysqlnd_ppec, receive),
#ifdef MYSQLND_COMPRESSION_ENABLED #ifdef MYSQLND_COMPRESSION_ENABLED
MYSQLND_METHOD(mysqlnd_net, read_compressed_packet_from_stream_and_fill_read_buffer), MYSQLND_METHOD(mysqlnd_ppec, read_compressed_packet_from_stream_and_fill_read_buffer),
#else #else
NULL, NULL,
#endif #endif
MYSQLND_METHOD(mysqlnd_net, free_contents), MYSQLND_METHOD(mysqlnd_ppec, free_contents),
MYSQLND_CLASS_METHODS_END; MYSQLND_CLASS_METHODS_END;
/* {{{ mysqlnd_net_init */ /* {{{ mysqlnd_ppec_init */
PHPAPI MYSQLND_NET * PHPAPI MYSQLND_PPEC *
mysqlnd_net_init(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info) mysqlnd_ppec_init(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info)
{ {
MYSQLND_NET * net; MYSQLND_PPEC * net;
DBG_ENTER("mysqlnd_net_init"); DBG_ENTER("mysqlnd_ppec_init");
net = MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_object_factory).get_net(persistent, stats, error_info); net = MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_object_factory).get_net(persistent, stats, error_info);
DBG_RETURN(net); DBG_RETURN(net);
} }
/* }}} */ /* }}} */
/* {{{ mysqlnd_net_free */ /* {{{ mysqlnd_ppec_free */
PHPAPI void PHPAPI void
mysqlnd_net_free(MYSQLND_NET * const net, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info) mysqlnd_ppec_free(MYSQLND_PPEC * const net, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info)
{ {
DBG_ENTER("mysqlnd_net_free"); DBG_ENTER("mysqlnd_ppec_free");
if (net) { if (net) {
net->data->m.dtor(net, stats, error_info); net->data->m.dtor(net, stats, error_info);
} }

View File

@ -63,7 +63,7 @@ typedef struct st_mysqlnd_packet_header {
mysqlnd_packet_methods *m; mysqlnd_packet_methods *m;
MYSQLND_CONN_DATA * conn; MYSQLND_CONN_DATA * conn;
MYSQLND_NET * net; MYSQLND_PPEC * net;
MYSQLND_VIO * vio; MYSQLND_VIO * vio;
MYSQLND_ERROR_INFO * error_info; MYSQLND_ERROR_INFO * error_info;
MYSQLND_STATS * stats; MYSQLND_STATS * stats;
@ -324,6 +324,11 @@ enum_func_status php_mysqlnd_rowp_read_text_protocol_c(MYSQLND_MEMORY_POOL_CHUNK
PHPAPI MYSQLND_PROTOCOL_PAYLOAD_DECODER_FACTORY * mysqlnd_protocol_payload_decoder_factory_init(MYSQLND_CONN_DATA * conn, zend_bool persistent); PHPAPI MYSQLND_PROTOCOL_PAYLOAD_DECODER_FACTORY * mysqlnd_protocol_payload_decoder_factory_init(MYSQLND_CONN_DATA * conn, zend_bool persistent);
PHPAPI void mysqlnd_protocol_payload_decoder_factory_free(MYSQLND_PROTOCOL_PAYLOAD_DECODER_FACTORY * const payload_decoder_factory); PHPAPI void mysqlnd_protocol_payload_decoder_factory_free(MYSQLND_PROTOCOL_PAYLOAD_DECODER_FACTORY * const payload_decoder_factory);
PHPAPI MYSQLND_PPEC * mysqlnd_ppec_init(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info);
PHPAPI void mysqlnd_ppec_free(MYSQLND_PPEC * const net, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info);
#endif /* MYSQLND_WIREPROTOCOL_H */ #endif /* MYSQLND_WIREPROTOCOL_H */
/* /*