aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/server/sws.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/server/sws.c b/tests/server/sws.c
index 07b37a25f..b798a682b 100644
--- a/tests/server/sws.c
+++ b/tests/server/sws.c
@@ -71,6 +71,7 @@ spitout(FILE *stream,
#define TEST_DATA_PATH "data/test%d"
enum {
+ DOCNUMBER_QUIT = -6,
DOCNUMBER_BADCONNECT = -5,
DOCNUMBER_INTERNAL= -4,
DOCNUMBER_CONNECT = -3,
@@ -78,6 +79,12 @@ enum {
DOCNUMBER_404 = -1
};
+
+/* sent as reply to a QUIT */
+static const char *docquit =
+"HTTP/1.1 200 Goodbye\r\n"
+"\r\n";
+
/* sent as reply to a CONNECT */
static const char *docconnect =
"HTTP/1.1 200 Mighty fine indeed\r\n"
@@ -279,6 +286,11 @@ static int get_request(int sock, int *part)
return DOCNUMBER_WERULEZ;
}
+ if(!strncmp("/quit", ptr, 15)) {
+ logmsg("Request-to-quit received");
+ return DOCNUMBER_QUIT;
+ }
+
ptr++; /* skip the slash */
test_no = strtol(ptr, &ptr, 10);
@@ -353,6 +365,10 @@ static int send_doc(int sock, int doc, int part_no)
if(doc < 0) {
switch(doc) {
+ case DOCNUMBER_QUIT:
+ logmsg("Replying to QUIT");
+ buffer = docquit;
+ break;
case DOCNUMBER_WERULEZ:
/* we got a "friends?" question, reply back that we sure are */
logmsg("Identifying ourselves as friends");
@@ -544,6 +560,9 @@ int main(int argc, char *argv[])
logmsg("Closing client connection");
close(msgsock);
+
+ if (doc == DOCNUMBER_QUIT)
+ break;
}
close(sock);