35 lines
977 B
C
35 lines
977 B
C
#include "requests.h"
|
|
|
|
|
|
Result(void) _recvResponse(EncryptedSocketTCP* sock,
|
|
PacketHeader* res_header, Array(u8) res, PacketType res_type)
|
|
{
|
|
Deferral(4);
|
|
|
|
try_void(EncryptedSocketTCP_recvStruct(sock, res_header));
|
|
try_void(PacketHeader_validateMagic(res_header));
|
|
if(res_header->type == PacketType_ErrorMessage){
|
|
str err_msg;
|
|
try_void(recvErrorMessage(sock, res_header, &err_msg));
|
|
Return RESULT_ERROR(err_msg, true);
|
|
}
|
|
|
|
try_void(PacketHeader_validateType(res_header, res_type));
|
|
try_void(PacketHeader_validateContentSize(res_header, res.len));
|
|
|
|
try_void(EncryptedSocketTCP_recv(sock, res, SocketRecvFlag_WholeBuffer));
|
|
|
|
Return RESULT_VOID;
|
|
}
|
|
|
|
Result(void) _sendRequest(EncryptedSocketTCP* sock,
|
|
PacketHeader* req_header, Array(u8) req)
|
|
{
|
|
Deferral(4);
|
|
|
|
try_void(EncryptedSocketTCP_sendStruct(sock, req_header));
|
|
try_void(EncryptedSocketTCP_send(sock, req));
|
|
|
|
Return RESULT_VOID;
|
|
}
|