Merge branch 'fix-recv-memleak'

This commit is contained in:
Michael Stapelberg 2014-03-08 20:59:18 +01:00
commit 89be6cb509
1 changed files with 7 additions and 2 deletions

View File

@ -833,14 +833,16 @@ handler_t handlers[8] = {
static void ipc_receive_message(EV_P_ struct ev_io *w, int revents) { static void ipc_receive_message(EV_P_ struct ev_io *w, int revents) {
uint32_t message_type; uint32_t message_type;
uint32_t message_length; uint32_t message_length;
uint8_t *message; uint8_t *message = NULL;
int ret = ipc_recv_message(w->fd, &message_type, &message_length, &message); int ret = ipc_recv_message(w->fd, &message_type, &message_length, &message);
/* EOF or other error */ /* EOF or other error */
if (ret < 0) { if (ret < 0) {
/* Was this a spurious read? See ev(3) */ /* Was this a spurious read? See ev(3) */
if (ret == -1 && errno == EAGAIN) if (ret == -1 && errno == EAGAIN) {
FREE(message);
return; return;
}
/* If not, there was some kind of error. We dont bother /* If not, there was some kind of error. We dont bother
* and close the connection */ * and close the connection */
@ -863,6 +865,7 @@ static void ipc_receive_message(EV_P_ struct ev_io *w, int revents) {
ev_io_stop(EV_A_ w); ev_io_stop(EV_A_ w);
free(w); free(w);
FREE(message);
DLOG("IPC: client disconnected\n"); DLOG("IPC: client disconnected\n");
return; return;
@ -874,6 +877,8 @@ static void ipc_receive_message(EV_P_ struct ev_io *w, int revents) {
handler_t h = handlers[message_type]; handler_t h = handlers[message_type];
h(w->fd, message, 0, message_length, message_type); h(w->fd, message, 0, message_length, message_type);
} }
FREE(message);
} }
/* /*