#include "responses.h" #define LOGGER conn->server->logger #define LOG_FUNC conn->server->log_func declare_RequestHandler(ServerPublicInfo) { Deferral(4); logInfo(log_ctx, "requested %s", req_type_name); // receive request ServerPublicInfoRequest req; try_void(PacketHeader_validateContentSize(req_head, sizeof(req))); try_void(EncryptedSocketTCP_recvStruct(&conn->sock, &req)); // find requested info Array(u8) content; switch(req.property){ default:{ try_void(sendErrorMessage_f(log_ctx, conn, res_head, LogSeverity_Warn, "Unknown ServerPublicInfo property %u", req.property)); Return RESULT_VOID; } case ServerPublicInfo_Name: content = str_castTo_Array_u8(conn->server->name); break; case ServerPublicInfo_Description: content = str_castTo_Array_u8(conn->server->description); break; } // send response ServerPublicInfoResponse res; ServerPublicInfoResponse_construct(&res, res_head, content.len); try_void(EncryptedSocketTCP_sendStruct(&conn->sock, res_head)); try_void(EncryptedSocketTCP_sendStruct(&conn->sock, &res)); try_void(EncryptedSocketTCP_send(&conn->sock, content)); Return RESULT_VOID; }