return 1;
}
-int __noreturn com_term(int fd, __a_unused int argc, __a_unused char **argv)
+__noreturn int com_term(int fd, __a_unused int argc, __a_unused char **argv)
{
close(fd);
clean_exit(EXIT_SUCCESS, "terminating on user request");
return -E_UCRED_PERM;
}
+/**
+ * handle arriving connections on the local socket
+ *
+ * \param accept_fd the fd to call accept() on
+ *
+ * This is called whenever para_audiod's main task detects an incoming
+ * connection by the readability of \a accept_fd. This function reads the
+ * command sent by the peer, checks the connecting user's permissions by using
+ * unix socket credentials (if supported by the OS) and calls the corresponding
+ * command handler if permissions are OK.
+ *
+ * \return positive on success, negative on errors
+ *
+ * \sa para_accept(), recv_cred_buffer()
+ * */
int handle_connect(int accept_fd)
{
int i, argc, ret, clifd = -1;
}
return ret;
}
-
+/**
+ * send the current audiod status to all connected stat clients
+ */
void audiod_status_dump(void)
{
struct timeval *t = wstime();
old = stat_task->stat_item_values[SI_DECODER_FLAGS];
new = decoder_flags();
if (!old || strcmp(old, new)) {
+ free(old);
stat_client_write(new, SI_DECODER_FLAGS);
stat_task->stat_item_values[SI_DECODER_FLAGS] = new;
} else