Sophie

Sophie

distrib > Fedora > 13 > i386 > media > updates-src > by-pkgid > 3a8a4e125707f447ac98f2525b682832 > files > 5

erlang-mochiweb-1.4.1-5.fc13.src.rpm

From 1b1dcd06c1ac93ef53120114e90d1df036698724 Mon Sep 17 00:00:00 2001
From: Peter Lemenkov <lemenkov@gmail.com>
Date: Tue, 10 Aug 2010 16:10:45 +0400
Subject: [PATCH 5/5] Fixed ssl-related tests on R12B (requires ssl/examples from Erlang/OTP)

Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
---
 src/mochiweb.erl           |   17 +++++++++--------
 src/mochiweb_multipart.erl |   16 ++++++++--------
 2 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/src/mochiweb.erl b/src/mochiweb.erl
index 0e8fedb..38707c0 100644
--- a/src/mochiweb.erl
+++ b/src/mochiweb.erl
@@ -97,12 +97,12 @@ ensure_started(App) ->
 
 -record(treq, {path, body= <<>>, xreply= <<>>}).
 
-ssl_cert_opts() ->
-    EbinDir = filename:dirname(code:which(?MODULE)),
-    CertDir = filename:join([EbinDir, "..", "support", "test-materials"]),
-    CertFile = filename:join(CertDir, "test_ssl_cert.pem"),
-    KeyFile = filename:join(CertDir, "test_ssl_key.pem"),
-    [{certfile, CertFile}, {keyfile, KeyFile}].
+ssl_cert_opts(Role) ->
+    CertDir = filename:join([code:lib_dir(ssl), "examples", "certs", "etc", Role]),
+    CaCertFile = filename:join([CertDir, "cacerts.pem"]),
+    CertFile = filename:join(CertDir, "cert.pem"),
+    KeyFile = filename:join(CertDir, "key.pem"),
+    [{cacertfile, CaCertFile}, {certfile, CertFile}, {keyfile, KeyFile}].
 
 with_server(Transport, ServerFun, ClientFun) ->
     ServerOpts0 = [{ip, "127.0.0.1"}, {port, 0}, {loop, ServerFun}],
@@ -110,8 +110,9 @@ with_server(Transport, ServerFun, ClientFun) ->
         plain ->
             ServerOpts0;
         ssl ->
-            ServerOpts0 ++ [{ssl, true}, {ssl_opts, ssl_cert_opts()}]
+            ServerOpts0 ++ [{ssl, true}, {ssl_opts, ssl_cert_opts("server")}]
     end,
+	io:format("SO: ~p~n",[ServerOpts]),
     {ok, Server} = mochiweb_http:start(ServerOpts),
     Port = mochiweb_socket_server:get(Server, port),
     Res = (catch ClientFun(Transport, Port)),
@@ -222,7 +223,7 @@ client_request(Transport, Port, Method, TestReqs) ->
                     inet:setopts(Socket, L)
             end;
         ssl ->
-            {ok, Socket} = ssl:connect("127.0.0.1", Port, [{ssl_imp, new} | Opts]),
+            {ok, Socket} = ssl:connect("127.0.0.1", Port, [{ssl_imp, new} | ssl_cert_opts("client") ++ Opts]),
             fun (recv) ->
                     ssl:recv(Socket, 0);
                 ({recv, Length}) ->
diff --git a/src/mochiweb_multipart.erl b/src/mochiweb_multipart.erl
index 3069cf4..8f37196 100644
--- a/src/mochiweb_multipart.erl
+++ b/src/mochiweb_multipart.erl
@@ -298,12 +298,12 @@ find_boundary(Prefix, Data) ->
 -include_lib("eunit/include/eunit.hrl").
 -ifdef(TEST).
 
-ssl_cert_opts() ->
-    EbinDir = filename:dirname(code:which(?MODULE)),
-    CertDir = filename:join([EbinDir, "..", "support", "test-materials"]),
-    CertFile = filename:join(CertDir, "test_ssl_cert.pem"),
-    KeyFile = filename:join(CertDir, "test_ssl_key.pem"),
-    [{certfile, CertFile}, {keyfile, KeyFile}].
+ssl_cert_opts(Role) ->
+    CertDir = filename:join([code:lib_dir(ssl), "examples", "certs", "etc", Role]),
+    CaCertFile = filename:join([CertDir, "cacerts.pem"]),
+    CertFile = filename:join(CertDir, "cert.pem"),
+    KeyFile = filename:join(CertDir, "key.pem"),
+    [{cacertfile, CaCertFile}, {certfile, CertFile}, {keyfile, KeyFile}].
 
 with_socket_server(Transport, ServerFun, ClientFun) ->
     ServerOpts0 = [{ip, "127.0.0.1"}, {port, 0}, {loop, ServerFun}],
@@ -311,7 +311,7 @@ with_socket_server(Transport, ServerFun, ClientFun) ->
         plain ->
             ServerOpts0;
         ssl ->
-            ServerOpts0 ++ [{ssl, true}, {ssl_opts, ssl_cert_opts()}]
+            ServerOpts0 ++ [{ssl, true}, {ssl_opts, ssl_cert_opts("server")}]
     end,
     {ok, Server} = mochiweb_socket_server:start(ServerOpts),
     Port = mochiweb_socket_server:get(Server, port),
@@ -320,7 +320,7 @@ with_socket_server(Transport, ServerFun, ClientFun) ->
         plain ->
             gen_tcp:connect("127.0.0.1", Port, ClientOpts);
         ssl ->
-            ClientOpts1 = [{ssl_imp, new} | ClientOpts],
+            ClientOpts1 = [{ssl_imp, new} | ssl_cert_opts("client") ++ ClientOpts],
             {ok, SslSocket} = ssl:connect("127.0.0.1", Port, ClientOpts1),
             {ok, {ssl, SslSocket}}
     end,
-- 
1.7.3.2