int maStartServer(MaServer *server) { MaHost *host; MaListen *listen; int next, count, warned; /* * Start the hosts */ for (next = 0; (host = mprGetNextItem(server->hosts, &next)) != 0; ) { mprLog(server, 1, "Starting host named: \"%s\"", host->name); if (maStartHost(host) < 0) { return MPR_ERR_CANT_INITIALIZE; } } /* * Listen to all required ipAddr:ports */ warned = 0; count = 0; for (next = 0; (listen = mprGetNextItem(server->listens, &next)) != 0; ) { if (maStartListening(listen) < 0) { mprError(server, "Can't listen for HTTP on %s:%d", listen->ipAddr, listen->port); warned++; break; } else { count++; } } if (count == 0) { if (! warned) { mprError(server, "Server is not listening on any addresses"); } return MPR_ERR_CANT_OPEN; } /* * Now change user and group to the desired identities (user must be last) */ if (maApplyChangedGroup(server->http) < 0 || maApplyChangedUser(server->http) < 0) { return MPR_ERR_CANT_COMPLETE; } return 0; }
PUBLIC int maStartServer(MaServer *server) { HttpEndpoint *endpoint; int next, count, warned; warned = 0; count = 0; for (next = 0; (endpoint = mprGetNextItem(server->endpoints, &next)) != 0; ) { if (httpStartEndpoint(endpoint) < 0) { warned++; break; } else { count++; } } if (count == 0) { if (!warned) { mprError("Server is not listening on any addresses"); } return MPR_ERR_CANT_OPEN; } if (warned) { return MPR_ERR_CANT_OPEN; } #if BIT_UNIX_LIKE MaAppweb *appweb = server->appweb; if (appweb->userChanged || appweb->groupChanged) { if (!smatch(MPR->logPath, "stdout") && !smatch(MPR->logPath, "stderr")) { if (chown(MPR->logPath, appweb->uid, appweb->gid) < 0) { mprError("Cannot change ownership on %s", MPR->logPath); } } } if (maApplyChangedGroup(appweb) < 0 || maApplyChangedUser(appweb) < 0) { return MPR_ERR_CANT_COMPLETE; } #endif return 0; }