David Byron's patch that allows a client to make the server quit with a

magic url.
This commit is contained in:
Daniel Stenberg 2003-07-01 15:21:42 +00:00
parent 964a41c75c
commit 7968e3c2de
1 changed files with 19 additions and 0 deletions

View File

@ -71,6 +71,7 @@ spitout(FILE *stream,
#define TEST_DATA_PATH "data/test%d" #define TEST_DATA_PATH "data/test%d"
enum { enum {
DOCNUMBER_QUIT = -6,
DOCNUMBER_BADCONNECT = -5, DOCNUMBER_BADCONNECT = -5,
DOCNUMBER_INTERNAL= -4, DOCNUMBER_INTERNAL= -4,
DOCNUMBER_CONNECT = -3, DOCNUMBER_CONNECT = -3,
@ -78,6 +79,12 @@ enum {
DOCNUMBER_404 = -1 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 */ /* sent as reply to a CONNECT */
static const char *docconnect = static const char *docconnect =
"HTTP/1.1 200 Mighty fine indeed\r\n" "HTTP/1.1 200 Mighty fine indeed\r\n"
@ -279,6 +286,11 @@ static int get_request(int sock, int *part)
return DOCNUMBER_WERULEZ; return DOCNUMBER_WERULEZ;
} }
if(!strncmp("/quit", ptr, 15)) {
logmsg("Request-to-quit received");
return DOCNUMBER_QUIT;
}
ptr++; /* skip the slash */ ptr++; /* skip the slash */
test_no = strtol(ptr, &ptr, 10); test_no = strtol(ptr, &ptr, 10);
@ -353,6 +365,10 @@ static int send_doc(int sock, int doc, int part_no)
if(doc < 0) { if(doc < 0) {
switch(doc) { switch(doc) {
case DOCNUMBER_QUIT:
logmsg("Replying to QUIT");
buffer = docquit;
break;
case DOCNUMBER_WERULEZ: case DOCNUMBER_WERULEZ:
/* we got a "friends?" question, reply back that we sure are */ /* we got a "friends?" question, reply back that we sure are */
logmsg("Identifying ourselves as friends"); logmsg("Identifying ourselves as friends");
@ -544,6 +560,9 @@ int main(int argc, char *argv[])
logmsg("Closing client connection"); logmsg("Closing client connection");
close(msgsock); close(msgsock);
if (doc == DOCNUMBER_QUIT)
break;
} }
close(sock); close(sock);