Release Notes for P4FTP, the Helix FTP Client Version 2015.2 Introduction This document lists all user-visible changes to the Helix FTP Plug-in (P4FTP) between Release 2001.1 and 2015.2. For details about installing and using P4FTP, refer to the Helix P4FTP User's Guide, on the Perforce Web site. Supported Platforms Windows 7 for Intel(x86, x64) Windows 8 for Intel(x86, x64) Windows 8.1 for Intel(x86, x64) Windows 2008 for Intel(x86, x64) Windows 2012 for Intel(x64) Windows 2008 for 64-bit Itanium(ia64) Linux kernel 2.6 for ARM Linux kernel 2.6 for 64-bit Itanium Linux kernel 2.6 for 32-bit Intel(x86,x86_64) FreeBSD 10.0 for Intel(x86, x86_64) Mac OS X 10.5, 10.6, 10.7, 10.8 for Intel(x86,x86_64) Apple Darwin 9.0 for Intel(x86,x86_64) Interoperating With Previous Releases 1. Unless stated otherwise you can intermix any release Helix Perforce FTP Plug-in with any released Perforce server later than 99.1, but any functionality new to 2011.1 may require you to upgrade the plug-in and/or the server. Upgrade requirements are indicated using the following marks in the notes below. * -- requires new p4ftpd plug-in program ** -- requires new p4d server program Note that pre-2000.2 servers do not support the 'p4 fstat -l' command, which means that the FTP 'ls' command cannot return file size. HTML editor compatibility The Helix P4FTP User's Guide tells you how to configure several popular HTML editors to access depot files using P4FTP. These editors are the ones we have verified as working with P4FTP, but any HTML editor that supports FTP access of remote sites will probably work. Mapping depots as FTP sites You can make depots accessible to users using operating system features that enable you to map FTP sites as network drives or shares. * Windows: Use the 'Add Network Place' wizard to add a folder connected to the P4FTP server * Mac OS X: Use the 'Connect to Server' dialog * Linux: Build ftpfs (http://lufs.sourceforge.net/lufs). Use the following format for the URL (assuming P4FTP is using port 1234: ftp://p4ftp_host_name/ or: ftp://p4ftp_host_name:1234/ Known problems The following known Perforce 2000.2 server problem affects P4FTP's ability to report file size on Windows computers: Bug 5187: p4 fstat -l reports size "qd" on Windows server. Attempting to retrieve the file size of a file in the depot from a Windows based server reports the size as "qd". This problem does not affect users with 2001.1 or later Perforce Servers. --------------------------------------------------------------------------- Major new functionality in 2012.2 (none) Minor new functionality in 2012.2 # 449805 ZeroConf support has been removed. Bugs fixed in 2012.2 # 472774 (Bug #48801) Login errors caused by protections no longer hang the client. # 472584 (Bug #50337) The LIST (ls) command no longer returns duplicate directories after some operations. # 471093 (Bug #44325) The help output now correctly specifies the 'ftp' prefix for the debug flag. --------------------------------------------------------------------------- Major new functionality in 2012.1 (none) Minor new functionality in 2012.1 (none) Bugs fixed in 2012.1 # 389030 (Bug #49828) inetd functionality has been restored. --------------------------------------------------------------------------- Major new functionality in 2011.1 (none) Minor new functionality in 2011.1 # 329204, 364450 (Bugs #43441, #49190) * Ticket-based authentication is now supported. --------------------------------------------------------------------------- Major new functionality in 2010.2 (none) Minor new functionality in 2010.2 (none) --------------------------------------------------------------------------- Major new functionality in 2010.1 (none) Minor new functionality in 2010.1 # 229903 * Support for UTF8 paths has been improved so that P4FTP is capable of handling a wider variety of filenames. This also improves compliance with RFC2640. # 245962 * # 229873 * To improve compliance with RFC2640, it is no longer necessary to set P4CHARSET for P4FTP when your Perforce Server is in internationalized mode. P4FTP now detects that the server is operating in internationalized mode and automatically selects UTF8 as the character set to use. This also enables the "UTF8" response to the FTP "FEAT" command. --------------------------------------------------------------------------- Major new functionality in 2009.2 (none) Minor new functionality in 2009.2 (none) Bugs fixed since first release (228098) # 237660 * The use of some commands before logging in could cause P4FTP to crash. The affected commands were: MKD, DELE, RETR, and LIST These problems have been corrected. (Bug#38039) --------------------------------------------------------------------------- Major new functionality in 2009.1 (none) Minor new functionality in 2009.1 (none) --------------------------------------------------------------------------- Major new functionality in 2008.2 (none) Minor new functionality in 2008.2 (none) Bugs fixed since first release (179173) # 265006 * P4FTP included files that had been renamed using 'p4 move' in directory listings, and attempts to fetch these files could cause P4FTP to disconnect the session. (Bug#40759) # 182204 * With protections in place, P4FTP could fail to correctly list a directory's contents and report an Internal Error. This problem only occurred when P4FTP was used with a 2008.1 or later Perforce Server, and has now been corrected. (Bug#32057) --------------------------------------------------------------------------- Major new functionality in 2008.1 # 151438 * P4FTP now supports 'zeroconf' networking, and can register itself with mDNS allowing users to find P4FTP servers using by service name, rather than host name and port. To support this functionality, three new options have been added to P4FTP: zconf - Advertise service using ZeroConf zname= - Specify service name zdesc= - Specify service description These options may be specified on the command line (using 'p4ftpd -O zconf -O zname= -O zdesc='), or by adding them to the value of the P4FTPOPTIONS environment variable. (SIR#28423) --------------------------------------------------------------------------- Major new functionality in 2007.3 (none) Bugs fixed in 2007.3 # 131811 * P4FTP did not correctly handle paths containing redundant /'s, such as '////path////to////some////directory'. This problem has been corrected. (BUG#24314) # 131803 * 'p4ftpd -u' did not correctly update the environment when switching to a different user-id. In particular, the fact that the value of $HOME was not updated affected ticket handling. Now P4FTP adapts its environment more completely to the change of user. (BUG#25021) --------------------------------------------------------------------------- Major new functionality in 2007.2 (none) --------------------------------------------------------------------------- Major new functionality in 2006.2 (none) Minor new functionality in 2006.2 # 101315 * P4FTP now displays the file modification time rather than the submit time in directory listings when used with a 2006.1 or later Perforce Server. When used with older servers, the submit time is still displayed. (SIR #19793) --------------------------------------------------------------------------- Major new functionality in 2006.1 (none) Minor new functionality in 2006.1 # 95388 * P4FTP now contains limited support for the FTP ABOR (abort) command. This improves compatibility with the few FTP clients that issue aborts. (SIR #18626) --------------------------------------------------------------------------- Major new functionality in 2005.2 (none) Minor new functionality in 2005.2 (none) Bugs fixed since first beta release (88704) # 89610 * P4FTP was leaking file handles on uploads (FTP PUT). This problem has been fixed. (BUG#19488) Bugs fixed in 2005.2 # 87337 * # 87336 * # 83827 * It was not possible to add files to a P4FTP-hosted site via Macromedia DreamWeaver when using 'p4ftpd -O dwlocking'. This problem has been fixed. (BUG#17433) --------------------------------------------------------------------------- Major new functionality in 2005.1 (none) Minor new functionality in 2005.1 # 71890 * # 71885 * P4FTP's 'dwlocking' option has been updated to support the lockfile format used by DreamWeaver 2004 MX. For backwards compatibility, the previous (DreamWeaver 4) format, is now available via the new 'dw4locking' option. (SIR #14946) Bugs fixed in 2005.1 # 72008 * The P4FTPOPTIONS environment variable was not being parsed correctly when more than one option was specified. This problem has been corrected ( Bug #14986) # 71891 * The existence of a *.LCK file in the depot would cause problems for DreamWeaver users when P4FTP was started with the '-O dwlocking' flag. P4FTP will now ignore any pre-existing *.LCK files in the depot when started with the '-O dwlocking' or '-O dw4locking' options. (Bug #13271) --------------------------------------------------------------------------- Major new functionality in 2004.2 SUPPORT FOR INTERNATIONALISED SERVERS # 55149 * P4FTP will now use the character set specified by the P4CHARSET environment variable when connected to a Perforce Server running in unicode mode. For correct transferal of files, FTP clients should use the same character set. Minor new functionality in 2004.2 # 55681 * ** P4FTP will now make use of the new 'p4 login' command when connected to a 2003.2 or later server. --------------------------------------------------------------------------- Major new functionality in 2003.2 (none) Minor new functionality in 2003.2 IMPROVED SUPPORT FOR DREAMWEAVER LOCK FILES #48700 * P4FTP will now provide both the username and the email address in DreamWeaver .LCK files. (SIR #11449) Bugs fixed in 2003.2 #62091 * Previously P4FTP did not restrict the IP address and port number to which files would be delivered. This meant it could be used as part of a "bounce attack" (see RFC2577). In accordance with RFC2577, P4FTP will now restrict all outbound data connections to port numbers greater than 1023. In addition to this restriction, P4FTP will now only establish a data connection back to the IP address from which the control connection originates. This latter restriction is not compliant with RFC959 as it breaks so-called "proxy FTP", but will not affect normal use of P4FTP. (Bug# 14667) #48880 * When started as a service on Windows platforms, P4FTP was not reading environment variables from the service area of the Windows registry but from the user area or system area instead. This made it difficult to set the correct P4CLIENT, P4USER and P4PASSWD values for use with P4FTP's autosync option. These values are now correctly read from the service environment. (Bug#11845) #48879 * When configured to start as a service on Windows platforms, P4FTP would fail to start if the executable filename was provided in upper- or mixed-case. This fault has been corrected (Bug#11841) #48700 * P4FTP previously reported DreamWeaver lockfiles (*.LCK) as being zero bytes long and this caused some problems for Macromedia Contribute. P4FTP will now report the correct size of DreamWeaver .LCK files. (Bug #11448) #48695 * Documentation for "p4ftpd -O keepfiles" was missing from the output of "p4ftpd -h". This fault has been corrected (Bug #11231) --------------------------------------------------------------------------- Major new functionality in 2003.1 (none) Minor new functionality in 2003.1 KEEP FILES IN WORKSPACE OPTION #43787 * P4FTP can now optionally leave files in the client workspace after an FTP GET/PUT operation. This is useful when several FTP sessions with the same Perforce username (and client) may be active concurrently as it prevents errors due to removal of files by other sessions. To enable this behaviour, either set P4FTPOPTIONS=keepfiles or start p4ftpd with the new '-O keepfiles' command line flag. Bugs fixed since first release (2003.1/46260) #50318 * Sending P4FTP a path beginning with two leading /'s could cause it to go into a loop. Macromedia DreamWeaver MX uses paths in this form to ensure that "//main" is the same location as "/main/". This fault has been corrected. (Bug #12420) --------------------------------------------------------------------------- Major new functionality in 2002.2 (none) Minor new functionality in 2002.2 #31516 * ** P4FTP now supports the use of the P4LANGUAGE environment variable to allow Perforce error messages to be reported in the local language. FTP error messages are available only in English because some badly-behaved FTP clients might parse this text. Note that P4LANGUAGE must be set in the p4ftp server's environment rather than on the FTP client machine. Bugs fixed in 2002.2 #38096 * Errors during the submit phase of P4FTP session termination might lead to the p4ftpd thread/process and the p4d thread/process becoming deadlocked as their connection is terminated. This error is most likely to occur if the user does not have permission to write anywhere in the repository (for example, anonymous FTP). This fault has been corrected. (Bug #9752) #37691 * #37692 * P4FTP had a fault that caused it to leak some memory with each connection request. Eventually the process reached a limit imposed by the operating system and the service failed at that point. This fault has been corrected (Bug #9626) --------------------------------------------------------------------------- Major new functionality in 2002.1 #27695 * #26618 * #26523 * P4FTP can now keep a designated clientspec synced with the depot to allow publishing of Web sites under development to the web server's document root. There are three new command line and environmental settings that configure this behaviour: -O autosync - Enables automatic syncing of client -O syncdelay= - Specify the interval between syncs (default 300). Implies autosync. -O syncspec= - Specify the files to sync (defaults to "//..." ). Implies autosync. These options can also be specified through the P4FTPOPTIONS environment variable. For example: (Unix) P4FTPOPTIONS="autosync,syncdelay=100,syncspec=//...@label" export P4FTPOPTIONS (Windows) p4 set P4FTPOPTIONS="autosync" Note that the Perforce environment (P4CLIENT/P4USER/P4PASSWD etc.) for the AutoSync client are obtained from the environment or a P4CONFIG file if applicable at the time that P4FTP is started. None of these settings are supplied by P4FTP users. The P4PORT value supplied on the P4FTP command line using the "-p" flag ( "p4ftpd -p " ) overrides any environmental or config file settings. (SIR #5466) #26399 ** #26393 ** #25260 ** Add optional support for Macromedia Dreamweaver's file locking scheme to P4FTP. To enable, specify the "-O dwlocking" command line flag or set the P4FTPOPTIONS environment variable. For example: Windows NT/2000 p4 set P4FTPOPTIONS=dwlocking p4ftpd UNIX export P4FTPOPTIONS=dwlocking (ksh) setenv P4FTPOPTIONS dwlocking (csh) p4ftpd The "dwlocking" option changes many aspects of P4FTP's behaviour: * P4FTP lists a *.LCK file for every file in the depot that is locked or has the +l modifier on the head revision. * When an FTP user uploads a .LCK file, P4FTP opens the base file for edit and locks it. * When an FTP user downloads a .LCK file, P4FTP determines the name of the user who has the file locked and creates a file containing this username. This file is then transferred to the user. This means that *.LCK files will only ever contain Perforce usernames. * When an FTP user deletes a .LCK file, a submit is triggered. The submit process is significantly different to that of standard P4FTP and is designed to provide Dreamweaver users with the ability to create Perforce changelists. The process is as follows: 1. 'p4 opened' is run to save the list of open files. 2. 'p4 revert -a' is run to prevent unnecessary revisions. 3. 'p4 submit' is used to submit *all* remaining open files. 4. Every file *except* the one that the user checked in is reopened for edit. This approach means that a user who uploads several files and then checks in can create a changelist containing those files even though Dreamweaver requires users to check in their files one by one. Subsequent checkins without new versions of the files have no effect due to the 'revert -a'. Subsequent checkins of new versions of the files create another changelist. * Dreamweaver users cannot override each others' locks as they can when using a regular FTP server, because they can't run a 'p4 -u xxx unlock' without knowing that users password. * P4FTP does not submit when the session is disconnected. (SIR #6280) Minor new functionality in 2002.1 #30388 * P4FTP now shows the client template specified by either the -T flag or the environment variable P4FTPTEMPLATE in its startup message. (SIR #7421) #26697 * On UNIX platforms, P4FTP allows the specification of a username to be used by the p4ftpd process after initialisation is complete. This feature enables a p4ftpd started by the root user to open a privileged TCP port (such as the default FTP port - port 21) and then renounce its root privileges by setting its user ID to that of the specified user. Example: # p4ftpd -u perforce #26420 * P4FTP now supports the FTP "help" command for both FTP protocol commands and site specific commands ("HELP SITE"). #26397 * P4FTP now allows users to manually revert files that they have open through the FTP protocol's "SITE" command. To revert a file, issue the following command directly to the P4FTP server: SITE REVERT (SIR #5531) Bugs fixed in 2002.1 #31462 * P4PASSWD values in P4CONFIG files visible to p4ftpd at startup were used at login if the user supplied no password. Thus if the password in the P4CONFIG file matched that of the user name provided it was possible to log in without providing a valid password. This problem has been corrected. (Bug #7477) #30348 * P4FTP did not correctly handle client roots containing a trailing "\" or "/". This problem has been corrected (Bug #7424) #26960 * Perforce 99.2 compatibility fix. P4FTP was not correctly handling the output of "p4 client -o" and "p4 change -o" from 99.2 servers. This problem caused P4FTP to crash when a user attempted to log in to a P4FTP server running against a 99.2 Perforce server. (Bug #6691) #26653 * On Windows NT platforms, the premature disconnection of one session could cause P4FTP to erroneously exit, shutting down the whole server. (Bug #6630) #25132 * Add basic support for symlinks to P4FTP. Symlinks to directories are not yet supported, but this change adds support for get/put of symlinks to files visible through the client view. (SIR #5103) #25097 * When renaming files where all revisions have already been integrated, P4FTP readded the last good revision of the target file. This is not the correct behaviour in all circumstances and can lead to the wrong file being re-added. P4FTP now uses "p4 integrate -f" to force the reintegration in this case to ensure that the correct file is propagated (Bug #6244) #24928 * Fix bug in FTP MDTM (modtime) command. P4FTP did not correctly handle dates with single-digit components. (Bug #6207) --------------------------------------------------------------------------- Changes since 2001.1/23985 (initial release) #24672 * P4FTP now correctly handles directory listings in areas of the depot that are above the user's effective permissions. In these areas, "p4 dirs" produces a list of accessible directories, but "p4 fstat" produces an "access denied" error that was not being detected. This has been corrected (Bug #6098). #24670 * P4FTP now handles the extra output of "p4 where" commands when exclusionary protections are in effect. Previously, exclusionary protections might give rise to incorrect directory listings showing directories at the wrong level in the hierarchy. (Bug #6066) Changes since Beta Release #22871 * P4FTP now hides the client root in all communication with the FTP client. As part of this change, P4FTP now uses UNIX style canonical paths on all platforms. #22248 * P4FTP will now correctly get the file size of files opened for edit from the client workspace rather than from the depot. (Bug #5465) #22247 * Dreamweaver 4 users can now synchronise sites through P4FTP. P4FTP now reports the file size of all files of unknown size to be 1 byte, including files affected by bug #5187 (see top) (Bug #5421) #22178 * Dreamweaver can now determine the server time using its MKD/RMD technique. (Bug #5414) #22128 * Incorrect 450 response to a failed RNFR command. P4FTP now correctly responds with a 550 message. (Bug #5399)