diff options
| -rw-r--r-- | contrib/pianobar.1 | 8 | ||||
| -rw-r--r-- | src/http/http.c | 16 | ||||
| -rw-r--r-- | src/http/http.h | 2 | ||||
| -rw-r--r-- | src/main.c | 11 | ||||
| -rw-r--r-- | src/main.h | 2 | ||||
| -rw-r--r-- | src/settings.c | 9 | ||||
| -rw-r--r-- | src/settings.h | 2 | 
7 files changed, 29 insertions, 21 deletions
| diff --git a/contrib/pianobar.1 b/contrib/pianobar.1 index 9600859..9219a99 100644 --- a/contrib/pianobar.1 +++ b/contrib/pianobar.1 @@ -335,8 +335,8 @@ Keep a history of the last n songs (5, by default). You can rate these songs.  Icon for loved songs.  .TP -.B max_player_errors = 5 -Amount of song download errors in a row after pianobar stops playback. +.B max_retry = 3 +Max failures for several actions before giving up.  .TP  .B partner_password = AC7IBG09A3DTSYM4R41UJWL07VLN8JI7 @@ -372,6 +372,10 @@ sorts by name from a to z, quickmix_01_name_za by type (quickmix at the  bottom) and name from z to a.  .TP +.B timeout = 30 +Network operation timeout. + +.TP  .B tired_icon =  zZ  Icon for temporarily suspended songs. diff --git a/src/http/http.c b/src/http/http.c index 4576d04..9457fab 100644 --- a/src/http/http.c +++ b/src/http/http.c @@ -41,7 +41,7 @@ struct _http_t {  static char* HttpToString(const wchar_t* wideString, int size);  static wchar_t* HttpToWideString(const char* string, int size); -static bool HttpCreateConnection (http_t http); +static bool HttpCreateConnection (http_t http, unsigned int timeOut);  static void HttpCloseConnection (http_t http);  static void HttpSetLastError (http_t http, const char* message);  static void HttpSetLastErrorW (http_t http, const wchar_t* message); @@ -75,7 +75,7 @@ static wchar_t* HttpToWideString(const char* string, int size) {  } -static bool HttpCreateConnection (http_t http) { +static bool HttpCreateConnection (http_t http, unsigned int timeOut) {  	INTERNET_PORT defaultPort = INTERNET_DEFAULT_PORT;  	HttpCloseConnection (http); @@ -89,10 +89,10 @@ static bool HttpCreateConnection (http_t http) {  	WINHTTP_SAFE(http->session != NULL);  	WinHttpSetTimeouts(http->session, -		60 * 1000,  // DNS time-out -		60 * 1000,  // connect time-out -		30 * 1000,  // send time-out -		30 * 1000); // receive time-out +		timeOut * 1000,  // DNS time-out +		timeOut * 1000,  // connect time-out +		timeOut * 1000,  // send time-out +		timeOut * 1000); // receive time-out  	http->connection = WinHttpConnect(  		http->session, @@ -187,7 +187,7 @@ static char* HttpFormatWinHttpError (DWORD errorCode) {  	return HttpFormatWinApiError(errorCode, NULL);  } -bool HttpInit(http_t* http, const char* endpoint, const char* securePort) { +bool HttpInit(http_t* http, const char* endpoint, const char* securePort, unsigned int timeOut) {  	http_t out = malloc(sizeof(struct _http_t));  	if (!out)  		return false; @@ -196,7 +196,7 @@ bool HttpInit(http_t* http, const char* endpoint, const char* securePort) {  	out->endpoint   = HttpToWideString(endpoint, -1);  	out->securePort = HttpToWideString(securePort, -1); -	if (!HttpCreateConnection (out)) { +	if (!HttpCreateConnection (out, timeOut)) {  		HttpDestroy (out);  		return false;  	} diff --git a/src/http/http.h b/src/http/http.h index 5ea617f..415b0d0 100644 --- a/src/http/http.h +++ b/src/http/http.h @@ -32,7 +32,7 @@ THE SOFTWARE.  typedef struct _http_t *http_t; -bool HttpInit (http_t*, const char*, const char*); +bool HttpInit (http_t*, const char*, const char*, unsigned int);  void HttpDestroy (http_t);  bool HttpSetAutoProxy (http_t, const char*); @@ -248,9 +248,9 @@ static void BarMainStartPlayback(BarApp_t *app)              PIANO_RET_OK);          if (!BarPlayer2Play(app->player)) -            ++app->playerErrors; +            ++app->retries;          else -            app->playerErrors = 0; +            app->retries = 0;      }  } @@ -265,11 +265,11 @@ static void BarMainPlayerCleanup(BarApp_t *app)      BarConsoleSetTitle(TITLE); -    if (app->playerErrors >= app->settings.maxPlayerErrors) +    if (app->retries >= app->settings.maxRetry)      {          /* don't continue playback if thread reports too many error */          app->nextStation = NULL; -        app->playerErrors = 0; +        app->retries = 0;      }  } @@ -411,7 +411,8 @@ int main(int argc, char **argv)              app.settings.keys[BAR_KS_HELP]);      } -    HttpInit(&app.http2, app.settings.rpcHost, app.settings.rpcTlsPort); +    HttpInit(&app.http2, app.settings.rpcHost, app.settings.rpcTlsPort, +        app.settings.timeout);      if (app.settings.controlProxy)          HttpSetProxy(app.http2, app.settings.controlProxy); @@ -46,6 +46,6 @@ typedef struct {  	PianoStation_t *curStation, *nextStation;  	char doQuit;  	BarReadline_t rl; -	unsigned int playerErrors; +	unsigned int retries;  } BarApp_t; diff --git a/src/settings.c b/src/settings.c index 553c86e..c8a413e 100644 --- a/src/settings.c +++ b/src/settings.c @@ -173,8 +173,9 @@ void BarSettingsRead (BarSettings_t *settings) {  	settings->autoselect = true;  	settings->history = 5;  	settings->volume = 0; +	settings->timeout = 30; /* seconds */  	settings->gainMul = 1.0; -	settings->maxPlayerErrors = 5; +	settings->maxRetry = 3;  	settings->sortOrder = BAR_SORT_NAME_AZ;  	settings->loveIcon = strdup (" <3");  	settings->banIcon = strdup (" </3"); @@ -353,8 +354,10 @@ void BarSettingsRead (BarSettings_t *settings) {  				settings->eventCmd = BarSettingsExpandTilde (val, userhome);  			} else if (streq ("history", key)) {  				settings->history = atoi (val); -			} else if (streq ("max_player_errors", key)) { -				settings->maxPlayerErrors = atoi (val); +			} else if (streq ("max_retry", key)) { +				settings->maxRetry = atoi (val); +			} else if (streq ("timeout", key)) { +				settings->timeout = atoi (val);  			} else if (streq ("sort", key)) {  				size_t i;  				static const char *mapping[] = {"name_az", diff --git a/src/settings.h b/src/settings.h index 8ec69ac..719c39b 100644 --- a/src/settings.h +++ b/src/settings.h @@ -86,7 +86,7 @@ typedef struct {  typedef struct {  	bool autoselect; -	unsigned int history, maxPlayerErrors; +	unsigned int history, maxRetry, timeout;  	int volume;  	float gainMul;  	BarStationSorting_t sortOrder; | 
