Memory cleanup
This commit is contained in:
parent
f3de55999f
commit
caf02463c6
8 changed files with 42 additions and 3 deletions
|
@ -7,6 +7,7 @@
|
||||||
int socket_open4();
|
int socket_open4();
|
||||||
int socket_bind4(int s, uint32_t ip, uint16_t port);
|
int socket_bind4(int s, uint32_t ip, uint16_t port);
|
||||||
int socket_bind4_reuse(int s, uint32_t ip, uint16_t port);
|
int socket_bind4_reuse(int s, uint32_t ip, uint16_t port);
|
||||||
|
int socket_read_select4(int socket_fd, int num_seconds);
|
||||||
int socket_accept4(int s, uint32_t *ip, uint16_t *port);
|
int socket_accept4(int s, uint32_t *ip, uint16_t *port);
|
||||||
int socket_local4(int s, uint32_t *ip, uint16_t *port);
|
int socket_local4(int s, uint32_t *ip, uint16_t *port);
|
||||||
int socket_connect4(int s, uint32_t ip, uint16_t port);
|
int socket_connect4(int s, uint32_t ip, uint16_t port);
|
||||||
|
|
|
@ -26,6 +26,8 @@ void libp2p_logger_init();
|
||||||
*/
|
*/
|
||||||
int libp2p_logger_initialized();
|
int libp2p_logger_initialized();
|
||||||
|
|
||||||
|
int libp2p_logger_free();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Log a message to the console
|
* Log a message to the console
|
||||||
* @param area the class it is coming from
|
* @param area the class it is coming from
|
||||||
|
|
13
net/socket.c
13
net/socket.c
|
@ -41,6 +41,19 @@ int socket_bind4_reuse(int s, uint32_t ip, uint16_t port)
|
||||||
return socket_bind4(s, ip, port);
|
return socket_bind4(s, ip, port);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int socket_read_select4(int socket_fd, int num_seconds) {
|
||||||
|
fd_set rfds;
|
||||||
|
struct timeval tv;
|
||||||
|
|
||||||
|
FD_ZERO(&rfds);
|
||||||
|
FD_SET(socket_fd, &rfds);
|
||||||
|
|
||||||
|
tv.tv_sec = num_seconds;
|
||||||
|
tv.tv_usec = 0;
|
||||||
|
|
||||||
|
return select(socket_fd +1, &rfds, NULL, NULL, &tv);
|
||||||
|
}
|
||||||
|
|
||||||
/* Accept a connection in a socket and return ip and port of
|
/* Accept a connection in a socket and return ip and port of
|
||||||
* remote connection at pointers passed as parameters.
|
* remote connection at pointers passed as parameters.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -34,6 +34,7 @@ struct Libp2pPeer* libp2p_peer_new_from_multiaddress(const struct MultiAddress*
|
||||||
out->id_size = strlen(id) + 1;
|
out->id_size = strlen(id) + 1;
|
||||||
out->id = malloc(out->id_size);
|
out->id = malloc(out->id_size);
|
||||||
strcpy(out->id, id);
|
strcpy(out->id, id);
|
||||||
|
free(id);
|
||||||
}
|
}
|
||||||
out->addr_head = libp2p_utils_linked_list_new();
|
out->addr_head = libp2p_utils_linked_list_new();
|
||||||
out->addr_head->item = multiaddress_copy(in);
|
out->addr_head->item = multiaddress_copy(in);
|
||||||
|
@ -100,6 +101,10 @@ void libp2p_peer_free(struct Libp2pPeer* in) {
|
||||||
if (in != NULL) {
|
if (in != NULL) {
|
||||||
if (in->id != NULL)
|
if (in->id != NULL)
|
||||||
free(in->id);
|
free(in->id);
|
||||||
|
if (in->connection != NULL) {
|
||||||
|
libp2p_net_multistream_stream_free(in->connection);
|
||||||
|
in->connection = NULL;
|
||||||
|
}
|
||||||
// free the memory in the linked list
|
// free the memory in the linked list
|
||||||
struct Libp2pLinkedList* current = in->addr_head;
|
struct Libp2pLinkedList* current = in->addr_head;
|
||||||
while (current != NULL) {
|
while (current != NULL) {
|
||||||
|
|
|
@ -33,7 +33,8 @@ void libp2p_message_free(struct Libp2pMessage* in) {
|
||||||
struct Libp2pLinkedList* next = NULL;
|
struct Libp2pLinkedList* next = NULL;
|
||||||
while (current != NULL) {
|
while (current != NULL) {
|
||||||
next = current->next;
|
next = current->next;
|
||||||
libp2p_peer_free(current->item);
|
struct Libp2pPeer* peer = (struct Libp2pPeer*)current->item;
|
||||||
|
libp2p_peer_free(peer);
|
||||||
current->item = NULL;
|
current->item = NULL;
|
||||||
libp2p_utils_linked_list_free(current);
|
libp2p_utils_linked_list_free(current);
|
||||||
current = next;
|
current = next;
|
||||||
|
@ -43,7 +44,8 @@ void libp2p_message_free(struct Libp2pMessage* in) {
|
||||||
current = in->provider_peer_head;
|
current = in->provider_peer_head;
|
||||||
while (current != NULL) {
|
while (current != NULL) {
|
||||||
next = current->next;
|
next = current->next;
|
||||||
libp2p_peer_free(current->item);
|
struct Libp2pPeer* peer = (struct Libp2pPeer*)current->item;
|
||||||
|
libp2p_peer_free(peer);
|
||||||
current->item = NULL;
|
current->item = NULL;
|
||||||
libp2p_utils_linked_list_free(current);
|
libp2p_utils_linked_list_free(current);
|
||||||
current = next;
|
current = next;
|
||||||
|
|
|
@ -184,7 +184,10 @@ int libp2p_routing_dht_handle_add_provider(struct SessionContext* session, struc
|
||||||
char new_string[255];
|
char new_string[255];
|
||||||
multiaddress_get_ip_address(session->default_stream->address, &ip);
|
multiaddress_get_ip_address(session->default_stream->address, &ip);
|
||||||
int port = multiaddress_get_ip_port(peer_ma);
|
int port = multiaddress_get_ip_port(peer_ma);
|
||||||
sprintf(new_string, "/ip4/%s/tcp/%d/ipfs/%s", ip, port, peer->id);
|
char* peer_id = multiaddress_get_peer_id(peer_ma);
|
||||||
|
sprintf(new_string, "/ip4/%s/tcp/%d/ipfs/%s", ip, port, peer_id);
|
||||||
|
free(ip);
|
||||||
|
free(peer_id);
|
||||||
struct MultiAddress* new_ma = multiaddress_new_from_string(new_string);
|
struct MultiAddress* new_ma = multiaddress_new_from_string(new_string);
|
||||||
if (new_ma == NULL)
|
if (new_ma == NULL)
|
||||||
goto exit;
|
goto exit;
|
||||||
|
@ -359,5 +362,9 @@ int libp2p_routing_dht_handle_message(struct SessionContext* session, struct Pee
|
||||||
free(buffer);
|
free(buffer);
|
||||||
if (result_buffer != NULL)
|
if (result_buffer != NULL)
|
||||||
free(result_buffer);
|
free(result_buffer);
|
||||||
|
/* JMJ Debugging
|
||||||
|
if (message != NULL)
|
||||||
|
libp2p_message_free(message);
|
||||||
|
*/
|
||||||
return retVal;
|
return retVal;
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,14 @@ int libp2p_logger_initialized() {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int libp2p_logger_free() {
|
||||||
|
for(int i = 0; i < logger_classes->total; i++) {
|
||||||
|
free(libp2p_utils_vector_get(logger_classes, i));
|
||||||
|
}
|
||||||
|
libp2p_utils_vector_free(logger_classes);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* Add a class to watch for logging messages
|
* Add a class to watch for logging messages
|
||||||
* @param str the class name to watch
|
* @param str the class name to watch
|
||||||
|
|
|
@ -76,4 +76,5 @@ void libp2p_utils_vector_delete(struct Libp2pVector *v, int index)
|
||||||
void libp2p_utils_vector_free(struct Libp2pVector *v)
|
void libp2p_utils_vector_free(struct Libp2pVector *v)
|
||||||
{
|
{
|
||||||
free(v->items);
|
free(v->items);
|
||||||
|
free(v);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue