Hi
I have the following scenario, and want to verify the expected outcome
pthread_wrlock_rdlock(&(server->lock));
if (server->is_connected) {
struct send_packets_args *send_packets_args;
send_packets_args = malloc(sizeof (struct send_packets_args));
// Initialize send_packets_args to contain buffer to send, and length of buffer to send
event_base_once(base, server->socket, EV_WRITE, send_packets, (void *) send_packets_args, NULL);
pthread_wrlock_unlock(&(server->lock));
event_base_loop(base, EVLOOP_NONBLOCK);
} else
pthread_wrlock_unlock(&(server->lock));
In my callback after I'm done with the sending I perform the cleaning up (free the send_packets_args)
Now my question, if at the moment I release my read lock above, the connection to the server is lost and server->socket is closed. Will the callback send_packets get called? I want to know the expected outcome because I need to make sure I'm not leaking memory allocated for the send_packets_args that gets freed as the final step of the send_packets callback.
Thanks
Regards
Sherif.