This should also go into our trunk, right? Am I missing anything? Please
ignore this mail if the commit has already gone into the trunk.

Thanks,
Hiranya

On Mon, Oct 26, 2009 at 7:40 PM, <[email protected]> wrote:

> Author: asankha
> Date: Mon Oct 26 14:10:38 2009
> New Revision: 829808
>
> URL: http://svn.apache.org/viewvc?rev=829808&view=rev
> Log:
> fix for SYNAPSE-231
>
> Modified:
>
>  
> synapse/branches/1.3/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java
>
>  
> synapse/branches/1.3/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ServerHandler.java
>
> Modified:
> synapse/branches/1.3/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java
> URL:
> http://svn.apache.org/viewvc/synapse/branches/1.3/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java?rev=829808&r1=829807&r2=829808&view=diff
>
> ==============================================================================
> ---
> synapse/branches/1.3/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java
> (original)
> +++
> synapse/branches/1.3/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java
> Mon Oct 26 14:10:38 2009
> @@ -327,6 +327,7 @@
>             if (HTTP.CONN_DIRECTIVE.equalsIgnoreCase(headerName) ||
>                 HTTP.TRANSFER_ENCODING.equalsIgnoreCase(headerName) ||
>                 HTTP.DATE_HEADER.equalsIgnoreCase(headerName) ||
> +                HTTP.EXPECT_DIRECTIVE.equalsIgnoreCase(headerName) ||
>                 HTTP.SERVER_HEADER.equalsIgnoreCase(headerName) ||
>                 HTTP.CONTENT_TYPE.equalsIgnoreCase(headerName) ||
>                 HTTP.CONTENT_LEN.equalsIgnoreCase(headerName) ||
>
> Modified:
> synapse/branches/1.3/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ServerHandler.java
> URL:
> http://svn.apache.org/viewvc/synapse/branches/1.3/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ServerHandler.java?rev=829808&r1=829807&r2=829808&view=diff
>
> ==============================================================================
> ---
> synapse/branches/1.3/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ServerHandler.java
> (original)
> +++
> synapse/branches/1.3/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ServerHandler.java
> Mon Oct 26 14:10:38 2009
> @@ -20,8 +20,10 @@
>
>  import org.apache.axis2.context.ConfigurationContext;
>  import org.apache.axis2.transport.base.MetricsCollector;
> -import org.apache.axis2.transport.base.threads.WorkerPoolFactory;
>  import org.apache.axis2.transport.base.threads.WorkerPool;
> +import org.apache.axis2.transport.base.threads.WorkerPoolFactory;
> +import org.apache.commons.logging.Log;
> +import org.apache.commons.logging.LogFactory;
>  import org.apache.http.*;
>  import org.apache.http.entity.BasicHttpEntity;
>  import org.apache.http.entity.ByteArrayEntity;
> @@ -31,19 +33,13 @@
>  import org.apache.http.nio.ContentEncoder;
>  import org.apache.http.nio.NHttpServerConnection;
>  import org.apache.http.nio.NHttpServiceHandler;
> -import org.apache.http.nio.util.ByteBufferAllocator;
> -import org.apache.http.nio.util.HeapByteBufferAllocator;
> -import org.apache.http.nio.util.ContentOutputBuffer;
> -import org.apache.http.nio.util.ContentInputBuffer;
> -import org.apache.http.nio.util.SharedInputBuffer;
> -import org.apache.http.nio.util.SharedOutputBuffer;
>  import org.apache.http.nio.entity.ContentInputStream;
>  import org.apache.http.nio.entity.ContentOutputStream;
> +import org.apache.http.nio.util.*;
> +import org.apache.http.params.DefaultedHttpParams;
>  import org.apache.http.params.HttpParams;
>  import org.apache.http.protocol.*;
>  import org.apache.http.util.EncodingUtils;
> -import org.apache.commons.logging.Log;
> -import org.apache.commons.logging.LogFactory;
>
>  import java.io.IOException;
>  import java.io.InputStream;
> @@ -113,6 +109,35 @@
>
>         HttpContext context = conn.getContext();
>         HttpRequest request = conn.getHttpRequest();
> +
> +        ProtocolVersion ver =
> request.getRequestLine().getProtocolVersion();
> +        if (!ver.lessEquals(HttpVersion.HTTP_1_1)) {
> +            // Downgrade protocol version if greater than HTTP/1.1
> +            ver = HttpVersion.HTTP_1_1;
> +        }
> +
> +        if (request instanceof HttpEntityEnclosingRequest) {
> +            if (((HttpEntityEnclosingRequest) request).expectContinue()) {
> +
> +                HttpResponse response =
> responseFactory.newHttpResponse(ver, HttpStatus.SC_CONTINUE, context);
> +                response.setParams(new
> DefaultedHttpParams(response.getParams(), this.params));
> +
> +                if (response.getStatusLine().getStatusCode() < 200) {
> +                    // Send 1xx response indicating the server expections
> +                    // have been met
> +                    try {
> +                        conn.submitResponse(response);
> +                    } catch (Exception e) {
> +                        if (metrics != null) {
> +                            metrics.incrementFaultsReceiving();
> +                        }
> +                        handleException("Error processing request received
> for expectation continue request : " +
> +                            request.getRequestLine().getUri(), e, conn);
> +                    }
> +                }
> +            }
> +        }
> +
>         context.setAttribute(ExecutionContext.HTTP_REQUEST, request);
>
>         try {
>
>
>


-- 
Hiranya Jayathilaka
Software Engineer;
WSO2 Inc.;  http://wso2.org
E-mail: [email protected];  Mobile: +94 77 633 3491
Blog: http://techfeast-hiranya.blogspot.com

Reply via email to