com php-src: Implement FR #55651 (Option to ignore the returned FTP PASV address): ext/ftp/ftp.c ext/ftp/ftp.h ext/ftp/php_ftp.c e xt/ftp/php_ftp.h
| From: | Lior Kaplan | Date: | Tue, 15 Dec 2015 09:51:32 +0000 |
| Subject: | com php-src: Implement FR #55651 (Option to ignore the returned FTP PASV address): ext/ftp/ftp.c ext/ftp/ftp.h ext/ftp/php_ftp.c e xt/ftp/php_ftp.h | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-90285@lists.php.net to get a copy of this message | ||
Commit: 71e468e14149169b28439a552f5924330580acab
Author: Avi Brender <abrender@elitehosts.com> Tue, 15 Dec 2015 11:51:32 +0200
Committer: Lior Kaplan <kaplanlior@gmail.com> Tue, 15 Dec 2015 11:51:32 +0200
Parents: e048b3fc6b482d19c3f21e6691b2e0188fc83a77 838e4039d7fc8f79fe71091725ab0a13a5f4ad2a
Branches: PHP-7.0
Link: http://git.php..net/?p=php-src.git;a=commitdiff;h=71e468e14149169b28439a552f5924330580acab
Log:
Implement FR #55651 (Option to ignore the returned FTP PASV address)
Bugs:
https://bugs.php.net/55651
Changed paths:
MM ext/ftp/ftp.c
MM ext/ftp/ftp.h
MM ext/ftp/php_ftp.c
MM ext/ftp/php_ftp.h
Diff:
diff --cc ext/ftp/ftp.h
index 546c69c,201ec5d..aed4165
--- a/ext/ftp/ftp.h
+++ b/ext/ftp/ftp.h
@@@ -69,8 -70,9 +70,9 @@@ typedef struct ftpbu
ftptype_t type; /* current transfer type */
int pasv; /* 0=off; 1=pasv; 2=ready */
php_sockaddr_storage pasvaddr; /* passive mode address */
- long timeout_sec; /* User configurable timeout (seconds) */
+ zend_long timeout_sec; /* User configurable timeout (seconds) */
int autoseek; /* User configurable autoseek flag */
+ int usepasvaddress; /* Use the address returned by the pasv command */
int nb; /* "nonblocking" transfer in progress */
databuf_t *data; /* Data connection for "nonblocking" transfers */
diff --cc ext/ftp/php_ftp.c
index eaed5c6,dc474df..ca62720
--- a/ext/ftp/php_ftp.c
+++ b/ext/ftp/php_ftp.c
@@@ -379,7 -364,8 +380,8 @@@ PHP_FUNCTION(ftp_connect
/* autoseek for resuming */
ftp->autoseek = FTP_DEFAULT_AUTOSEEK;
+ ftp->usepasvaddress = FTP_DEFAULT_USEPASVADDRESS;
-#if HAVE_OPENSSL_EXT
+#ifdef HAVE_FTP_SSL
/* disable ssl */
ftp->use_ssl = 0;
#endif
@@@ -1475,11 -1399,20 +1478,20 @@@ PHP_FUNCTION(ftp_set_option
zend_zval_type_name(z_value));
RETURN_FALSE;
}
- ftp->autoseek = Z_LVAL_P(z_value);
+ ftp->autoseek = Z_TYPE_P(z_value) == IS_TRUE ? 1 : 0;
RETURN_TRUE;
break;
+ case PHP_FTP_OPT_USEPASVADDRESS:
- if (Z_TYPE_P(z_value) != IS_BOOL) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Option USEPASVADDRESS expects value of type
boolean, %s given",
++ if (Z_TYPE_P(z_value) != IS_TRUE && Z_TYPE_P(z_value) != IS_FALSE) {
++ php_error_docref(NULL, E_WARNING, "Option USEPASVADDRESS expects value of type boolean,
%s given",
+ zend_zval_type_name(z_value));
+ RETURN_FALSE;
+ }
- ftp->usepasvaddress = Z_LVAL_P(z_value);
++ ftp->usepasvaddress = Z_TYPE_P(z_value) == IS_TRUE ? 1 : 0;
+ RETURN_TRUE;
+ break;
default:
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown option '%ld'",
option);
+ php_error_docref(NULL, E_WARNING, "Unknown option '%pd'", option);
RETURN_FALSE;
break;
}
@@@ -1509,8 -1440,11 +1521,11 @@@ PHP_FUNCTION(ftp_get_option
case PHP_FTP_OPT_AUTOSEEK:
RETURN_BOOL(ftp->autoseek);
break;
+ case PHP_FTP_OPT_USEPASVADDRESS:
+ RETURN_BOOL(ftp->usepasvaddress);
+ break;
default:
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown option '%ld'",
option);
+ php_error_docref(NULL, E_WARNING, "Unknown option '%pd'", option);
RETURN_FALSE;
break;
}
diff --cc ext/ftp/php_ftp.h
index 3ddc76f,6b52fa6..8000a3e
--- a/ext/ftp/php_ftp.h
+++ b/ext/ftp/php_ftp.h
@@@ -27,11 -27,9 +27,12 @@@
extern zend_module_entry php_ftp_module_entry;
#define php_ftp_module_ptr &php_ftp_module_entry
+#include "php_version.h"
+#define PHP_FTP_VERSION PHP_VERSION
+
#define PHP_FTP_OPT_TIMEOUT_SEC 0
#define PHP_FTP_OPT_AUTOSEEK 1
+ #define PHP_FTP_OPT_USEPASVADDRESS 2
#define PHP_FTP_AUTORESUME -1
PHP_MINIT_FUNCTION(ftp);