diff --git a/lib/init.c b/lib/init.c index 2bb5b5d..1c11bcf 100644 --- a/lib/init.c +++ b/lib/init.c @@ -244,7 +244,6 @@ iscsi_destroy_context(struct iscsi_context *iscsi) free(discard_const(iscsi->chap_c)); iscsi->chap_c = NULL; - free(iscsi->connect_data); iscsi->connect_data = NULL; free(iscsi); diff --git a/lib/socket.c b/lib/socket.c index 1bcbbd4..8ec437a 100644 --- a/lib/socket.c +++ b/lib/socket.c @@ -68,11 +68,6 @@ iscsi_connect_async(struct iscsi_context *iscsi, const char *portal, struct addrinfo *ai = NULL; int socksize; - if (iscsi->connect_data != NULL) { - free(iscsi->connect_data); - } - iscsi->connect_data = private_data; - if (iscsi->fd != -1) { iscsi_set_error(iscsi, "Trying to connect but already connected."); @@ -159,6 +154,7 @@ iscsi_connect_async(struct iscsi_context *iscsi, const char *portal, } iscsi->socket_status_cb = cb; + iscsi->connect_data = private_data; set_nonblocking(iscsi->fd); diff --git a/lib/sync.c b/lib/sync.c index 8363de5..7e369a1 100644 --- a/lib/sync.c +++ b/lib/sync.c @@ -97,6 +97,9 @@ iscsi_connect_sync(struct iscsi_context *iscsi, const char *portal) event_loop(iscsi, &state); + /* clear connect_data so it doesnt point to our stack */ + iscsi->connect_data = NULL; + return state.status; }