/* Start the request. At this stage, body data may not have been fully received unless the request is a form (POST method and content type is application/x-www-form-urlencoded). Forms are a special case and delay invoking the start callback until all body data is received. WARNING: GC yield */ static void startEsp(HttpQueue *q) { HttpConn *conn; HttpRx *rx; EspReq *req; conn = q->conn; rx = conn->rx; req = conn->reqData; #if ME_WIN_LIKE rx->target = mprGetPortablePath(rx->target); #endif if (req) { mprSetThreadData(req->esp->local, conn); /* WARNING: GC yield */ if (!runAction(conn)) { pruneFlash(conn); } else { if (!conn->error && req->autoFinalize) { if (!conn->tx->responded) { /* WARNING: GC yield */ espRenderDocument(conn, rx->target); } if (req->autoFinalize) { espFinalize(conn); } } pruneFlash(conn); } finalizeFlash(conn); mprSetThreadData(req->esp->local, NULL); } }
PUBLIC void espSetConn(HttpConn *conn) { mprSetThreadData(((Esp*) MPR->espService)->local, conn); }