When socket to LCR is closed, the test call must be released

This commit is contained in:
Andreas Eversberg 2012-03-25 16:36:19 +02:00
parent 863e741714
commit c1f7899663
1 changed files with 6 additions and 13 deletions

View File

@ -1261,12 +1261,7 @@ int admin_handle_con(struct lcr_fd *fd, unsigned int what, void *instance, int i
if (len < 0) {
brokenpipe:
PDEBUG(DEBUG_LOG, "Broken pipe on socket %d. (errno=%d).\n", admin->sock, errno);
free_connection(admin);
return 0;
}
if (len == 0) {
end:
/*release endpoint if exists */
if (admin->epointid) {
epoint = find_epoint_id(admin->epointid);
@ -1279,16 +1274,16 @@ int admin_handle_con(struct lcr_fd *fd, unsigned int what, void *instance, int i
free_connection(admin);
return 0;
}
if (len == 0)
goto end;
if (len != sizeof(msg)) {
PERROR("Short/long read on socket %d. (len=%d != size=%d).\n", admin->sock, len, sizeof(msg));
free_connection(admin);
return 0;
goto end;
}
/* process socket command */
if (admin->response && msg.message != ADMIN_MESSAGE) {
PERROR("Data from socket %d while sending response.\n", admin->sock);
free_connection(admin);
return 0;
goto end;
}
switch (msg.message) {
case ADMIN_REQUEST_CMD_INTERFACE:
@ -1358,15 +1353,13 @@ int admin_handle_con(struct lcr_fd *fd, unsigned int what, void *instance, int i
if (admin_call(admin, &msg) < 0) {
PERROR("Failed to create call for socket %d.\n", admin->sock);
response_error:
free_connection(admin);
return 0;
goto end;
}
break;
default:
PERROR("Invalid message %d from socket %d.\n", msg.message, admin->sock);
free_connection(admin);
return 0;
goto end;
}
}