You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by na...@apache.org on 2002/07/08 02:26:07 UTC

cvs commit: jakarta-tomcat-connectors/jk/native2/server/isapi jk_isapi_plugin.c jk_service_iis.c

nacho       2002/07/07 17:26:07

  Modified:    jk/java/org/apache/jk/common ChannelSocket.java
                        JkInputStream.java
               jk/native2/common jk_worker_ajp13.c
               jk/native2/include jk_service.h
               jk/native2/server/isapi jk_isapi_plugin.c jk_service_iis.c
  Log:
  * Fix for PUT problmes in tc417+IIS+slide
  
  Revision  Changes    Path
  1.19      +1 -1      jakarta-tomcat-connectors/jk/java/org/apache/jk/common/ChannelSocket.java
  
  Index: ChannelSocket.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/java/org/apache/jk/common/ChannelSocket.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- ChannelSocket.java	2 Jul 2002 20:00:15 -0000	1.18
  +++ ChannelSocket.java	8 Jul 2002 00:26:07 -0000	1.19
  @@ -383,7 +383,7 @@
           
           total_read = this.read(ep, buf, hlen, blen);
           
  -        if (total_read <= 0) {
  +        if ((total_read <= 0) && (blen > 0)) {
               log.warn("can't read body, waited #" + blen);
               return  -1;
           }
  
  
  
  1.12      +4 -3      jakarta-tomcat-connectors/jk/java/org/apache/jk/common/JkInputStream.java
  
  Index: JkInputStream.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/java/org/apache/jk/common/JkInputStream.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- JkInputStream.java	29 Jun 2002 22:39:13 -0000	1.11
  +++ JkInputStream.java	8 Jul 2002 00:26:07 -0000	1.12
  @@ -276,12 +276,13 @@
           if( log.isDebugEnabled())
               log.debug( "doRead " + pos + " " + blen + " " + available + " " + end_of_stream+
                          " " + responseChunk.getOffset()+ " " + responseChunk.getLength());
  -        if( contentLength == pos ) {
  -            end_of_stream=true;
  +        if( end_of_stream ) {
               return -1;
           }
           if( blen == pos ) {
  -            refillReadBuffer();
  +            if ( !refillReadBuffer() ){
  +                return -1;
  +            }
           }
           responseChunk.setBytes( bodyBuff, pos, blen );
           pos=blen;
  
  
  
  1.37      +4 -0      jakarta-tomcat-connectors/jk/native2/common/jk_worker_ajp13.c
  
  Index: jk_worker_ajp13.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_ajp13.c,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- jk_worker_ajp13.c	29 Jun 2002 18:29:51 -0000	1.36
  +++ jk_worker_ajp13.c	8 Jul 2002 00:26:07 -0000	1.37
  @@ -496,6 +496,10 @@
       } else {
           err=jk2_worker_ajp13_forwardSingleThread( env, w, s, e );
       }
  +    if (err != JK_OK){
  +        env->l->jkLog(env, env->l, JK_LOG_ERROR,
  +              "ajp13.service() Error  forwarding %s\n", e->worker->mbean->name);
  +    }
   
       if( w->mbean->debug > 0 ) 
           env->l->jkLog(env, env->l, JK_LOG_INFO,
  
  
  
  1.16      +2 -1      jakarta-tomcat-connectors/jk/native2/include/jk_service.h
  
  Index: jk_service.h
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/include/jk_service.h,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- jk_service.h	5 Jun 2002 21:56:39 -0000	1.15
  +++ jk_service.h	8 Jul 2002 00:26:07 -0000	1.16
  @@ -204,6 +204,7 @@
       unsigned is_chunked;        /* 1 if content length is unknown (chunked rq) */
       unsigned no_more_chunks;    /* 1 if last chunk has been read */
       long     content_read;      /* number of bytes read */
  +    int      end_of_stream;     /* For IIS avoids blocking calls to lpEcb->ReadClient */
   
       /*
        * SSL information
  
  
  
  1.36      +3 -3      jakarta-tomcat-connectors/jk/native2/server/isapi/jk_isapi_plugin.c
  
  Index: jk_isapi_plugin.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/server/isapi/jk_isapi_plugin.c,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- jk_isapi_plugin.c	6 Jul 2002 08:05:49 -0000	1.35
  +++ jk_isapi_plugin.c	8 Jul 2002 00:26:07 -0000	1.36
  @@ -2,7 +2,7 @@
    *                                                                           *
    *                 The Apache Software License,  Version 1.1                 *
    *                                                                           *
  - *          Copyright (c) 1999-2001 The Apache Software Foundation.          *
  + *          Copyright (c) 1999-2002 The Apache Software Foundation.          *
    *                           All rights reserved.                            *
    *                                                                           *
    * ========================================================================= *
  @@ -803,7 +803,7 @@
       int maj, sz;
       int rv = SF_NOTIFY_PREPROC_HEADERS;
       int use_auth = JK_FALSE;
  -    /* Retreive the IIS version Major*/
  +    /* Retrieve the IIS version Major*/
       rc = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
                         W3SVC_REGISTRY_KEY,
                         (DWORD)0,
  
  
  
  1.20      +38 -29    jakarta-tomcat-connectors/jk/native2/server/isapi/jk_service_iis.c
  
  Index: jk_service_iis.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/server/isapi/jk_service_iis.c,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- jk_service_iis.c	14 Jun 2002 23:39:52 -0000	1.19
  +++ jk_service_iis.c	8 Jul 2002 00:26:07 -0000	1.20
  @@ -172,39 +172,47 @@
           LPEXTENSION_CONTROL_BLOCK  lpEcb=(LPEXTENSION_CONTROL_BLOCK)s->ws_private;
           
           *actually_read = 0;
  -        if (len) {
  -            char *buf = b;
  -            DWORD already_read = lpEcb->cbAvailable - s->content_read;
  +        if ((s->content_read < (long)lpEcb->cbTotalBytes)&& !s->end_of_stream ){
  +            if (len) {
  +                char *buf = b;
  +                long already_read = (long)lpEcb->cbAvailable - s->content_read;
  +      
  +                if (already_read >= (long)len) {
  +                    memcpy(buf, lpEcb->lpbData + s->content_read, len);
  +                    *actually_read = len;
  +                } else {
  +                    /*
  +                     * Try to copy what we already have 
  +                     */
  +                    if (already_read > 0) {
  +                        memcpy(buf, lpEcb->lpbData + s->content_read, already_read);
  +                        buf   += already_read;
  +                        len   -= already_read;
  +//                        s->content_read = lpEcb->cbAvailable;
               
  -            if (already_read >= len) {
  -                memcpy(buf, lpEcb->lpbData + s->content_read, len);
  -                s->content_read += len;
  -                *actually_read = len;
  -            } else {
  -                /*
  -                 * Try to copy what we already have 
  -                 */
  -                if (already_read > 0) {
  -                    memcpy(buf, lpEcb->lpbData + s->content_read, already_read);
  -                    buf += already_read;
  -                    len   -= already_read;
  -                    s->content_read = lpEcb->cbAvailable;
  -                    
  -                    *actually_read = already_read;
  +                        *actually_read = already_read;
  +                    }
  +                    if ((s->content_read+*actually_read)==lpEcb->cbTotalBytes) {
  +                        s->end_of_stream=JK_TRUE;
  +                    }
  +                    /*
  +                     * Now try to read from the client ...
  +                     */
  +                    if (!s->end_of_stream ) {
  +                        if ( lpEcb->ReadClient(lpEcb->ConnID, buf, &len)) {
  +                            *actually_read +=  len;            
  +                        } else {
  +                            env->l->jkLog(env,env->l, JK_LOG_ERROR, 
  +                                   "jk_ws_service_t::read, ReadClient failed\n");
  +                            return JK_OK;
  +                        }
  +                    }
                   }
  -                
  -                /*
  -                 * Now try to read from the client ...
  -                 */
  -                if (lpEcb->ReadClient(lpEcb->ConnID, buf, &len)) {
  -                    *actually_read +=  len;            
  -                } else {
  -                    env->l->jkLog(env,env->l, JK_LOG_ERROR, 
  -                           "jk_ws_service_t::read, ReadClient failed\n");
  -                    return JK_ERR;
  -                }                   
               }
           }
  +        if ((s->content_read+*actually_read)==lpEcb->cbTotalBytes) {
  +            s->end_of_stream=JK_TRUE;
  +        }
           return JK_OK;
       }
       
  @@ -367,6 +375,7 @@
   
       s->method           = lpEcb->lpszMethod;
       s->content_length   = lpEcb->cbTotalBytes;
  +    s->end_of_stream    = JK_FALSE;
   
       s->ssl_cert     = NULL;
       s->ssl_cert_len = 0;
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>