From 9176df9eb5a10c3aaee0dd4bc424f9453c441c9d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Wirtel?= <stephane@wirtel.be>
Date: Tue, 2 Sep 2014 18:30:04 +0200
Subject: Add Transport:secure/0

Currently Ranch checks if a connection is secure by checking if its name
is 'ssl'. This isn't a very modular solution, adding an API function
that returns whether a connection is secure.
---
 ROADMAP.md              | 7 -------
 src/ranch_ssl.erl       | 5 +++++
 src/ranch_tcp.erl       | 5 +++++
 src/ranch_transport.erl | 2 +-
 4 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/ROADMAP.md b/ROADMAP.md
index deb6604..c2cb8a5 100644
--- a/ROADMAP.md
+++ b/ROADMAP.md
@@ -31,10 +31,3 @@ are not ordered.
 
     We should be able to add more acceptors to a pool but also
     to remove some of them as needed.
-
-*   Add Transport:secure/0.
-
-    Currently Ranch checks if a connection is secure by
-    checking if its name is 'ssl'. This isn't a very modular
-    solution,  adding an API function that returns whether
-    a connection is secure would fix that issue.
diff --git a/src/ranch_ssl.erl b/src/ranch_ssl.erl
index e30b75c..e25bbd6 100644
--- a/src/ranch_ssl.erl
+++ b/src/ranch_ssl.erl
@@ -16,6 +16,7 @@
 -behaviour(ranch_transport).
 
 -export([name/0]).
+-export([secure/0]).
 -export([messages/0]).
 -export([listen/1]).
 -export([accept/2]).
@@ -66,6 +67,10 @@
 
 name() -> ssl.
 
+-spec secure() -> boolean().
+secure() ->
+    true.
+
 messages() -> {ssl, ssl_closed, ssl_error}.
 
 -spec listen(opts()) -> {ok, ssl:sslsocket()} | {error, atom()}.
diff --git a/src/ranch_tcp.erl b/src/ranch_tcp.erl
index 8e24d3c..e3bcf81 100644
--- a/src/ranch_tcp.erl
+++ b/src/ranch_tcp.erl
@@ -16,6 +16,7 @@
 -behaviour(ranch_transport).
 
 -export([name/0]).
+-export([secure/0]).
 -export([messages/0]).
 -export([listen/1]).
 -export([accept/2]).
@@ -47,6 +48,10 @@
 
 name() -> tcp.
 
+-spec secure() -> boolean().
+secure() ->
+    false.
+
 messages() -> {tcp, tcp_closed, tcp_error}.
 
 -spec listen(opts()) -> {ok, inet:socket()} | {error, atom()}.
diff --git a/src/ranch_transport.erl b/src/ranch_transport.erl
index 2ccbd4d..83cc9bb 100644
--- a/src/ranch_transport.erl
+++ b/src/ranch_transport.erl
@@ -22,7 +22,7 @@
 -export_type([sendfile_opts/0]).
 
 -callback name() -> atom().
-%% @todo -callback caps(secure | sendfile) -> boolean().
+-callback secure() -> boolean().
 -callback messages() -> {OK::atom(), Closed::atom(), Error::atom()}.
 -callback listen(opts()) -> {ok, socket()} | {error, atom()}.
 -callback accept(socket(), timeout())
-- 
cgit v1.2.3