Make the shout timeout configurable. The default is still 2 seconds.

git-svn-id: https://svn.musicpd.org/mpd/trunk@6556 09075e82-0dd4-0310-85a5-a0d7c8717e4f
This commit is contained in:
J. Alexander Treuman 2007-06-12 18:28:57 +00:00
parent 3c5cecb828
commit 6f2be47270
3 changed files with 18 additions and 2 deletions

View File

@ -375,6 +375,10 @@ default is "source".
This specifies whether to request that the stream be listed in all public
stream directories that the icecast server knows about. The default is no.
.TP
.B timeout <seconds>
This specifies the number of seconds to wait before giving up on trying to
connect to the icecast server. The default is 2 seconds.
.TP
.B description <description>
This specifies a description of the stream.
.TP

View File

@ -124,6 +124,7 @@ error_file "~/.mpd/mpd.error"
# description "My Stream Description" # optional
# genre "jazz" # optional
# public "no" # optional
# timeout "2" # optional
#}
#
# An example of a null output (for no audio output):

View File

@ -33,7 +33,7 @@
#include <vorbis/vorbisenc.h>
#define CONN_ATTEMPT_INTERVAL 60
#define CONN_TIMEOUT 2
#define DEFAULT_CONN_TIMEOUT 2
static int shoutInitCount;
@ -63,6 +63,7 @@ typedef struct _ShoutData {
MpdTag *tag;
int tagToSend;
int timeout;
int connAttempts;
time_t lastAttempt;
@ -80,6 +81,7 @@ static ShoutData *newShoutData(void)
ret->tagToSend = 0;
ret->bitrate = -1;
ret->quality = -2.0;
ret->timeout = DEFAULT_CONN_TIMEOUT;
ret->connAttempts = 0;
ret->lastAttempt = 0;
ret->audioFormat = NULL;
@ -221,6 +223,15 @@ static int myShout_initDriver(AudioOutput * audioOutput, ConfigParam * param)
}
/* optional paramters */
blockParam = getBlockParam(param, "timeout");
if (blockParam) {
sd->timeout = strtod(blockParam->value, &test);
if (*test != '\0' || sd->timeout <= 0) {
FATAL("shout timeout is not a positive integer, "
"line %i\n", blockParam->line);
}
}
blockParam = getBlockParam(param, "genre");
if (blockParam && shout_set_genre(sd->shoutConn, blockParam->value)) {
FATAL("error configuring shout defined at line %i: %s\n",
@ -451,7 +462,7 @@ static int myShout_openShoutConn(AudioOutput * audioOutput)
state = shout_open(sd->shoutConn);
while (state == SHOUTERR_BUSY && (t - sd->lastAttempt) < CONN_TIMEOUT) {
while (state == SHOUTERR_BUSY && (t - sd->lastAttempt) < sd->timeout) {
my_usleep(10000);
state = shout_get_connected(sd->shoutConn);
t = time(NULL);