You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by fd...@apache.org on 2011/02/01 07:47:32 UTC

svn commit: r1065922 - in /couchdb/branches/1.1.x: etc/couchdb/default.ini.tpl.in etc/couchdb/local.ini src/couchdb/couch_httpd.erl

Author: fdmanana
Date: Tue Feb  1 06:47:32 2011
New Revision: 1065922

URL: http://svn.apache.org/viewvc?rev=1065922&view=rev
Log:
Backport COUCHDB-1008 from trunk (revision 1055592)

The motivation for this backport is to prevent the "nodelay" option,
under section "httpd", from reaching version 1.1. This patch introduces
the "socket_options" configuration parameter which is more generic - it
allows nodelay as well as other socket options to be specified. Not adding
this patch to 1.1.x would imply still supporting the "nodelay" parameter in
future releases to avoid breaking the configuration API.


Modified:
    couchdb/branches/1.1.x/etc/couchdb/default.ini.tpl.in
    couchdb/branches/1.1.x/etc/couchdb/local.ini
    couchdb/branches/1.1.x/src/couchdb/couch_httpd.erl

Modified: couchdb/branches/1.1.x/etc/couchdb/default.ini.tpl.in
URL: http://svn.apache.org/viewvc/couchdb/branches/1.1.x/etc/couchdb/default.ini.tpl.in?rev=1065922&r1=1065921&r2=1065922&view=diff
==============================================================================
--- couchdb/branches/1.1.x/etc/couchdb/default.ini.tpl.in (original)
+++ couchdb/branches/1.1.x/etc/couchdb/default.ini.tpl.in Tue Feb  1 06:47:32 2011
@@ -20,6 +20,10 @@ default_handler = {couch_httpd_db, handl
 secure_rewrites = true
 vhost_global_handlers = _utils, _uuids, _session, _oauth, _users
 allow_jsonp = false
+; Options for the MochiWeb HTTP server.
+;server_options = [{backlog, 128}, {acceptor_pool_size, 16}]
+; For more socket options, consult Erlang's module 'inet' man page.
+;socket_options = [{recbuf, 262144}, {sndbuf, 262144}, {nodelay, true}]
 
 [ssl]
 port = 6984

Modified: couchdb/branches/1.1.x/etc/couchdb/local.ini
URL: http://svn.apache.org/viewvc/couchdb/branches/1.1.x/etc/couchdb/local.ini?rev=1065922&r1=1065921&r2=1065922&view=diff
==============================================================================
--- couchdb/branches/1.1.x/etc/couchdb/local.ini (original)
+++ couchdb/branches/1.1.x/etc/couchdb/local.ini Tue Feb  1 06:47:32 2011
@@ -10,6 +10,11 @@
 [httpd]
 ;port = 5984
 ;bind_address = 127.0.0.1
+; Options for the MochiWeb HTTP server.
+;server_options = [{backlog, 128}, {acceptor_pool_size, 16}]
+; For more socket options, consult Erlang's module 'inet' man page.
+;socket_options = [{recbuf, 262144}, {sndbuf, 262144}, {nodelay, true}]
+
 ; Uncomment next line to trigger basic-auth popup on unauthorized requests.
 ;WWW-Authenticate = Basic realm="administrator"
 

Modified: couchdb/branches/1.1.x/src/couchdb/couch_httpd.erl
URL: http://svn.apache.org/viewvc/couchdb/branches/1.1.x/src/couchdb/couch_httpd.erl?rev=1065922&r1=1065921&r2=1065922&view=diff
==============================================================================
--- couchdb/branches/1.1.x/src/couchdb/couch_httpd.erl (original)
+++ couchdb/branches/1.1.x/src/couchdb/couch_httpd.erl Tue Feb  1 06:47:32 2011
@@ -57,8 +57,6 @@ start_link(Name, Options) ->
     % will restart us and then we will pick up the new settings.
 
     BindAddress = couch_config:get("httpd", "bind_address", any),
-    NoDelay = "true" == couch_config:get("httpd", "nodelay", "false"),
-
     DefaultSpec = "{couch_httpd_db, handle_request}",
     DefaultFun = make_arity_1_fun(
         couch_config:get("httpd", "default_handler", DefaultSpec)
@@ -82,7 +80,17 @@ start_link(Name, Options) ->
     UrlHandlers = dict:from_list(UrlHandlersList),
     DbUrlHandlers = dict:from_list(DbUrlHandlersList),
     DesignUrlHandlers = dict:from_list(DesignUrlHandlersList),
+    {ok, ServerOptions} = couch_util:parse_term(
+        couch_config:get("httpd", "server_options", "[]")),
+    {ok, SocketOptions} = couch_util:parse_term(
+        couch_config:get("httpd", "socket_options", "[]")),
     Loop = fun(Req)->
+        case SocketOptions of
+        [] ->
+            ok;
+        _ ->
+            ok = mochiweb_socket:setopts(Req:get(socket), SocketOptions)
+        end,
         apply(?MODULE, handle_request, [
             Req, DefaultFun, UrlHandlers, DbUrlHandlers, DesignUrlHandlers
         ])
@@ -90,11 +98,10 @@ start_link(Name, Options) ->
 
     % and off we go
 
-    {ok, Pid} = case mochiweb_http:start(Options ++ [
+    {ok, Pid} = case mochiweb_http:start(Options ++ ServerOptions ++ [
         {loop, Loop},
         {name, Name},
-        {ip, BindAddress},
-        {nodelay,NoDelay}
+        {ip, BindAddress}
     ]) of
     {ok, MochiPid} -> {ok, MochiPid};
     {error, Reason} ->
@@ -109,6 +116,10 @@ start_link(Name, Options) ->
             ?MODULE:stop();
         ("httpd", "default_handler") ->
             ?MODULE:stop();
+        ("httpd", "server_options") ->
+            ?MODULE:stop();
+        ("httpd", "socket_options") ->
+            ?MODULE:stop();
         ("httpd_global_handlers", _) ->
             ?MODULE:stop();
         ("httpd_db_handlers", _) ->