Add a stunnel mode for Perforce.
Review Request #2482 — Created July 15, 2011 and submitted — Latest diff uploaded
Add a stunnel mode for Perforce. Out of the box, Perforce doesn't support any sort of secure connectivity. This is an artifact of the sorts of environment that Perforce is usually run in, but isn't really a modern approach to life (people want security even inside the firewall). The suggested workaround for this is to run a stunnel proxy on the server, and a stunnel client proxy on the client. Users can then connect using a localhost: P4PORT and the encryption will be handled by stunnel. This change adds support for this configuration, by adding a special stunnel: prefix to the P4PORT setting. When someone uses this prefix, the port will be interpreted as a stunnel server to connect to. We then spin up a stunnel client on a random port and use that as the P4PORT. When we're done, we disconnect perforce and kill the stunnel process. This is a little complicated in implementation because stunnel can either run in the foreground (in which case we race to see whether we try to connect before it listens on the local port), or it can run in the background (in which case we race the -filesystem- for when it writes out its PID file). I've chosen the latter case as the lesser of the two races.
- Unit tests - Tested setting up a stunnel server and adding that repository via stunnel:localhost:port, and posted a review request to it. The changeset contents and diff loaded just fine.