static void openPhp(MaQueue *q) { MaRequest *req; MaResponse *resp; MaConn *conn; conn = q->conn; if (!q->stage->stageData) { if (initializePhp(conn->http) < 0) { maFailRequest(conn, MPR_HTTP_CODE_INTERNAL_SERVER_ERROR, "PHP initialization failed"); } q->stage->stageData = (void*) 1; } resp = conn->response; req = conn->request; switch (req->method) { case MA_REQ_GET: case MA_REQ_HEAD: case MA_REQ_POST: case MA_REQ_PUT: q->queueData = mprAllocObjZeroed(resp, MaPhp); maDontCacheResponse(conn); maSetHeader(conn, 0, "Last-Modified", req->host->currentDate); break; case MA_REQ_DELETE: default: maFailRequest(q->conn, MPR_HTTP_CODE_BAD_METHOD, "Method not supported by file handler: %s", req->methodName); break; } }
/* Open handler for a new request */ static void openPhp(HttpQueue *q) { HttpRx *rx; rx = q->conn->rx; /* PHP will buffer all input. i.e. does not stream. The normal Limits still apply. */ q->max = q->pair->max = MAXINT; mprLog(5, "Open php handler"); httpTrimExtraPath(q->conn); if (rx->flags & (HTTP_OPTIONS | HTTP_TRACE)) { httpHandleOptionsTrace(q->conn, "DELETE,GET,HEAD,POST,PUT"); } else if (rx->flags & (HTTP_GET | HTTP_HEAD | HTTP_POST | HTTP_PUT)) { httpMapFile(q->conn, rx->route); if (!q->stage->stageData) { if (initializePhp(q->conn->http) < 0) { httpError(q->conn, HTTP_CODE_INTERNAL_SERVER_ERROR, "PHP initialization failed"); } q->stage->stageData = mprAlloc(1); } q->queueData = mprAllocObj(MaPhp, NULL); } else { httpError(q->conn, HTTP_CODE_BAD_METHOD, "Method not supported by file handler: %s", rx->method); } }