Call appropriate sockname function for socket type

COUCHDB: 3049
diff --git a/src/chttpd.erl b/src/chttpd.erl
index e41829e..8a42e62 100644
--- a/src/chttpd.erl
+++ b/src/chttpd.erl
@@ -546,7 +546,7 @@
         undefined ->
             case MochiReq:get_header_value("Host") of
                 undefined ->
-                    {ok, {Address, Port}} = inet:sockname(MochiReq:get(socket)),
+                    {ok, {Address, Port}} = sockname(MochiReq:get(socket)),
                     inet_parse:ntoa(Address) ++ ":" ++ integer_to_list(Port);
                 Value1 ->
                     Value1
@@ -575,6 +575,11 @@
 absolute_uri(#httpd{absolute_uri = URI}, Path) ->
     URI ++ Path.
 
+sockname(Socket) when is_pid(Socket) ->
+    inet:sockname(Socket);
+sockname(Socket) when is_tuple(Socket) -> % is_tuple since ssl_api.hrl is not exposed
+    ssl:sockname(Socket).
+
 unquote(UrlEncodedString) ->
     mochiweb_util:unquote(UrlEncodedString).