Browse Source

Add cowboy_http_req:transport/1 function.

Magnus Klaar 13 years ago
parent
commit
612b8f21fe
1 changed files with 13 additions and 1 deletions
  1. 13 1
      src/cowboy_http_req.erl

+ 13 - 1
src/cowboy_http_req.erl

@@ -46,7 +46,7 @@
 ]). %% Response API.
 
 -export([
-	compact/1
+	compact/1, transport/1
 ]). %% Misc API.
 
 -include("include/http.hrl").
@@ -523,6 +523,18 @@ compact(Req) ->
 		bindings=undefined, headers=[],
 		p_headers=[], cookies=[]}.
 
+%% @doc Return the transport module and socket associated with a request.
+%%
+%% This exposes the same socket interface used internally by the HTTP protocol
+%% implementation to developers that needs low level access to the socket.
+%%
+%% It is preferred to use this in conjuction with the stream function support
+%% in `set_resp_body/2' if this is used to write a response body directly to
+%% the socket. This ensures that the response headers are set correctly.
+-spec transport(#http_req{}) -> {ok, module(), inet:socket()}.
+transport(#http_req{transport=Transport, socket=Socket}) ->
+	{ok, Transport, Socket}.
+
 %% Internal.
 
 -spec parse_qs(binary(), fun((binary()) -> binary())) ->