pier 01/07/18 21:24:15
Modified: webapp/lib pr_warp_network.c
Log:
Fixed bug preventing to read a zero-length WARP packet.
Revision Changes Path
1.3 +18 -11 jakarta-tomcat-connectors/webapp/lib/pr_warp_network.c
Index: pr_warp_network.c
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/lib/pr_warp_network.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- pr_warp_network.c 2001/07/18 19:12:38 1.2
+++ pr_warp_network.c 2001/07/19 04:24:15 1.3
@@ -54,7 +54,7 @@
* *
* ========================================================================= */
-/* @version $Id: pr_warp_network.c,v 1.2 2001/07/18 19:12:38 pier Exp $ */
+/* @version $Id: pr_warp_network.c,v 1.3 2001/07/19 04:24:15 pier Exp $ */
#include "pr_warp.h"
wa_boolean n_recv(apr_socket_t *sock, warp_packet *pack) {
@@ -68,7 +68,10 @@
p_reset(pack);
len=3;
while(1) {
- if (apr_recv(sock,&hdr[ptr],&len)!=APR_SUCCESS) return(wa_false);
+ if (apr_recv(sock,&hdr[ptr],&len)!=APR_SUCCESS) {
+ wa_debug(WA_MARK,"Cannot receive header");
+ return(wa_false);
+ }
ptr+=len;
len=3-ptr;
if (len==0) break;
@@ -77,16 +80,20 @@
pack->size=(hdr[1]&0x0ff)<<8;
pack->size=pack->size|(hdr[2]&0x0ff);
- len=pack->size;
- ptr=0;
- while(1) {
- if (apr_recv(sock,&pack->buff[ptr],&len)!=APR_SUCCESS)
- return(wa_false);
- ptr+=len;
- len=pack->size-ptr;
- if (len==0) break;
+ if (pack->size>0) {
+ len=pack->size;
+ ptr=0;
+ while(1) {
+ if (apr_recv(sock,&pack->buff[ptr],&len)!=APR_SUCCESS) {
+ wa_debug(WA_MARK,"Cannot receive payload");
+ return(wa_false);
+ }
+ ptr+=len;
+ len=pack->size-ptr;
+ if (len==0) break;
+ }
}
-
+
wa_debug(WA_MARK,"WARP <<< TYP=%d LEN=%d",pack->type,pack->size);
return(wa_true);