aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Kriechbaumer <thomas@kriechbaumer.name>2015-06-08 11:29:01 +0200
committerThomas Kriechbaumer <thomas@kriechbaumer.name>2015-06-08 12:52:06 +0200
commit4666d1e7bbf77b470d938d873d1a760283963adf (patch)
tree3fdbcd20f7a7b7b2ca13335cad94c0ac81862207
parentff478b5290fdd9aad9d8ba5b4e48a2f4bf54177c (diff)
downloadmitmproxy-4666d1e7bbf77b470d938d873d1a760283963adf.tar.gz
mitmproxy-4666d1e7bbf77b470d938d873d1a760283963adf.tar.bz2
mitmproxy-4666d1e7bbf77b470d938d873d1a760283963adf.zip
improve ALPN support on travis
-rw-r--r--.travis.yml53
-rw-r--r--netlib/tcp.py19
2 files changed, 58 insertions, 14 deletions
diff --git a/.travis.yml b/.travis.yml
index a1eafcea..83fcc265 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,26 +1,67 @@
language: python
+
sudo: false
+
python:
- "2.7"
- pypy
-# command to install dependencies, e.g. pip install -r requirements.txt --use-mirrors
+
+matrix:
+ include:
+ - python: 2.7
+ env: OPENSSL=1.0.2
+ addons:
+ apt:
+ sources:
+ # Debian sid currently holds OpenSSL 1.0.2
+ # change this with future releases!
+ - debian-sid
+ packages:
+ - libssl-dev
+ - python: pypy
+ env: OPENSSL=1.0.2
+ addons:
+ apt:
+ sources:
+ # Debian sid currently holds OpenSSL 1.0.2
+ # change this with future releases!
+ - debian-sid
+ packages:
+ - libssl-dev
+
install:
- "pip install --src . -r requirements.txt"
-# command to run tests, e.g. python setup.py test
+
+before_script:
+ - "openssl version -a"
+
script:
- "nosetests --with-cov --cov-report term-missing"
- "./check_coding_style.sh"
+
after_success:
- coveralls
+
notifications:
irc:
channels:
- "irc.oftc.net#mitmproxy"
on_success: change
on_failure: always
+
+# exclude cryptography from cache
+# it depends on libssl-dev version
+# which needs to be compiled specifically to each version
+before_cache:
+ - pip uninstall -y cryptography
+ - rm -rf /home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/cryptography/
+ - rm -rf /home/travis/virtualenv/pypy-2.5.0/site-packages/cryptography/
+ - rm /home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/contrib/pyopenssl.py
+ - rm /home/travis/virtualenv/pypy-2.5.0/site-packages/pip/_vendor/requests/packages/urllib3/contrib/pyopenssl.py
+
cache:
directories:
- - /home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages
- - /home/travis/virtualenv/python2.7.9/bin
- - /home/travis/virtualenv/pypy-2.5.0/site-packages
- - /home/travis/virtualenv/pypy-2.5.0/bin
+ - /home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages
+ - /home/travis/virtualenv/python2.7.9/bin
+ - /home/travis/virtualenv/pypy-2.5.0/site-packages
+ - /home/travis/virtualenv/pypy-2.5.0/bin
diff --git a/netlib/tcp.py b/netlib/tcp.py
index f6179faa..fc2ce115 100644
--- a/netlib/tcp.py
+++ b/netlib/tcp.py
@@ -6,6 +6,8 @@ import sys
import threading
import time
import traceback
+
+import OpenSSL
from OpenSSL import SSL
from . import certutils
@@ -401,16 +403,17 @@ class _Connection(object):
if log_ssl_key:
context.set_info_callback(log_ssl_key)
- # advertise application layer protocols
- if alpn_protos is not None:
- context.set_alpn_protos(alpn_protos)
+ if OpenSSL._util.lib.Cryptography_HAS_ALPN:
+ # advertise application layer protocols
+ if alpn_protos is not None:
+ context.set_alpn_protos(alpn_protos)
- # select application layer protocol
- if alpn_select is not None:
- def alpn_select_f(conn, options):
- return bytes(alpn_select)
+ # select application layer protocol
+ if alpn_select is not None:
+ def alpn_select_f(conn, options):
+ return bytes(alpn_select)
- context.set_alpn_select_callback(alpn_select_f)
+ context.set_alpn_select_callback(alpn_select_f)
return context