summaryrefslogtreecommitdiff
path: root/server.c
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2002-01-01 07:51:45 +0000
committerAlan Coopersmith <alan.coopersmith@sun.com>2009-05-04 18:14:08 -0700
commitaf92a00b953746d64e1394d1988e77ffc3142df8 (patch)
treee0a5eca7764d21cd0e22c7d3f490fb50d9d019e7 /server.c
parent093842a5e11bb5c0fd17b51a6c037634b5a3a223 (diff)
downloadxscope-af92a00b953746d64e1394d1988e77ffc3142df8.tar.gz
Add (some) support for BIG-REQUESTS
Diffstat (limited to 'server.c')
-rw-r--r--server.c39
1 files changed, 31 insertions, 8 deletions
diff --git a/server.c b/server.c
index 383a66b..d1bc769 100644
--- a/server.c
+++ b/server.c
@@ -489,23 +489,46 @@ long FinishSetUpMessage (fd, buf, n)
return(n);
}
+long StartBigRequest (fd, buf, n)
+ FD fd;
+ unsigned char *buf;
+ long n;
+{
+ enterprocedure("StartBigRequest");
+
+ /* bytes 0-3 are ignored now; bytes 4-8 tell us the request length */
+ CS[fd].requestLen = ILong(&buf[4]);
+ CS[fd].ByteProcessing = FinishRequest;
+ CS[fd].NumberofBytesNeeded = 4 * CS[fd].requestLen;
+ debug(8,(stderr, "need %d more bytes to finish request\n",
+ CS[fd].NumberofBytesNeeded - n));
+ StartStuff (fd);
+ return(0);
+}
long StartRequest (fd, buf, n)
FD fd;
unsigned char *buf;
long n;
{
- unsigned short requestlength;
enterprocedure("StartRequest");
/* bytes 0,1 are ignored now; bytes 2,3 tell us the request length */
- requestlength = IShort(&buf[2]);
- if (requestlength == 0)
- requestlength=0xffff;
- CS[fd].ByteProcessing = FinishRequest;
- CS[fd].NumberofBytesNeeded = 4 * requestlength;
- debug(8,(stderr, "need %d more bytes to finish request\n",
- CS[fd].NumberofBytesNeeded - n));
+ CS[fd].requestLen = IShort(&buf[2]);
+ if (CS[fd].requestLen == 0 && CS[fd].bigreqEnabled)
+ {
+ CS[fd].ByteProcessing = StartBigRequest;
+ CS[fd].NumberofBytesNeeded = 8;
+ }
+ else
+ {
+ if (CS[fd].requestLen == 0)
+ CS[fd].requestLen = 1;
+ CS[fd].ByteProcessing = FinishRequest;
+ CS[fd].NumberofBytesNeeded = 4 * CS[fd].requestLen;
+ debug(8,(stderr, "need %d more bytes to finish request\n",
+ CS[fd].NumberofBytesNeeded - n));
+ }
StartStuff (fd);
return(0);
}