Browse Source

Add sockname/1 to the TCP and SSL transports

Andrew Thompson 13 years ago
parent
commit
06a2d636bc
2 changed files with 16 additions and 2 deletions
  1. 8 1
      src/cowboy_ssl_transport.erl
  2. 8 1
      src/cowboy_tcp_transport.erl

+ 8 - 1
src/cowboy_ssl_transport.erl

@@ -24,7 +24,7 @@
 %% @see ssl
 -module(cowboy_ssl_transport).
 -export([name/0, messages/0, listen/1, accept/2, recv/3, send/2, setopts/2,
-	controlling_process/2, peername/1, close/1]).
+	controlling_process/2, peername/1, close/1, sockname/1]).
 
 %% @doc Name of this transport API, <em>ssl</em>.
 -spec name() -> ssl.
@@ -140,6 +140,13 @@ peername(Socket) ->
 close(Socket) ->
 	ssl:close(Socket).
 
+%% @doc Get the local address and port of a socket
+%% @see ssl:sockname/1
+-spec sockname(ssl:sslsocket())
+	-> {ok, {inet:ip_address(), inet:port_number()}} | {error, atom()}.
+sockname(Socket) ->
+	ssl:sockname(Socket).
+
 %% Internal.
 
 -spec require(list(module())) -> ok.

+ 8 - 1
src/cowboy_tcp_transport.erl

@@ -20,7 +20,7 @@
 -module(cowboy_tcp_transport).
 
 -export([name/0, messages/0, listen/1, accept/2, recv/3, send/2, setopts/2,
-	controlling_process/2, peername/1, close/1]).
+	controlling_process/2, peername/1, close/1, sockname/1]).
 
 %% @doc Name of this transport API, <em>tcp</em>.
 -spec name() -> tcp.
@@ -104,3 +104,10 @@ peername(Socket) ->
 -spec close(inet:socket()) -> ok.
 close(Socket) ->
 	gen_tcp:close(Socket).
+
+%% @doc Get the local address and port of a socket
+%% @see inet:sockname/1
+-spec sockname(inet:socket())
+	-> {ok, {inet:ip_address(), inet:port_number()}} | {error, atom()}.
+sockname(Socket) ->
+	inet:sockname(Socket).