static int child(void) { struct kreq r; const char *page = "index"; struct kvalid valid = { NULL, "tag" }; if (KCGI_OK != khttp_parse(&r, &valid, 1, &page, 1, 0)) return(0); if (NULL == r.fieldmap[0]) { khttp_free(&r); return(0); } else if (BUFSZ != r.fieldmap[0]->valsz) { khttp_free(&r); return(0); } khttp_head(&r, kresps[KRESP_STATUS], "%s", khttps[KHTTP_200]); khttp_head(&r, kresps[KRESP_CONTENT_TYPE], "%s", kmimetypes[KMIME_TEXT_HTML]); khttp_body(&r); khttp_write(&r, r.fieldmap[0]->val, r.fieldmap[0]->valsz); khttp_free(&r); return(1); }
static int child(void) { struct kreq r; const char *page = "index"; struct kvalid valid = { NULL, "tag" }; size_t i; struct kfcgi *fcgi; enum kcgi_err er; if (KCGI_OK != khttp_fcgi_init(&fcgi, &valid, 1, &page, 1, 0)) return(0); while (KCGI_OK == (er = khttp_fcgi_parse(fcgi, &r))) { if (NULL == r.fieldmap[0]) { khttp_free(&r); khttp_fcgi_free(fcgi); return(0); } else if (1024 * 1024 != r.fieldmap[0]->valsz) { khttp_free(&r); khttp_fcgi_free(fcgi); return(0); } for (i = 0; i < 1024 * 1024; i++) if (r.fieldmap[0]->val[i] != (i % 10) + 65) { khttp_free(&r); khttp_fcgi_free(fcgi); return(0); } khttp_head(&r, kresps[KRESP_STATUS], "%s", khttps[KHTTP_200]); khttp_head(&r, kresps[KRESP_CONTENT_TYPE], "%s", kmimetypes[KMIME_TEXT_HTML]); khttp_body(&r); khttp_write(&r, r.fieldmap[0]->val, r.fieldmap[0]->valsz); khttp_free(&r); } khttp_free(&r); khttp_fcgi_free(fcgi); return(KCGI_HUP == er ? 1 : 0); }