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>