fixed memory issues
This commit is contained in:
@@ -27,6 +27,8 @@ Result(ClientConnection*) ClientConnection_accept(ServerCredentials* server_cred
|
||||
conn->session_key = Array_alloc_size(AES_SESSION_KEY_SIZE);
|
||||
|
||||
Array(u8) buffer = Array_alloc_size(NETWORK_BUFFER_SIZE);
|
||||
// fix for valgrind false detected errors about uninitialized memory
|
||||
Array_memset(buffer, 0xCC);
|
||||
Defer(free(buffer.data));
|
||||
|
||||
// TODO: set socket timeout to 5 seconds
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#include "server.h"
|
||||
|
||||
|
||||
Result(ServerCredentials*) ServerCredentials_create(const str rsa_sk_base64, const str rsa_pk_base64){
|
||||
Result(ServerCredentials*) ServerCredentials_create(cstr rsa_sk_base64, cstr rsa_pk_base64){
|
||||
Deferral(4);
|
||||
|
||||
ServerCredentials* cred = (ServerCredentials*)malloc(sizeof(ServerCredentials));
|
||||
|
||||
@@ -24,6 +24,7 @@ static Result(void) parseConfig(cstr config_path){
|
||||
|
||||
// open file
|
||||
try(FILE* config_file, p, file_open(config_path, FO_ReadExisting));
|
||||
Defer(file_close(config_file));
|
||||
// read whole file into Array(char)
|
||||
try(i64 config_file_size, i, file_getSize(config_file));
|
||||
Array(char) config_buf = Array_alloc(char, config_file_size);
|
||||
@@ -35,7 +36,13 @@ static Result(void) parseConfig(cstr config_path){
|
||||
str pk_base64;
|
||||
try_void(config_findValue(config_str, STR("rsa_private_key"), &sk_base64, true));
|
||||
try_void(config_findValue(config_str, STR("rsa_public_key"), &pk_base64, true));
|
||||
try(_server_credentials, p, ServerCredentials_create(sk_base64, pk_base64));
|
||||
char* sk_base64_cstr = str_copy(sk_base64).data;
|
||||
char* pk_base64_cstr = str_copy(pk_base64).data;
|
||||
Defer(
|
||||
free(sk_base64_cstr);
|
||||
free(pk_base64_cstr);
|
||||
);
|
||||
try(_server_credentials, p, ServerCredentials_create(sk_base64_cstr, pk_base64_cstr));
|
||||
|
||||
Return RESULT_VOID;
|
||||
}
|
||||
@@ -46,6 +53,7 @@ Result(void) server_run(cstr server_endpoint_cstr, cstr config_path){
|
||||
logInfo(log_ctx, "starting server");
|
||||
logDebug(log_ctx, "parsing config");
|
||||
try_void(parseConfig(config_path));
|
||||
Defer(ServerCredentials_free(_server_credentials));
|
||||
|
||||
logDebug(log_ctx, "initializing main socket");
|
||||
EndpointIPv4 server_end;
|
||||
@@ -64,6 +72,7 @@ Result(void) server_run(cstr server_endpoint_cstr, cstr config_path){
|
||||
//TODO: use async IO instead of threads to not waste system resources
|
||||
// while waiting for incoming data in 100500 threads
|
||||
try_stderrcode(pthread_create(&conn_thread, NULL, handle_connection, args));
|
||||
try_stderrcode(pthread_detach(&conn_thread));
|
||||
}
|
||||
|
||||
Return RESULT_VOID;
|
||||
@@ -106,12 +115,13 @@ static Result(void) try_handle_connection(ConnectionHandlerArgs* args, cstr log_
|
||||
|
||||
// handle requests
|
||||
|
||||
// Array(u8) buffer = Array_alloc_size(NETWORK_BUFFER_SIZE);
|
||||
// Defer(free(buffer.data));
|
||||
// u32 dec_size = 0;
|
||||
Array(u8) buffer = Array_alloc_size(NETWORK_BUFFER_SIZE);
|
||||
// fix for valgrind false detected errors about uninitialized memory
|
||||
Array_memset(buffer, 0xCC);
|
||||
Defer(free(buffer.data));
|
||||
u32 dec_size = 0;
|
||||
|
||||
while(true){
|
||||
|
||||
sleepMsec(10);
|
||||
}
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ typedef struct ServerCredentials {
|
||||
br_rsa_public_key rsa_pk;
|
||||
} ServerCredentials;
|
||||
|
||||
Result(ServerCredentials*) ServerCredentials_create(const str rsa_sk_base64, const str rsa_pk_base64);
|
||||
Result(ServerCredentials*) ServerCredentials_create(cstr rsa_sk_base64, cstr rsa_pk_base64);
|
||||
|
||||
void ServerCredentials_free(ServerCredentials* cred);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user