Return-Path: Delivered-To: apmail-jakarta-httpclient-commits-archive@www.apache.org Received: (qmail 86250 invoked from network); 20 May 2006 16:34:06 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 20 May 2006 16:34:06 -0000 Received: (qmail 46437 invoked by uid 500); 20 May 2006 16:34:06 -0000 Mailing-List: contact httpclient-commits-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: httpclient-dev@jakarta.apache.org Delivered-To: mailing list httpclient-commits@jakarta.apache.org Received: (qmail 46426 invoked by uid 99); 20 May 2006 16:34:05 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 20 May 2006 09:34:05 -0700 X-ASF-Spam-Status: No, hits=0.6 required=10.0 tests=NO_REAL_NAME X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: local policy) Received: from [140.211.166.113] (HELO eris.apache.org) (140.211.166.113) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 20 May 2006 09:34:04 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 861761A983A; Sat, 20 May 2006 09:33:44 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r408024 - /jakarta/httpcomponents/httpcore/trunk/src/java/org/apache/http/protocol/HttpService.java Date: Sat, 20 May 2006 16:33:44 -0000 To: httpclient-commits@jakarta.apache.org From: olegk@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20060520163344.861761A983A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: olegk Date: Sat May 20 09:33:42 2006 New Revision: 408024 URL: http://svn.apache.org/viewvc?rev=408024&view=rev Log: Added destory method to HttpService Modified: jakarta/httpcomponents/httpcore/trunk/src/java/org/apache/http/protocol/HttpService.java Modified: jakarta/httpcomponents/httpcore/trunk/src/java/org/apache/http/protocol/HttpService.java URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/src/java/org/apache/http/protocol/HttpService.java?rev=408024&r1=408023&r2=408024&view=diff ============================================================================== --- jakarta/httpcomponents/httpcore/trunk/src/java/org/apache/http/protocol/HttpService.java (original) +++ jakarta/httpcomponents/httpcore/trunk/src/java/org/apache/http/protocol/HttpService.java Sat May 20 09:33:42 2006 @@ -61,6 +61,8 @@ private final HttpServerConnection conn; private final ConnectionReuseStrategy connStrategy; private final HttpContext context; + + private volatile boolean destroyed = false; private HttpParams params = null; @@ -86,7 +88,7 @@ return this.conn.isOpen(); } - private void closeConnection() { + protected void closeConnection() { try { this.conn.close(); } catch (IOException ex) { @@ -99,65 +101,65 @@ BasicHttpResponse response = new BasicHttpResponse(); response.getParams().setDefaults(this.params); try { - HttpRequest request = this.conn.receiveRequestHeader(this.params); - if (request instanceof HttpEntityEnclosingRequest) { - if (((HttpEntityEnclosingRequest) request).expectContinue()) { + try { + HttpRequest request = this.conn.receiveRequestHeader(this.params); + if (request instanceof HttpEntityEnclosingRequest) { + if (((HttpEntityEnclosingRequest) request).expectContinue()) { - logMessage("Expected 100 (Continue)"); - - BasicHttpResponse ack = new BasicHttpResponse(); - ack.getParams().setDefaults(this.params); - ack.setStatusCode(HttpStatus.SC_CONTINUE); - this.conn.sendResponseHeader(ack); - this.conn.flush(); + logMessage("Expected 100 (Continue)"); + + BasicHttpResponse ack = new BasicHttpResponse(); + ack.getParams().setDefaults(this.params); + ack.setStatusCode(HttpStatus.SC_CONTINUE); + this.conn.sendResponseHeader(ack); + this.conn.flush(); + } + this.conn.receiveRequestEntity((HttpEntityEnclosingRequest) request); } - this.conn.receiveRequestEntity((HttpEntityEnclosingRequest) request); - } - preprocessRequest(request, this.context); - logMessage("Request received"); - - this.context.setAttribute(HttpExecutionContext.HTTP_REQUEST, request); - this.context.setAttribute(HttpExecutionContext.HTTP_RESPONSE, response); - doService(request, response); - - if (request instanceof HttpEntityEnclosingRequest) { - // Make sure the request content is fully consumed - HttpEntity entity = ((HttpEntityEnclosingRequest)request).getEntity(); - if (entity != null) { - entity.consumeContent(); + preprocessRequest(request, this.context); + logMessage("Request received"); + + this.context.setAttribute(HttpExecutionContext.HTTP_REQUEST, request); + this.context.setAttribute(HttpExecutionContext.HTTP_RESPONSE, response); + doService(request, response); + + if (request instanceof HttpEntityEnclosingRequest) { + // Make sure the request content is fully consumed + HttpEntity entity = ((HttpEntityEnclosingRequest)request).getEntity(); + if (entity != null) { + entity.consumeContent(); + } } + + postprocessResponse(response, this.context); + } catch (ConnectionClosedException ex) { + logMessage("Client closed connection"); + return; + } catch (HttpException ex) { + handleException(ex, response); + } catch (IOException ex) { + logIOException(ex); + return; } - - postprocessResponse(response, this.context); - } catch (ConnectionClosedException ex) { - logMessage("Client closed connection"); - closeConnection(); - return; - } catch (HttpException ex) { - handleException(ex, response); - } catch (IOException ex) { - logIOException(ex); - closeConnection(); - return; - } - try { - this.conn.sendResponseHeader(response); - this.conn.sendResponseEntity(response); - this.conn.flush(); - logMessage("Response sent"); - } catch (HttpException ex) { - logProtocolException(ex); - closeConnection(); - return; - } catch (IOException ex) { - logIOException(ex); - closeConnection(); - return; - } - if (!this.connStrategy.keepAlive(response)) { - closeConnection(); - } else { - logMessage("Connection kept alive"); + try { + this.conn.sendResponseHeader(response); + this.conn.sendResponseEntity(response); + this.conn.flush(); + logMessage("Response sent"); + } catch (HttpException ex) { + logProtocolException(ex); + return; + } catch (IOException ex) { + logIOException(ex); + return; + } + if (!this.connStrategy.keepAlive(response)) { + closeConnection(); + } else { + logMessage("Connection kept alive"); + } + } finally { + destroy(); } } @@ -191,4 +193,14 @@ protected void logProtocolException(final HttpException ex) { } + + public void destroy() { + this.destroyed = true; + closeConnection(); + } + + public boolean isDestroyed() { + return this.destroyed; + } + }