costin      02/04/24 12:45:09

  Modified:    jk/java/org/apache/jk/server JkCoyoteHandler.java
                        JkMain.java
  Log:
  Potential fix for 8478.
  
  Check if the response has been already commited, and don't recommit.
  
  Display a small info notice - COMMIT action shouldn't be called twice or
  after the first chunk.
  
  Revision  Changes    Path
  1.15      +39 -36    
jakarta-tomcat-connectors/jk/java/org/apache/jk/server/JkCoyoteHandler.java
  
  Index: JkCoyoteHandler.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/java/org/apache/jk/server/JkCoyoteHandler.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- JkCoyoteHandler.java      23 Apr 2002 08:11:05 -0000      1.14
  +++ JkCoyoteHandler.java      24 Apr 2002 19:45:09 -0000      1.15
  @@ -239,47 +239,50 @@
               if( actionCode==ActionCode.ACTION_COMMIT ) {
                   org.apache.coyote.Response res=(org.apache.coyote.Response)param;
   
  -                if( log.isInfoEnabled() )
  -                    log.info("COMMIT sending headers " + res + " " + 
res.getMimeHeaders() );
  -                
  -                
  -                C2BConverter c2b=(C2BConverter)res.getNote( utfC2bNote );
  -                if( c2b==null ) {
  -                    c2b=new C2BConverter(  "UTF8" );
  -                    res.setNote( utfC2bNote, c2b );
  -                }
  -                
  -                MsgContext ep=(MsgContext)res.getNote( epNote );
  -                MsgAjp msg=(MsgAjp)ep.getNote( headersMsgNote );
  -                msg.reset();
  -                msg.appendByte(HandlerRequest.JK_AJP13_SEND_HEADERS);
  -                msg.appendInt( res.getStatus() );
  -                
  -                // s->b conversion, message
  -                msg.appendBytes( null );
  -                
  -                // XXX add headers
  -                
  -                MimeHeaders headers=res.getMimeHeaders();
  -                int numHeaders = headers.size();
  -                msg.appendInt(numHeaders);
  -                for( int i=0; i<numHeaders; i++ ) {
  -                    MessageBytes hN=headers.getName(i);
  -                    // no header to sc conversion - there's little benefit
  -                    // on this direction
  -                    c2b.convert ( hN );
  -                    msg.appendBytes( hN );
  +                if(  res.isCommited() ) {
  +                    if( log.isInfoEnabled() )
  +                        log.info("Response already commited " );
  +                } else {
  +                    if( log.isInfoEnabled() )
  +                        log.info("COMMIT sending headers " + res + " " + 
res.getMimeHeaders() );
  +                                        
  +                    C2BConverter c2b=(C2BConverter)res.getNote( utfC2bNote );
  +                    if( c2b==null ) {
  +                        c2b=new C2BConverter(  "UTF8" );
  +                        res.setNote( utfC2bNote, c2b );
  +                    }
  +                
  +                    MsgContext ep=(MsgContext)res.getNote( epNote );
  +                    MsgAjp msg=(MsgAjp)ep.getNote( headersMsgNote );
  +                    msg.reset();
  +                    msg.appendByte(HandlerRequest.JK_AJP13_SEND_HEADERS);
  +                    msg.appendInt( res.getStatus() );
  +                    
  +                    // s->b conversion, message
  +                    msg.appendBytes( null );
                       
  -                    MessageBytes hV=headers.getValue(i);
  -                    c2b.convert( hV );
  -                    msg.appendBytes( hV );
  +                    // XXX add headers
  +                    
  +                    MimeHeaders headers=res.getMimeHeaders();
  +                    int numHeaders = headers.size();
  +                    msg.appendInt(numHeaders);
  +                    for( int i=0; i<numHeaders; i++ ) {
  +                        MessageBytes hN=headers.getName(i);
  +                        // no header to sc conversion - there's little benefit
  +                        // on this direction
  +                        c2b.convert ( hN );
  +                        msg.appendBytes( hN );
  +                        
  +                        MessageBytes hV=headers.getValue(i);
  +                        c2b.convert( hV );
  +                        msg.appendBytes( hV );
  +                    }
  +                    ep.setType( JkHandler.HANDLE_SEND_PACKET );
  +                    ep.getSource().invoke( msg, ep );
                   }
  -                ep.setType( JkHandler.HANDLE_SEND_PACKET );
  -                ep.getSource().invoke( msg, ep );
               } else if( actionCode==ActionCode.ACTION_RESET ) {
                   if( log.isInfoEnabled() )
                       log.info("RESET " );
  -                
               } else if( actionCode==ActionCode.ACTION_CLOSE ) {
                   if( log.isInfoEnabled() )
                       log.info("CLOSE " );
  
  
  
  1.22      +1 -1      
jakarta-tomcat-connectors/jk/java/org/apache/jk/server/JkMain.java
  
  Index: JkMain.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/java/org/apache/jk/server/JkMain.java,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- JkMain.java       22 Apr 2002 19:03:34 -0000      1.21
  +++ JkMain.java       24 Apr 2002 19:45:09 -0000      1.22
  @@ -232,7 +232,7 @@
                                          "container",
                                          "channelSocket",
                                          "channelJni",
  -                                       "channelUn"};
  +                                       "channelUnix"};
       
       public void stop() 
       {
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to