Solve Valgrind "possibly lost" for redis and dtls

pull/1016/head
Stefan Mititelu 5 years ago
parent 1589c29e28
commit a6d2f92962

@ -384,6 +384,19 @@ struct dtls_cert *dtls_cert() {
return ret;
}
void dtls_cert_free(void) {
rwlock_lock_w(&__dtls_cert_lock);
if (__dtls_cert)
obj_put(__dtls_cert);
__dtls_cert = NULL;
rwlock_unlock_w(&__dtls_cert_lock);
return ;
}
static int verify_callback(int ok, X509_STORE_CTX *store) {
SSL *ssl;
struct dtls_connection *d;

@ -942,6 +942,11 @@ int main(int argc, char **argv) {
ilog(LOG_INFO, "Version %s shutting down", RTPENGINE_VERSION);
redis_close(rtpe_redis);
redis_close(rtpe_redis_write);
redis_close(rtpe_redis_notify);
dtls_cert_free();
unfill_initial_rtpe_cfg(&initial_rtpe_config);
options_free();

@ -631,6 +631,9 @@ void redis_notify_loop(void *d) {
}
}
// free libevent
libevent_global_shutdown();
// unsubscribe notifications
redis_notify_subscribe_action(UNSUBSCRIBE_ALL, 0);
@ -677,7 +680,9 @@ err:
}
static void redis_close(struct redis *r) {
void redis_close(struct redis *r) {
if (!r)
return;
if (r->ctx)
redisFree(r->ctx);
r->ctx = NULL;

@ -66,6 +66,7 @@ void dtls_timer(struct poller *);
int dtls_verify_cert(struct packet_stream *ps);
const struct dtls_hash_func *dtls_find_hash_func(const str *);
struct dtls_cert *dtls_cert(void);
void dtls_cert_free(void);
int dtls_connection_init(struct dtls_connection *, struct packet_stream *, int active, struct dtls_cert *cert);
int dtls(struct stream_fd *, const str *s, const endpoint_t *sin);

@ -102,6 +102,7 @@ void redis_notify_loop(void *d);
struct redis *redis_new(const endpoint_t *, int, const char *, enum redis_role, int);
void redis_close(struct redis *r);
int redis_restore(struct redis *);
void redis_update(struct call *, struct redis *);
void redis_update_onekey(struct call *c, struct redis *r);

Loading…
Cancel
Save