Browse Source

Solve Valgrind "possibly lost" for redis and dtls

pull/1016/head
Stefan Mititelu 6 years ago
parent
commit
a6d2f92962
5 changed files with 26 additions and 1 deletions
  1. +13
    -0
      daemon/dtls.c
  2. +5
    -0
      daemon/main.c
  3. +6
    -1
      daemon/redis.c
  4. +1
    -0
      include/dtls.h
  5. +1
    -0
      include/redis.h

+ 13
- 0
daemon/dtls.c View File

@ -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;


+ 5
- 0
daemon/main.c View File

@ -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();


+ 6
- 1
daemon/redis.c View File

@ -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;


+ 1
- 0
include/dtls.h View File

@ -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);


+ 1
- 0
include/redis.h View File

@ -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