mirror of
https://github.com/php/php-src.git
synced 2026-04-24 08:28:26 +02:00
Fixed bug #48607 (fwrite() doesn't check reply from ftp server before exiting)
This commit is contained in:
@@ -10,6 +10,8 @@
|
||||
- Core:
|
||||
. Fixed bug #48484 (array_product() always returns 0 for an empty array).
|
||||
(Ilia)
|
||||
. Fixed bug #48607 (fwrite() doesn't check reply from ftp server before
|
||||
exiting). (Ilia)
|
||||
|
||||
- Filter extension:
|
||||
. Fixed bug #53150 (FILTER_FLAG_NO_RES_RANGE is missing some IP ranges).
|
||||
|
||||
@@ -98,13 +98,33 @@ static int php_stream_ftp_stream_stat(php_stream_wrapper *wrapper, php_stream *s
|
||||
static int php_stream_ftp_stream_close(php_stream_wrapper *wrapper, php_stream *stream TSRMLS_DC)
|
||||
{
|
||||
php_stream *controlstream = (php_stream *)stream->wrapperdata;
|
||||
int ret = 0;
|
||||
|
||||
if (controlstream) {
|
||||
if (strpbrk(stream->mode, "wa+")) {
|
||||
char tmp_line[512];
|
||||
int result;
|
||||
|
||||
/* For write modes close data stream first to signal EOF to server */
|
||||
stream->wrapperdata = NULL;
|
||||
php_stream_close(stream);
|
||||
stream = NULL;
|
||||
|
||||
result = GET_FTP_RESULT(controlstream);
|
||||
if (result != 226 && result != 250) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "FTP server error %d:%s", result, tmp_line);
|
||||
ret = EOF;
|
||||
}
|
||||
}
|
||||
|
||||
php_stream_write_string(controlstream, "QUIT\r\n");
|
||||
php_stream_close(controlstream);
|
||||
stream->wrapperdata = NULL;
|
||||
if (stream) {
|
||||
stream->wrapperdata = NULL;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
||||
return ret;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user