Loading CHANGES +5 −0 Original line number Original line Diff line number Diff line Loading @@ -6,6 +6,11 @@ Changelog Changelog Daniel S (24 September 2007) - Immanuel Gregoire fixed KNOWN_BUGS #44: --ftp-method nocwd did not handle URLs ending with a slash properly (it should list the contents of that directory). Test case 351 brought back and also test 1010 was added. Daniel S (21 September 2007) Daniel S (21 September 2007) - Mark Davies fixed Negotiate authentication over proxy, and also introduced - Mark Davies fixed Negotiate authentication over proxy, and also introduced the --proxy-negotiate command line option to allow a user to explicitly the --proxy-negotiate command line option to allow a user to explicitly Loading RELEASE-NOTES +1 −0 Original line number Original line Diff line number Diff line Loading @@ -22,6 +22,7 @@ This release includes the following bugfixes: o ldap builds with the MSVC makefiles o ldap builds with the MSVC makefiles o no HOME and no key given caused SSH auth failure o no HOME and no key given caused SSH auth failure o Negotiate authentication over proxy o Negotiate authentication over proxy o --ftp-method nocwd on directory listings This release includes the following known bugs: This release includes the following known bugs: Loading docs/KNOWN_BUGS +0 −3 Original line number Original line Diff line number Diff line Loading @@ -17,9 +17,6 @@ may have been fixed since this was written! initial suggested function to use for randomizing the response: initial suggested function to use for randomizing the response: http://curl.haxx.se/mail/lib-2007-07/0178.html http://curl.haxx.se/mail/lib-2007-07/0178.html 44. --ftp-method nocwd does not handle URLs ending with a slash properly (it should list the contents of that directory). See test case 351. 43. There seems to be a problem when connecting to the Microsoft telnet server. 43. There seems to be a problem when connecting to the Microsoft telnet server. http://curl.haxx.se/bug/view.cgi?id=1720605 http://curl.haxx.se/bug/view.cgi?id=1720605 Loading lib/ftp.c +67 −6 Original line number Original line Diff line number Diff line Loading @@ -1279,10 +1279,52 @@ static CURLcode ftp_state_post_listtype(struct connectdata *conn) way. It has turned out that the NLST list output is not the same on all way. It has turned out that the NLST list output is not the same on all servers either... */ servers either... */ NBFTPSENDF(conn, "%s", /* if FTPFILE_NOCWD was specified, we are currently in the user's home directory, so we should add the path as argument for the LIST / NLST / or custom command. Whether the server will support this, is uncertain. The other ftp_filemethods will CWD into dir/dir/ first and then just do LIST (in that case: nothing to do here) */ char *cmd,*lstArg,*slashPos; lstArg = NULL; if((data->set.ftp_filemethod == FTPFILE_NOCWD) && data->reqdata.path && data->reqdata.path[0] && strchr(data->reqdata.path,'/')) { lstArg = strdup(data->reqdata.path); if(!lstArg) return CURLE_OUT_OF_MEMORY; /* Check if path does not end with /, as then we cut off the file part */ if(lstArg[strlen(lstArg) - 1] != '/') { /* chop off the file part if format is dir/dir/file */ slashPos = strrchr(lstArg,'/'); *(slashPos+1) = '\0'; } } cmd = aprintf( "%s%s%s", data->set.str[STRING_CUSTOMREQUEST]? data->set.str[STRING_CUSTOMREQUEST]? data->set.str[STRING_CUSTOMREQUEST]: data->set.str[STRING_CUSTOMREQUEST]: (data->set.ftp_list_only?"NLST":"LIST")); (data->set.ftp_list_only?"NLST":"LIST"), lstArg? " ": "", lstArg? lstArg: "" ); if(!cmd) return CURLE_OUT_OF_MEMORY; NBFTPSENDF(conn, "%s",cmd); if(lstArg) free(lstArg); free(cmd); state(conn, FTP_LIST); state(conn, FTP_LIST); Loading Loading @@ -3036,7 +3078,7 @@ CURLcode Curl_ftp_done(struct connectdata *conn, CURLcode status, size_t flen = ftp->file?strlen(ftp->file):0; /* file is "raw" already */ size_t flen = ftp->file?strlen(ftp->file):0; /* file is "raw" already */ size_t dlen = strlen(path)-flen; size_t dlen = strlen(path)-flen; if(!ftpc->cwdfail) { if(!ftpc->cwdfail) { if(dlen) { if(dlen && (data->set.ftp_filemethod != FTPFILE_NOCWD)) { ftpc->prevpath = path; ftpc->prevpath = path; if(flen) if(flen) /* if 'path' is not the whole string */ /* if 'path' is not the whole string */ Loading Loading @@ -3695,7 +3737,26 @@ CURLcode ftp_parse_url_path(struct connectdata *conn) switch(data->set.ftp_filemethod) { switch(data->set.ftp_filemethod) { case FTPFILE_NOCWD: case FTPFILE_NOCWD: /* fastest, but less standard-compliant */ /* fastest, but less standard-compliant */ /* The best time to check whether the path is a file or directory is right here. so: the first condition in the if() right here, is there just in case someone decides to set path to NULL one day */ if(data->reqdata.path && data->reqdata.path[0] && (data->reqdata.path[strlen(data->reqdata.path) - 1] != '/') ) ftp->file = data->reqdata.path; /* this is a full file path */ ftp->file = data->reqdata.path; /* this is a full file path */ else ftp->file = NULL; /* ftp->file is not used anywhere other than for operations on a file. In other words, never for directory operations. So we can safely set it to NULL here and use it as a argument in dir/file decisions. */ break; break; case FTPFILE_SINGLECWD: case FTPFILE_SINGLECWD: Loading tests/data/DISABLED +1 −1 Original line number Original line Diff line number Diff line Loading @@ -4,4 +4,4 @@ # per line. # per line. # Lines starting with '#' letters are treated as comments. # Lines starting with '#' letters are treated as comments. #230 #230 351 Loading
CHANGES +5 −0 Original line number Original line Diff line number Diff line Loading @@ -6,6 +6,11 @@ Changelog Changelog Daniel S (24 September 2007) - Immanuel Gregoire fixed KNOWN_BUGS #44: --ftp-method nocwd did not handle URLs ending with a slash properly (it should list the contents of that directory). Test case 351 brought back and also test 1010 was added. Daniel S (21 September 2007) Daniel S (21 September 2007) - Mark Davies fixed Negotiate authentication over proxy, and also introduced - Mark Davies fixed Negotiate authentication over proxy, and also introduced the --proxy-negotiate command line option to allow a user to explicitly the --proxy-negotiate command line option to allow a user to explicitly Loading
RELEASE-NOTES +1 −0 Original line number Original line Diff line number Diff line Loading @@ -22,6 +22,7 @@ This release includes the following bugfixes: o ldap builds with the MSVC makefiles o ldap builds with the MSVC makefiles o no HOME and no key given caused SSH auth failure o no HOME and no key given caused SSH auth failure o Negotiate authentication over proxy o Negotiate authentication over proxy o --ftp-method nocwd on directory listings This release includes the following known bugs: This release includes the following known bugs: Loading
docs/KNOWN_BUGS +0 −3 Original line number Original line Diff line number Diff line Loading @@ -17,9 +17,6 @@ may have been fixed since this was written! initial suggested function to use for randomizing the response: initial suggested function to use for randomizing the response: http://curl.haxx.se/mail/lib-2007-07/0178.html http://curl.haxx.se/mail/lib-2007-07/0178.html 44. --ftp-method nocwd does not handle URLs ending with a slash properly (it should list the contents of that directory). See test case 351. 43. There seems to be a problem when connecting to the Microsoft telnet server. 43. There seems to be a problem when connecting to the Microsoft telnet server. http://curl.haxx.se/bug/view.cgi?id=1720605 http://curl.haxx.se/bug/view.cgi?id=1720605 Loading
lib/ftp.c +67 −6 Original line number Original line Diff line number Diff line Loading @@ -1279,10 +1279,52 @@ static CURLcode ftp_state_post_listtype(struct connectdata *conn) way. It has turned out that the NLST list output is not the same on all way. It has turned out that the NLST list output is not the same on all servers either... */ servers either... */ NBFTPSENDF(conn, "%s", /* if FTPFILE_NOCWD was specified, we are currently in the user's home directory, so we should add the path as argument for the LIST / NLST / or custom command. Whether the server will support this, is uncertain. The other ftp_filemethods will CWD into dir/dir/ first and then just do LIST (in that case: nothing to do here) */ char *cmd,*lstArg,*slashPos; lstArg = NULL; if((data->set.ftp_filemethod == FTPFILE_NOCWD) && data->reqdata.path && data->reqdata.path[0] && strchr(data->reqdata.path,'/')) { lstArg = strdup(data->reqdata.path); if(!lstArg) return CURLE_OUT_OF_MEMORY; /* Check if path does not end with /, as then we cut off the file part */ if(lstArg[strlen(lstArg) - 1] != '/') { /* chop off the file part if format is dir/dir/file */ slashPos = strrchr(lstArg,'/'); *(slashPos+1) = '\0'; } } cmd = aprintf( "%s%s%s", data->set.str[STRING_CUSTOMREQUEST]? data->set.str[STRING_CUSTOMREQUEST]? data->set.str[STRING_CUSTOMREQUEST]: data->set.str[STRING_CUSTOMREQUEST]: (data->set.ftp_list_only?"NLST":"LIST")); (data->set.ftp_list_only?"NLST":"LIST"), lstArg? " ": "", lstArg? lstArg: "" ); if(!cmd) return CURLE_OUT_OF_MEMORY; NBFTPSENDF(conn, "%s",cmd); if(lstArg) free(lstArg); free(cmd); state(conn, FTP_LIST); state(conn, FTP_LIST); Loading Loading @@ -3036,7 +3078,7 @@ CURLcode Curl_ftp_done(struct connectdata *conn, CURLcode status, size_t flen = ftp->file?strlen(ftp->file):0; /* file is "raw" already */ size_t flen = ftp->file?strlen(ftp->file):0; /* file is "raw" already */ size_t dlen = strlen(path)-flen; size_t dlen = strlen(path)-flen; if(!ftpc->cwdfail) { if(!ftpc->cwdfail) { if(dlen) { if(dlen && (data->set.ftp_filemethod != FTPFILE_NOCWD)) { ftpc->prevpath = path; ftpc->prevpath = path; if(flen) if(flen) /* if 'path' is not the whole string */ /* if 'path' is not the whole string */ Loading Loading @@ -3695,7 +3737,26 @@ CURLcode ftp_parse_url_path(struct connectdata *conn) switch(data->set.ftp_filemethod) { switch(data->set.ftp_filemethod) { case FTPFILE_NOCWD: case FTPFILE_NOCWD: /* fastest, but less standard-compliant */ /* fastest, but less standard-compliant */ /* The best time to check whether the path is a file or directory is right here. so: the first condition in the if() right here, is there just in case someone decides to set path to NULL one day */ if(data->reqdata.path && data->reqdata.path[0] && (data->reqdata.path[strlen(data->reqdata.path) - 1] != '/') ) ftp->file = data->reqdata.path; /* this is a full file path */ ftp->file = data->reqdata.path; /* this is a full file path */ else ftp->file = NULL; /* ftp->file is not used anywhere other than for operations on a file. In other words, never for directory operations. So we can safely set it to NULL here and use it as a argument in dir/file decisions. */ break; break; case FTPFILE_SINGLECWD: case FTPFILE_SINGLECWD: Loading
tests/data/DISABLED +1 −1 Original line number Original line Diff line number Diff line Loading @@ -4,4 +4,4 @@ # per line. # per line. # Lines starting with '#' letters are treated as comments. # Lines starting with '#' letters are treated as comments. #230 #230 351