浏览代码

Fixed test server stop message handling

Moved receive of stop message to listening process
instead of connection and modified listener to come
up for air every once in a while to process.
pull/123/head
benjaminplee 10 年前
父节点
当前提交
d6e542b256
共有 1 个文件被更改,包括 13 次插入4 次删除
  1. +13
    -4
      test/ibrowse_test_server.erl

+ 13
- 4
test/ibrowse_test_server.erl 查看文件

@ -1,5 +1,7 @@
%%% File : ibrowse_test_server.erl %%% File : ibrowse_test_server.erl
%%% Author : Chandrashekhar Mullaparthi <chandrashekhar.mullaparthi@t-mobile.co.uk> %%% Author : Chandrashekhar Mullaparthi <chandrashekhar.mullaparthi@t-mobile.co.uk>
%%% Benjamin Lee <yardspoon@gmail.com>
%%% Brian Richards <bmrichards16@gmail.com>
%%% Description : A server to simulate various test scenarios %%% Description : A server to simulate various test scenarios
%%% Created : 17 Oct 2010 by Chandrashekhar Mullaparthi <chandrashekhar.mullaparthi@t-mobile.co.uk> %%% Created : 17 Oct 2010 by Chandrashekhar Mullaparthi <chandrashekhar.mullaparthi@t-mobile.co.uk>
@ -12,6 +14,7 @@
-record(request, {method, uri, version, headers = [], body = []}). -record(request, {method, uri, version, headers = [], body = []}).
-define(dec2hex(X), erlang:integer_to_list(X, 16)). -define(dec2hex(X), erlang:integer_to_list(X, 16)).
-define(ACCEPT_TIMEOUT_MS, 1000).
start_server(Port, Sock_type) -> start_server(Port, Sock_type) ->
Fun = fun() -> Fun = fun() ->
@ -38,6 +41,7 @@ start_server(Port, Sock_type) ->
stop_server(Port) -> stop_server(Port) ->
server_proc_name(Port) ! stop, server_proc_name(Port) ! stop,
timer:sleep(2000), % wait for server to receive msg and unregister
ok. ok.
server_proc_name(Port) -> server_proc_name(Port) ->
@ -51,9 +55,9 @@ do_listen(ssl, Port, Opts) ->
ssl:listen(Port, Opts). ssl:listen(Port, Opts).
do_accept(tcp, Listen_sock) -> do_accept(tcp, Listen_sock) ->
gen_tcp:accept(Listen_sock);
gen_tcp:accept(Listen_sock, ?ACCEPT_TIMEOUT_MS);
do_accept(ssl, Listen_sock) -> do_accept(ssl, Listen_sock) ->
ssl:ssl_accept(Listen_sock).
ssl:ssl_accept(Listen_sock, ?ACCEPT_TIMEOUT_MS).
accept_loop(Sock, Sock_type) -> accept_loop(Sock, Sock_type) ->
case do_accept(Sock_type, Sock) of case do_accept(Sock_type, Sock) of
@ -65,6 +69,13 @@ accept_loop(Sock, Sock_type) ->
set_controlling_process(Conn, Sock_type, Pid), set_controlling_process(Conn, Sock_type, Pid),
Pid ! {setopts, [{active, true}]}, Pid ! {setopts, [{active, true}]},
accept_loop(Sock, Sock_type); accept_loop(Sock, Sock_type);
{error, timeout} ->
receive
stop ->
ok
after 10 ->
accept_loop(Sock, Sock_type)
end;
Err -> Err ->
Err Err
end. end.
@ -101,8 +112,6 @@ server_loop(Sock, Sock_type, #request{headers = Headers} = Req) ->
{tcp_closed, Sock} -> {tcp_closed, Sock} ->
do_trace("Client closed connection~n", []), do_trace("Client closed connection~n", []),
ok; ok;
stop ->
ok;
Other -> Other ->
do_trace("Recvd unknown msg: ~p~n", [Other]), do_trace("Recvd unknown msg: ~p~n", [Other]),
exit({unknown_msg, Other}) exit({unknown_msg, Other})

正在加载...
取消
保存