james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From j...@apache.org
Subject [jira] Commented: (JAMES-283) James should use default backLog value when creating a ServerSocket
Date Wed, 12 May 2004 17:44:03 GMT
The following comment has been added to this issue:

     Author: Noel J. Bergman
    Created: Wed, 12 May 2004 10:42 AM
I agree that a change should be made, but am reluctant to change the backlog value at this
late date without putting the release through testing again.  There is a certain amount of
platform dependency to this issue.  For example, linux systems that use SYN_COOKIES to guard
against a syn flood attack will not see this problem.

However, I have modified the code to allow a <connectionBacklog> element, which currently
defaults to the internal value of 5, and would be willing to vote for that change to go into
the 2.2.0 release, since it does not change the default behavior.

Please review the attached patch ASAP, and let us know if it resolves your problem.  You'll
want to an add <connectionBacklog> element to your <smtpserver> configuration.
View this comment:

View the issue:

Here is an overview of the issue:
        Key: JAMES-283
    Summary: James should use default backLog value when creating a ServerSocket
       Type: Improvement

     Status: Unassigned
   Priority: Major

    Project: James
             James Core

   Reporter: Hes Siemelink

    Created: Wed, 12 May 2004 8:08 AM
    Updated: Wed, 12 May 2004 10:42 AM

We have a test where we send 100 messages simultaneously. James does not handle this well.
With a standard setup 40-70 messages are NOT handled. After tweaking the config file (allocating
more threads and connections) still 10-30 messages are not picked up.

We discovered that James specifies a very tight 'backLog' value when creating a ServerSocket.
This happens in org.apache.james.core.AbstractJamesService.initialize() on line 302:

  ServerSocket serverSocket = factory.createServerSocket(port, 5, bindTo);

(Sorry no time to do a proper diff)

We suppose that eventually a java.net.ServerSocket is created with this value. According to
the javadoc of ServerSocket, the default value is 50. This can be specified by setting the
backLog parameter to 0. See http://java.sun.com/j2se/1.4.2/docs/api/java/net/ServerSocket.html

We changed the above line in AbstractJamesService to

  ServerSocket serverSocket = factory.createServerSocket(port, 0, bindTo);

With this fix all 100 messages are accepted (on Windows 2000 Server).

We advise that James uses the default value for the backLog parameter. If there is a special
reason why the default value should be 5, please make it a parameter we can specify in the
config file.



This message is automatically generated by JIRA.

If you think it was sent incorrectly contact one of the administrators:

If you want more information on JIRA, or have a bug to report see:

To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org

View raw message