tcp-chat/src/server/request_handlers/ServerPublicInfo.c

38 lines
1.2 KiB
C

#include "request_handlers.h"
declare_RequestHandler(ServerPublicInfo)
{
Deferral(4);
logDebug(log_ctx, "requested %s", req_type_name);
ServerPublicInfoRequest req = {0};
try_void(PacketHeader_validateContentSize(req_head, sizeof(req)));
try_void(EncryptedSocketTCP_recvStruct(&conn->sock, &req));
//TODO: try find requested info
Array(u8) content;
switch(req.property){
default:{
try(char* err_msg, p, sendErrorMessage(conn, res_head,
"Unknown ServerPublicInfo property %u",
req.property));
logWarn(log_ctx, "%s", err_msg);
free(err_msg);
Return RESULT_VOID;
}
case ServerPublicInfo_Name:
content = str_castTo_Array(server->name);
break;
case ServerPublicInfo_Description:
content = str_castTo_Array(server->name);
break;
}
PacketHeader_construct(res_head,
PROTOCOL_VERSION, PacketType_ServerPublicInfoResponse, content.size);
try_void(EncryptedSocketTCP_sendStruct(&conn->sock, res_head));
try_void(EncryptedSocketTCP_send(&conn->sock, content));
Return RESULT_VOID;
}