in daemon/src/main/java/org/mvndaemon/mvnd/daemon/Server.java [262:303]
private void client(SocketChannel socket) {
LOGGER.info("Client connected");
if (!checkToken(socket)) {
LOGGER.error("Received invalid token, dropping connection");
updateState(DaemonState.Idle);
return;
}
try (DaemonConnection connection = new DaemonConnection(socket)) {
LOGGER.info("Waiting for request");
CompletableFuture<Message> request = new CompletableFuture<>();
new DaemonThread(() -> {
Message message = connection.receive();
request.complete(message);
})
.start();
Message message = request.get(1, TimeUnit.MINUTES);
if (message == null) {
LOGGER.info("Could not receive request after one minute, dropping connection");
updateState(DaemonState.Idle);
return;
}
if (message instanceof BuildRequest buildRequest) {
LOGGER.info("Request received: {}", message);
if (Boolean.getBoolean("mvnd.dump.client.env")) {
// Environment can contain passwords or tokens, so do not dump, unless specifically asked for
LOGGER.trace("Client environment dump: {}", buildRequest.getEnv());
}
handle(connection, buildRequest);
} else {
LOGGER.info("Ignoring message: {}", message);
}
} catch (Throwable t) {
LOGGER.error("Error reading request", t);
} finally {
if (!noDaemon) {
clearCache("sun.net.www.protocol.jar.JarFileFactory", "urlCache");
clearCache("sun.net.www.protocol.jar.JarFileFactory", "fileCache");
}
}
}