}
/*
- * compute human readable string containing
- * vss status for given integer value
+ * Compute human readable string containing vss status for given integer value.
+ *
+ * We don't want to use vss_playing() and friends here because we take a
+ * snapshot of the mmd struct and use the copy for computing the state of the
+ * vss. If the real data were used, we would take the mmd lock for a rather
+ * long time or risk to get an inconsistent view.
*/
static char *vss_status_tohuman(unsigned int flags)
{
if (flags & VSS_PLAYING)
return para_strdup("playing");
- else if (flags & VSS_NEXT)
+ if (flags & VSS_NEXT)
return para_strdup("stopped");
- else
- return para_strdup("paused");
+ return para_strdup("paused");
}
/*
if (!subcmds[i])
return -E_COMMAND_SYNTAX;
scd->cmd_num = i;
- mutex_lock(mmd_mutex);
- if (!senders[scd->sender_num].client_cmds[scd->cmd_num]) {
- mutex_unlock(mmd_mutex);
+ if (!senders[scd->sender_num].client_cmds[scd->cmd_num])
return -E_SENDER_CMD;
- }
- mutex_unlock(mmd_mutex);
switch (scd->cmd_num) {
case SENDER_ON:
case SENDER_OFF:
}
ut = uptime_str();
ret = send_va_buffer(fd, "up: %s\nplayed: %u\n"
- "pid: %d\n"
+ "server_pid: %d\n"
+ "afs_pid: %d\n"
"connections (active/accepted/total): %u/%u/%u\n"
"current loglevel: %i\n"
"supported audio formats: %s\n"
"%s",
ut, mmd->num_played,
(int)getppid(),
+ (int)mmd->afs_pid,
mmd->active_connections,
mmd->num_commands,
mmd->num_connects,