mcardle     2006/01/04 23:57:30 CET

  Modified files:
    src/net/sf/j2ep/responsehandlers ResponseHandlerBase.java 
  Log:
  * safely closes connection in case of Socket error
  
  Revision  Changes    Path
  1.20      +25 -18    
esi_server/src/net/sf/j2ep/responsehandlers/ResponseHandlerBase.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/esi_server/src/net/sf/j2ep/responsehandlers/ResponseHandlerBase.java.diff?r1=1.19&r2=1.20&f=h
  
  
  
  Index: ResponseHandlerBase.java
  ===================================================================
  RCS file: 
/home/cvs/repository/esi_server/src/net/sf/j2ep/responsehandlers/ResponseHandlerBase.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- ResponseHandlerBase.java  4 Jan 2006 16:02:34 -0000       1.19
  +++ ResponseHandlerBase.java  4 Jan 2006 22:57:29 -0000       1.20
  @@ -158,19 +158,23 @@
       public void sendStreamToClientPassthrough(ServletResponse 
clientResponse) throws IOException {
           InputStream streamFromServer = 
methodToServer.getResponseBodyAsStream();
           OutputStream clientResponseStream = clientResponse.getOutputStream();
  -
  -        if (streamFromServer != null) {
  -            byte[] buffer = new byte[1024];
  -            int read = streamFromServer.read(buffer);
  -            while (read > 0) {
  -                clientResponseStream.write(buffer, 0, read);
  -                //log.debug(".");
  -                read = streamFromServer.read(buffer);
  +        try {
  +            if (streamFromServer != null) {
  +                byte[] buffer = new byte[1024];
  +                int read = streamFromServer.read(buffer);
  +                while (read > 0) {
  +                    clientResponseStream.write(buffer, 0, read);
  +                    //log.debug(".");
  +                    read = streamFromServer.read(buffer);
  +                }
  +                streamFromServer.close();
               }
  -            streamFromServer.close();
  +            clientResponseStream.flush();
  +        }
  +        finally {
  +
  +            clientResponseStream.close();
           }
  -        clientResponseStream.flush();
  -        clientResponseStream.close();
       }
   
   
  @@ -216,14 +220,17 @@
           //reset content-length header previously set by 
copyHeadersFromServerResponseToClientResponse()
           clientResponse.setContentLength(cachedByteContent.length);
   
  -        if (cachedByteContent==null) {
  -            log.error("sendStreamToClientFromCache : cachedByteContent is 
NULL. so not sending anything");
  +        try {
  +            if (cachedByteContent==null) {
  +                log.error("sendStreamToClientFromCache : cachedByteContent 
is NULL. so not sending anything");
  +            }
  +            else
  +                clientResponseStream.write(cachedByteContent, 0, 
cachedByteContent.length);
  +            clientResponseStream.flush();
  +        }
  +        finally {
  +            clientResponseStream.close();
           }
  -        else
  -            clientResponseStream.write(cachedByteContent, 0, 
cachedByteContent.length);
  -
  -        clientResponseStream.flush();
  -        clientResponseStream.close();
       }
   
   
  

Reply via email to