Add compatibility with stunnel v4 for Perforce.

Review Request #8011 — Created Feb. 27, 2016 and submitted

Information

Review Board
release-2.6.x

Reviewers

A few years back, we added support for stunnel for Perforce connections.
This supported version 3, which used command line arguments to set up
tunnels. Version 4, introduced in 2002, switched to a configuration file
model, which was not compatible. Version 3 still seemed more common on
some systems at the time, but that's no longer the case, and stunnel was
therefore not an option on anything modern.

This adds support for stunnel v4. We check the version (or rather, check
an argument to determine if it's version 4 or higher), and then build up
configuration files instead of argument lists.

Along with this, I've fixed infinite loop issues that occur when trying
to find a port on MacOS X, and added improved error logging and
recovery.

Tested against stunnel v4. I was able to run the unit tests without any
problems.

I don't have stunnel v3 to test with, but I left the arguments unchanged.

reviewbot
  1. Tool: Pyflakes
    Processed Files:
        reviewboard/scmtools/perforce.py
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        reviewboard/scmtools/perforce.py
    
    
  2. 
      
david
  1. Ship It!
  2. 
      
chipx86
Review request changed
Status:
Completed
Change Summary:
Pushed to release-2.0.x (e3c2c0c)