PUBLIC void httpInitLimits(HttpLimits *limits, bool serverSide) { memset(limits, 0, sizeof(HttpLimits)); limits->bufferSize = ME_MAX_QBUFFER; limits->cacheItemSize = ME_MAX_CACHE_ITEM; limits->chunkSize = ME_MAX_CHUNK; limits->clientMax = ME_MAX_CLIENTS; limits->connectionsMax = ME_MAX_CONNECTIONS; limits->headerMax = ME_MAX_NUM_HEADERS; limits->headerSize = ME_MAX_HEADERS; limits->keepAliveMax = ME_MAX_KEEP_ALIVE; limits->processMax = ME_MAX_PROCESSES; limits->requestsPerClientMax = ME_MAX_REQUESTS_PER_CLIENT; limits->sessionMax = ME_MAX_SESSIONS; limits->uriSize = ME_MAX_URI; limits->inactivityTimeout = ME_MAX_INACTIVITY_DURATION; limits->requestTimeout = ME_MAX_REQUEST_DURATION; limits->requestParseTimeout = ME_MAX_PARSE_DURATION; limits->sessionTimeout = ME_MAX_SESSION_DURATION; limits->webSocketsMax = ME_MAX_WSS_SOCKETS; limits->webSocketsMessageSize = ME_MAX_WSS_MESSAGE; limits->webSocketsFrameSize = ME_MAX_WSS_FRAME; limits->webSocketsPacketSize = ME_MAX_WSS_PACKET; limits->webSocketsPing = ME_MAX_PING_DURATION; if (serverSide) { limits->rxFormSize = ME_MAX_RX_FORM; limits->rxBodySize = ME_MAX_RX_BODY; limits->txBodySize = ME_MAX_TX_BODY; limits->uploadSize = ME_MAX_UPLOAD; } else { limits->rxFormSize = HTTP_UNLIMITED; limits->rxBodySize = HTTP_UNLIMITED; limits->txBodySize = HTTP_UNLIMITED; limits->uploadSize = HTTP_UNLIMITED; } #if KEEP mprSetMaxSocketClients(endpoint, atoi(value)); if (scaselesscmp(key, "LimitClients") == 0) { mprSetMaxSocketClients(endpoint, atoi(value)); return 1; } if (scaselesscmp(key, "LimitMemoryMax") == 0) { mprSetAllocLimits(endpoint, -1, atoi(value)); return 1; } if (scaselesscmp(key, "LimitMemoryRedline") == 0) { mprSetAllocLimits(endpoint, atoi(value), -1); return 1; } #endif }
/* * native static function set maximum(limit: Number): Void */ static EjsVar *setMaxMemory(Ejs *ejs, EjsVar *thisObj, int argc, EjsVar **argv) { int maxMemory; mprAssert(argc == 1 && ejsIsNumber(argv[0])); maxMemory = ejsGetInt(argv[0]); mprSetAllocLimits(ejs, -1, maxMemory); return 0; }
/* * native static function set redline(limit: Number): Void */ static EjsVar *setRedline(Ejs *ejs, EjsVar *thisObj, int argc, EjsVar **argv) { int redline; mprAssert(argc == 1 && ejsIsNumber(argv[0])); redline = ejsGetInt(argv[0]); if (redline <= 0) { redline = INT_MAX; } mprSetAllocLimits(ejs, redline, -1); return 0; }