X-Git-Url: http://dolda2000.com/gitweb/?p=ashd.git;a=blobdiff_plain;f=src%2Fcallscgi.c;h=6d72f0e7c4786eaf23aeb421076ef7103a71f770;hp=299e09f052f6f484c560907621cd96e233e436bd;hb=d06b6013fea7b2c01e75c5fe8bf98ab7caf1346c;hpb=53d666cafb4af8f07bf74af9278702db82085d45 diff --git a/src/callscgi.c b/src/callscgi.c index 299e09f..6d72f0e 100644 --- a/src/callscgi.c +++ b/src/callscgi.c @@ -32,7 +32,7 @@ #include #include #include -#include +#include #include #ifdef HAVE_CONFIG_H @@ -40,6 +40,7 @@ #endif #include #include +#include #include #include #include @@ -436,6 +437,8 @@ static void mkcgienv(struct hthead *req, struct charbuf *dst) free(url); if((h = getheader(req, "Host")) != NULL) bufaddenv(dst, "SERVER_NAME", "%s", h); + if((h = getheader(req, "X-Ash-Server-Address")) != NULL) + bufaddenv(dst, "SERVER_ADDR", "%s", h); if((h = getheader(req, "X-Ash-Server-Port")) != NULL) bufaddenv(dst, "SERVER_PORT", "%s", h); if((h = getheader(req, "X-Ash-Remote-User")) != NULL) @@ -444,6 +447,8 @@ static void mkcgienv(struct hthead *req, struct charbuf *dst) bufaddenv(dst, "HTTPS", "on"); if((h = getheader(req, "X-Ash-Address")) != NULL) bufaddenv(dst, "REMOTE_ADDR", "%s", h); + if((h = getheader(req, "X-Ash-Port")) != NULL) + bufaddenv(dst, "REMOTE_PORT", "%s", h); if((h = getheader(req, "Content-Type")) != NULL) bufaddenv(dst, "CONTENT_TYPE", "%s", h); if((h = getheader(req, "Content-Length")) != NULL) @@ -469,46 +474,6 @@ static void mkcgienv(struct hthead *req, struct charbuf *dst) } } -static char *defstatus(int code) -{ - if(code == 200) - return("OK"); - else if(code == 201) - return("Created"); - else if(code == 202) - return("Accepted"); - else if(code == 204) - return("No Content"); - else if(code == 300) - return("Multiple Choices"); - else if(code == 301) - return("Moved Permanently"); - else if(code == 302) - return("Found"); - else if(code == 303) - return("See Other"); - else if(code == 304) - return("Not Modified"); - else if(code == 307) - return("Moved Temporarily"); - else if(code == 400) - return("Bad Request"); - else if(code == 401) - return("Unauthorized"); - else if(code == 403) - return("Forbidden"); - else if(code == 404) - return("Not Found"); - else if(code == 500) - return("Internal Server Error"); - else if(code == 501) - return("Not Implemented"); - else if(code == 503) - return("Service Unavailable"); - else - return("Unknown status"); -} - static struct hthead *parseresp(FILE *in) { struct hthead *resp; @@ -527,7 +492,7 @@ static struct hthead *parseresp(FILE *in) resp->msg = sstrdup(p); } else { resp->code = atoi(st); - resp->msg = sstrdup(defstatus(resp->code)); + resp->msg = sstrdup(httpdefstatus(resp->code)); } headrmheader(resp, "Status"); } else if(getheader(resp, "Location")) { @@ -600,7 +565,6 @@ static void sigign(int sig) static void sigexit(int sig) { shutdown(0, SHUT_RDWR); - exit(0); } static void usage(FILE *out) @@ -644,7 +608,7 @@ int main(int argc, char **argv) signal(SIGINT, sigexit); signal(SIGTERM, sigexit); mustart(listenloop, 0); - atexit(killcuraddr); ioloop(); + killcuraddr(); return(0); }