mirror of
https://github.com/php/php-src.git
synced 2024-12-16 13:26:19 +08:00
Cleanup internal data_close API
This always returns NULL. Also passing in data is not necessary as it is always equal to ftp->data.
This commit is contained in:
parent
f601963d4f
commit
35cf7abec7
@ -94,8 +94,8 @@ static databuf_t* ftp_getdata(ftpbuf_t *ftp);
|
||||
/* accepts the data connection, returns updated data buffer */
|
||||
static databuf_t* data_accept(databuf_t *data, ftpbuf_t *ftp);
|
||||
|
||||
/* closes the data connection, returns NULL */
|
||||
static databuf_t* data_close(ftpbuf_t *ftp, databuf_t *data);
|
||||
/* closes the data connection, no-op if already closed */
|
||||
static void data_close(ftpbuf_t *ftp);
|
||||
|
||||
/* generic file lister */
|
||||
static char** ftp_genlist(ftpbuf_t *ftp, const char *cmd, const size_t cmd_len, const char *path, const size_t path_len);
|
||||
@ -170,9 +170,7 @@ ftp_close(ftpbuf_t *ftp)
|
||||
if (ftp->last_ssl_session) {
|
||||
SSL_SESSION_free(ftp->last_ssl_session);
|
||||
}
|
||||
if (ftp->data) {
|
||||
data_close(ftp, ftp->data);
|
||||
}
|
||||
data_close(ftp);
|
||||
if (ftp->stream && ftp->closestream) {
|
||||
php_stream_close(ftp->stream);
|
||||
}
|
||||
@ -963,7 +961,7 @@ ftp_get(ftpbuf_t *ftp, php_stream *outstream, const char *path, const size_t pat
|
||||
}
|
||||
}
|
||||
|
||||
ftp->data = data = data_close(ftp, data);
|
||||
data_close(ftp);
|
||||
|
||||
if (!ftp_getresp(ftp) || (ftp->resp != 226 && ftp->resp != 250)) {
|
||||
goto bail;
|
||||
@ -971,7 +969,7 @@ ftp_get(ftpbuf_t *ftp, php_stream *outstream, const char *path, const size_t pat
|
||||
|
||||
return 1;
|
||||
bail:
|
||||
ftp->data = data_close(ftp, data);
|
||||
data_close(ftp);
|
||||
return 0;
|
||||
}
|
||||
/* }}} */
|
||||
@ -1045,14 +1043,14 @@ ftp_put(ftpbuf_t *ftp, const char *path, const size_t path_len, php_stream *inst
|
||||
if (size && my_send(ftp, data->fd, data->buf, size) != size) {
|
||||
goto bail;
|
||||
}
|
||||
ftp->data = data = data_close(ftp, data);
|
||||
data_close(ftp);
|
||||
|
||||
if (!ftp_getresp(ftp) || (ftp->resp != 226 && ftp->resp != 250 && ftp->resp != 200)) {
|
||||
goto bail;
|
||||
}
|
||||
return 1;
|
||||
bail:
|
||||
ftp->data = data_close(ftp, data);
|
||||
data_close(ftp);
|
||||
return 0;
|
||||
}
|
||||
/* }}} */
|
||||
@ -1112,14 +1110,14 @@ ftp_append(ftpbuf_t *ftp, const char *path, const size_t path_len, php_stream *i
|
||||
if (size && my_send(ftp, data->fd, data->buf, size) != size) {
|
||||
goto bail;
|
||||
}
|
||||
ftp->data = data = data_close(ftp, data);
|
||||
data_close(ftp);
|
||||
|
||||
if (!ftp_getresp(ftp) || (ftp->resp != 226 && ftp->resp != 250 && ftp->resp != 200)) {
|
||||
goto bail;
|
||||
}
|
||||
return 1;
|
||||
bail:
|
||||
ftp->data = data_close(ftp, data);
|
||||
data_close(ftp);
|
||||
return 0;
|
||||
}
|
||||
/* }}} */
|
||||
@ -1938,11 +1936,12 @@ static void ftp_ssl_shutdown(ftpbuf_t *ftp, php_socket_t fd, SSL *ssl_handle) {
|
||||
/* }}} */
|
||||
|
||||
/* {{{ data_close */
|
||||
databuf_t*
|
||||
data_close(ftpbuf_t *ftp, databuf_t *data)
|
||||
void data_close(ftpbuf_t *ftp)
|
||||
{
|
||||
ZEND_ASSERT(ftp != NULL);
|
||||
databuf_t *data = ftp->data;
|
||||
if (data == NULL) {
|
||||
return NULL;
|
||||
return;
|
||||
}
|
||||
if (data->listener != -1) {
|
||||
#ifdef HAVE_FTP_SSL
|
||||
@ -1964,11 +1963,8 @@ data_close(ftpbuf_t *ftp, databuf_t *data)
|
||||
#endif
|
||||
closesocket(data->fd);
|
||||
}
|
||||
if (ftp) {
|
||||
ftp->data = NULL;
|
||||
}
|
||||
ftp->data = NULL;
|
||||
efree(data);
|
||||
return NULL;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@ -2010,7 +2006,7 @@ ftp_genlist(ftpbuf_t *ftp, const char *cmd, const size_t cmd_len, const char *pa
|
||||
|
||||
/* some servers don't open a ftp-data connection if the directory is empty */
|
||||
if (ftp->resp == 226) {
|
||||
ftp->data = data_close(ftp, data);
|
||||
data_close(ftp);
|
||||
php_stream_close(tmpstream);
|
||||
return ecalloc(1, sizeof(char*));
|
||||
}
|
||||
@ -2038,7 +2034,7 @@ ftp_genlist(ftpbuf_t *ftp, const char *cmd, const size_t cmd_len, const char *pa
|
||||
}
|
||||
}
|
||||
|
||||
ftp->data = data_close(ftp, data);
|
||||
data_close(ftp);
|
||||
|
||||
php_stream_rewind(tmpstream);
|
||||
|
||||
@ -2068,7 +2064,7 @@ ftp_genlist(ftpbuf_t *ftp, const char *cmd, const size_t cmd_len, const char *pa
|
||||
|
||||
return ret;
|
||||
bail:
|
||||
ftp->data = data_close(ftp, data);
|
||||
data_close(ftp);
|
||||
php_stream_close(tmpstream);
|
||||
if (ret)
|
||||
efree(ret);
|
||||
@ -2090,7 +2086,7 @@ ftp_nb_get(ftpbuf_t *ftp, php_stream *outstream, const char *path, const size_t
|
||||
if (ftp->data != NULL) {
|
||||
/* If there is a transfer in action, abort it.
|
||||
* If we don't, we get an invalid state and memory leaks when the new connection gets opened. */
|
||||
data_close(ftp, ftp->data);
|
||||
data_close(ftp);
|
||||
if (!ftp_getresp(ftp) || (ftp->resp != 226 && ftp->resp != 250)) {
|
||||
goto bail;
|
||||
}
|
||||
@ -2137,7 +2133,7 @@ ftp_nb_get(ftpbuf_t *ftp, php_stream *outstream, const char *path, const size_t
|
||||
return (ftp_nb_continue_read(ftp));
|
||||
|
||||
bail:
|
||||
ftp->data = data_close(ftp, data);
|
||||
data_close(ftp);
|
||||
return PHP_FTP_FAILED;
|
||||
}
|
||||
/* }}} */
|
||||
@ -2189,7 +2185,7 @@ ftp_nb_continue_read(ftpbuf_t *ftp)
|
||||
php_stream_putc(ftp->stream, '\r');
|
||||
}
|
||||
|
||||
ftp->data = data = data_close(ftp, data);
|
||||
data_close(ftp);
|
||||
|
||||
if (!ftp_getresp(ftp) || (ftp->resp != 226 && ftp->resp != 250)) {
|
||||
goto bail;
|
||||
@ -2199,7 +2195,7 @@ ftp_nb_continue_read(ftpbuf_t *ftp)
|
||||
return PHP_FTP_FINISHED;
|
||||
bail:
|
||||
ftp->nb = 0;
|
||||
ftp->data = data_close(ftp, data);
|
||||
data_close(ftp);
|
||||
return PHP_FTP_FAILED;
|
||||
}
|
||||
/* }}} */
|
||||
@ -2251,7 +2247,7 @@ ftp_nb_put(ftpbuf_t *ftp, const char *path, const size_t path_len, php_stream *i
|
||||
return (ftp_nb_continue_write(ftp));
|
||||
|
||||
bail:
|
||||
ftp->data = data_close(ftp, data);
|
||||
data_close(ftp);
|
||||
return PHP_FTP_FAILED;
|
||||
}
|
||||
/* }}} */
|
||||
@ -2294,7 +2290,7 @@ ftp_nb_continue_write(ftpbuf_t *ftp)
|
||||
if (size && my_send(ftp, ftp->data->fd, ftp->data->buf, size) != size) {
|
||||
goto bail;
|
||||
}
|
||||
ftp->data = data_close(ftp, ftp->data);
|
||||
data_close(ftp);
|
||||
|
||||
if (!ftp_getresp(ftp) || (ftp->resp != 226 && ftp->resp != 250)) {
|
||||
goto bail;
|
||||
@ -2302,7 +2298,7 @@ ftp_nb_continue_write(ftpbuf_t *ftp)
|
||||
ftp->nb = 0;
|
||||
return PHP_FTP_FINISHED;
|
||||
bail:
|
||||
ftp->data = data_close(ftp, ftp->data);
|
||||
data_close(ftp);
|
||||
ftp->nb = 0;
|
||||
return PHP_FTP_FAILED;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user