On Sat, May 29, 2010 at 6:44 AM, Sherif Fanous <
sherif.fanous@xxxxxxxxx> wrote:
> 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.