mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
MYSQLND_NET refactored not to use any direct reference to MYSQLND (the connection)
QC will need an ifdef-layer to compile with this
This commit is contained in:
parent
33eb2ab6f1
commit
b5f5770399
7 changed files with 384 additions and 241 deletions
|
@ -162,20 +162,21 @@ mysqlnd_handle_local_infile(MYSQLND *conn, const char *filename, zend_bool *is_w
|
|||
int bufsize;
|
||||
size_t ret;
|
||||
MYSQLND_INFILE infile;
|
||||
MYSQLND_NET * net = conn->net;
|
||||
|
||||
DBG_ENTER("mysqlnd_handle_local_infile");
|
||||
|
||||
if (!(conn->options.flags & CLIENT_LOCAL_FILES)) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "LOAD DATA LOCAL INFILE forbidden");
|
||||
/* write empty packet to server */
|
||||
ret = conn->net->m.send(conn, empty_packet, 0 TSRMLS_CC);
|
||||
ret = net->m.send_ex(net, empty_packet, 0, conn->stats, &conn->error_info TSRMLS_CC);
|
||||
*is_warning = TRUE;
|
||||
goto infile_error;
|
||||
}
|
||||
|
||||
infile = conn->infile;
|
||||
/* allocate buffer for reading data */
|
||||
buf = (zend_uchar *)mnd_ecalloc(1, buflen);
|
||||
buf = (zend_uchar *) mnd_ecalloc(1, buflen);
|
||||
|
||||
*is_warning = FALSE;
|
||||
|
||||
|
@ -188,13 +189,13 @@ mysqlnd_handle_local_infile(MYSQLND *conn, const char *filename, zend_bool *is_w
|
|||
tmp_error_no = infile.local_infile_error(info, tmp_buf, sizeof(tmp_buf) TSRMLS_CC);
|
||||
SET_CLIENT_ERROR(conn->error_info, tmp_error_no, UNKNOWN_SQLSTATE, tmp_buf);
|
||||
/* write empty packet to server */
|
||||
ret = conn->net->m.send(conn, empty_packet, 0 TSRMLS_CC);
|
||||
ret = net->m.send_ex(net, empty_packet, 0, conn->stats, &conn->error_info TSRMLS_CC);
|
||||
goto infile_error;
|
||||
}
|
||||
|
||||
/* read data */
|
||||
while ((bufsize = infile.local_infile_read (info, buf + MYSQLND_HEADER_SIZE, buflen - MYSQLND_HEADER_SIZE TSRMLS_CC)) > 0) {
|
||||
if ((ret = conn->net->m.send(conn, buf, bufsize TSRMLS_CC)) == 0) {
|
||||
if ((ret = net->m.send_ex(net, buf, bufsize, conn->stats, &conn->error_info TSRMLS_CC)) == 0) {
|
||||
DBG_ERR_FMT("Error during read : %d %s %s", CR_SERVER_LOST, UNKNOWN_SQLSTATE, lost_conn);
|
||||
SET_CLIENT_ERROR(conn->error_info, CR_SERVER_LOST, UNKNOWN_SQLSTATE, lost_conn);
|
||||
goto infile_error;
|
||||
|
@ -202,7 +203,7 @@ mysqlnd_handle_local_infile(MYSQLND *conn, const char *filename, zend_bool *is_w
|
|||
}
|
||||
|
||||
/* send empty packet for eof */
|
||||
if ((ret = conn->net->m.send(conn, empty_packet, 0 TSRMLS_CC)) == 0) {
|
||||
if ((ret = net->m.send_ex(net, empty_packet, 0, conn->stats, &conn->error_info TSRMLS_CC)) == 0) {
|
||||
SET_CLIENT_ERROR(conn->error_info, CR_SERVER_LOST, UNKNOWN_SQLSTATE, lost_conn);
|
||||
goto infile_error;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue