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: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>