aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/server/getpart.c49
-rw-r--r--tests/server/sws.c22
2 files changed, 48 insertions, 23 deletions
diff --git a/tests/server/getpart.c b/tests/server/getpart.c
index b5355e69e..e044f5b5d 100644
--- a/tests/server/getpart.c
+++ b/tests/server/getpart.c
@@ -7,6 +7,27 @@
#define EAT_SPACE(ptr) while( ptr && *ptr && isspace(*ptr) ) ptr++
#define EAT_WORD(ptr) while( ptr && *ptr && !isspace(*ptr) && ('>' != *ptr)) ptr++
+char *appendstring(char *string, /* original string */
+ char *buffer, /* to append */
+ int *stringlen, int *stralloc)
+{
+ int len = strlen(buffer);
+
+ if((len + *stringlen) > *stralloc) {
+ char *newptr= realloc(string, *stralloc*2);
+ if(newptr) {
+ string = newptr;
+ *stralloc *= 2;
+ }
+ else
+ return NULL;
+ }
+ strcpy(&string[*stringlen], buffer);
+ *stringlen += len;
+
+ return string;
+}
+
char *spitout(FILE *stream, char *main, char *sub, int *size)
{
char buffer[8192]; /* big enough for anything */
@@ -19,6 +40,7 @@ char *spitout(FILE *stream, char *main, char *sub, int *size)
char *string;
int stringlen=0;
int stralloc=256;
+ int len;
enum {
STATE_OUTSIDE,
@@ -38,22 +60,9 @@ char *spitout(FILE *stream, char *main, char *sub, int *size)
if('<' != *ptr) {
if(display) {
- int len;
printf("=> %s", buffer);
-
- len = strlen(buffer);
-
- if((len + stringlen) > stralloc) {
- char *newptr= realloc(string, stralloc*2);
- if(newptr) {
- string = newptr;
- stralloc *= 2;
- }
- else
- return NULL;
- }
- strcpy(&string[stringlen], buffer);
- stringlen += len;
+ string = appendstring(string, buffer, &stringlen, &stralloc);
+ printf("* %s\n", buffer);
}
continue;
}
@@ -75,15 +84,17 @@ char *spitout(FILE *stream, char *main, char *sub, int *size)
/* this is the end of the currently read sub section */
state--;
csub[0]=0; /* no sub anymore */
+ display=0;
}
else if((state == STATE_INMAIN) &&
!strcmp(cmain, ptr)) {
/* this is the end of the currently read main section */
state--;
cmain[0]=0; /* no main anymore */
+ display=0;
}
}
- else {
+ else if(!display) {
/* this is the beginning of a section */
end = ptr;
EAT_WORD(end);
@@ -100,11 +111,15 @@ char *spitout(FILE *stream, char *main, char *sub, int *size)
break;
}
}
+ if(display) {
+ string = appendstring(string, buffer, &stringlen, &stralloc);
+ printf("* %s\n", buffer);
+ }
if((STATE_INSUB == state) &&
!strcmp(cmain, main) &&
!strcmp(csub, sub)) {
- printf("* %s\n", buffer);
+ printf("* (%d bytes) %s\n", stringlen, buffer);
display = 1; /* start displaying */
}
else {
diff --git a/tests/server/sws.c b/tests/server/sws.c
index e2a4561cb..183a5b935 100644
--- a/tests/server/sws.c
+++ b/tests/server/sws.c
@@ -29,6 +29,7 @@
#define TEST_DATA_PATH "data/test%d"
+static char *docfriends = "WE ROOLZ\r\n";
static char *doc404 = "HTTP/1.1 404 Not Found\n"
"Server: " VERSION "\n"
"Connection: close\n"
@@ -184,12 +185,18 @@ static int get_request(int sock)
/* get the number after it */
if(ptr) {
+ if(!strcmp("/verifiedserver", ptr)) {
+ logmsg("Are-we-friendly question received");
+ return -2;
+ }
test_no = strtol(ptr+1, &ptr, 10);
logmsg("Found test number in PATH");
}
- else
+ else {
+
logmsg("Did not find test number in PATH");
+ }
return test_no;
}
@@ -211,7 +218,11 @@ static int send_doc(int sock, int doc)
char filename[256];
if(doc < 0) {
- buffer = doc404;
+ if(-2 == doc)
+ /* we got a "friends?" question, reply back that we sure are */
+ buffer = docfriends;
+ else
+ buffer = doc404;
ptr = NULL;
stream=NULL;
}
@@ -257,6 +268,8 @@ int main(int argc, char *argv[])
logfile = "logfile";
+ /* FIX: write our pid to a file name */
+
logfp = fopen(logfile, "a");
if (!logfp) {
perror(logfile);
@@ -317,10 +330,7 @@ int main(int argc, char *argv[])
logmsg("New client connected");
doc = get_request(msgsock);
- if (doc > 0)
- send_doc(msgsock, doc);
- else
- send_doc(msgsock, -1);
+ send_doc(msgsock, doc);
close(msgsock);
}