mirror of
https://github.com/curl/curl.git
synced 2024-12-15 06:40:09 +08:00
sws: as last resort, get test number from server cmd file
If it can't be found in the request. Also support --cmdfile to set it to a custom file name. runtests.pl always writes this file with the test number in it since a while back.
This commit is contained in:
parent
f002c850d9
commit
a3b0699d5c
@ -154,6 +154,10 @@ const char *serverlogfile = DEFAULT_LOGFILE;
|
|||||||
#define REQUEST_PROXY_DUMP "log/proxy.input"
|
#define REQUEST_PROXY_DUMP "log/proxy.input"
|
||||||
#define RESPONSE_PROXY_DUMP "log/proxy.response"
|
#define RESPONSE_PROXY_DUMP "log/proxy.response"
|
||||||
|
|
||||||
|
/* file in which additional instructions may be found */
|
||||||
|
#define DEFAULT_CMDFILE "log/ftpserver.cmd"
|
||||||
|
const char *cmdfile = DEFAULT_CMDFILE;
|
||||||
|
|
||||||
/* very-big-path support */
|
/* very-big-path support */
|
||||||
#define MAXDOCNAMELEN 140000
|
#define MAXDOCNAMELEN 140000
|
||||||
#define MAXDOCNAMELEN_TXT "139999"
|
#define MAXDOCNAMELEN_TXT "139999"
|
||||||
@ -231,6 +235,24 @@ static bool socket_domain_is_ip(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* parse the file on disk that might have a test number for us */
|
||||||
|
static int parse_cmdfile(struct httprequest *req)
|
||||||
|
{
|
||||||
|
int testnum = DOCNUMBER_NOTHING;
|
||||||
|
char buf[256];
|
||||||
|
FILE *f = fopen(cmdfile, FOPEN_READTEXT);
|
||||||
|
if(f) {
|
||||||
|
while(fgets(buf, sizeof(buf), f)) {
|
||||||
|
if(1 == sscanf(buf, "Testnum %d", &testnum)) {
|
||||||
|
logmsg("[%s] cmdfile says testnum %d", cmdfile, testnum);
|
||||||
|
req->testno = testnum;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fclose(f);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* based on the testno, parse the correct server commands */
|
/* based on the testno, parse the correct server commands */
|
||||||
static int parse_servercmd(struct httprequest *req)
|
static int parse_servercmd(struct httprequest *req)
|
||||||
{
|
{
|
||||||
@ -488,34 +510,41 @@ static int ProcessRequest(struct httprequest *req)
|
|||||||
|
|
||||||
/* get the number after it */
|
/* get the number after it */
|
||||||
if(ptr) {
|
if(ptr) {
|
||||||
|
long num;
|
||||||
ptr++; /* skip the dot */
|
ptr++; /* skip the dot */
|
||||||
|
|
||||||
req->testno = strtol(ptr, &ptr, 10);
|
num = strtol(ptr, &ptr, 10);
|
||||||
|
|
||||||
if(req->testno > 10000) {
|
if(num) {
|
||||||
req->partno = req->testno % 10000;
|
req->testno = num;
|
||||||
req->testno /= 10000;
|
if(req->testno > 10000) {
|
||||||
|
req->partno = req->testno % 10000;
|
||||||
|
req->testno /= 10000;
|
||||||
|
|
||||||
logmsg("found test %d in requested host name", req->testno);
|
logmsg("found test %d in requested host name", req->testno);
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
req->partno = 0;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
req->partno = 0;
|
|
||||||
|
|
||||||
msnprintf(logbuf, sizeof(logbuf),
|
|
||||||
"Requested test number %ld part %ld (from host name)",
|
|
||||||
req->testno, req->partno);
|
|
||||||
logmsg("%s", logbuf);
|
|
||||||
|
|
||||||
|
if(req->testno != DOCNUMBER_NOTHING) {
|
||||||
|
logmsg("Requested test number %ld part %ld (from host name)",
|
||||||
|
req->testno, req->partno);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!req->testno) {
|
|
||||||
logmsg("Did not find test number in PATH");
|
|
||||||
req->testno = DOCNUMBER_404;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
parse_servercmd(req);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(req->testno == DOCNUMBER_NOTHING)
|
||||||
|
/* might get the test number */
|
||||||
|
parse_cmdfile(req);
|
||||||
|
|
||||||
|
if(req->testno == DOCNUMBER_NOTHING) {
|
||||||
|
logmsg("Did not find test number in PATH");
|
||||||
|
req->testno = DOCNUMBER_404;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
parse_servercmd(req);
|
||||||
}
|
}
|
||||||
else if((req->offset >= 3) && (req->testno == DOCNUMBER_NOTHING)) {
|
else if((req->offset >= 3) && (req->testno == DOCNUMBER_NOTHING)) {
|
||||||
logmsg("** Unusual request. Starts with %02x %02x %02x (%c%c%c)",
|
logmsg("** Unusual request. Starts with %02x %02x %02x (%c%c%c)",
|
||||||
@ -1886,6 +1915,11 @@ int main(int argc, char *argv[])
|
|||||||
if(argc>arg)
|
if(argc>arg)
|
||||||
serverlogfile = argv[arg++];
|
serverlogfile = argv[arg++];
|
||||||
}
|
}
|
||||||
|
else if(!strcmp("--cmdfile", argv[arg])) {
|
||||||
|
arg++;
|
||||||
|
if(argc>arg)
|
||||||
|
cmdfile = argv[arg++];
|
||||||
|
}
|
||||||
else if(!strcmp("--gopher", argv[arg])) {
|
else if(!strcmp("--gopher", argv[arg])) {
|
||||||
arg++;
|
arg++;
|
||||||
use_gopher = TRUE;
|
use_gopher = TRUE;
|
||||||
|
Loading…
Reference in New Issue
Block a user