From c519d41a5afbb8e2adf98bd3d87c44a202293621 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Sun, 31 Mar 2013 15:50:32 +0200 Subject: Ignore HTTP status 400 Workaround for #355, fixes commit 2c516503d2cb81dd156afc24677ac4bf3caefceb. --- src/libwaitress/waitress.c | 6 +++++- src/libwaitress/waitress.h | 12 ++++++++---- src/player.c | 4 +++- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/libwaitress/waitress.c b/src/libwaitress/waitress.c index efb76a9..3d01198 100644 --- a/src/libwaitress/waitress.c +++ b/src/libwaitress/waitress.c @@ -1,5 +1,5 @@ /* -Copyright (c) 2009-2012 +Copyright (c) 2009-2013 Lars-Dominik Braun Permission is hereby granted, free of charge, to any person obtaining a copy @@ -974,6 +974,10 @@ static WaitressReturn_t WaitressReceiveHeaders (WaitressHandle_t *waith, hdrParseMode = HDRM_LINES; break; + case 400: + return WAITRESS_RET_BAD_REQUEST; + break; + case 403: return WAITRESS_RET_FORBIDDEN; break; diff --git a/src/libwaitress/waitress.h b/src/libwaitress/waitress.h index 6a0a66f..9075047 100644 --- a/src/libwaitress/waitress.h +++ b/src/libwaitress/waitress.h @@ -1,5 +1,5 @@ /* -Copyright (c) 2009-2012 +Copyright (c) 2009-2013 Lars-Dominik Braun Permission is hereby granted, free of charge, to any person obtaining a copy @@ -62,20 +62,24 @@ typedef struct { typedef enum { WAITRESS_RET_ERR = 0, WAITRESS_RET_OK, + WAITRESS_RET_CB_ABORT, + /* http error codes */ WAITRESS_RET_STATUS_UNKNOWN, WAITRESS_RET_NOTFOUND, WAITRESS_RET_FORBIDDEN, + WAITRESS_RET_BAD_REQUEST, + /* socket errors */ WAITRESS_RET_CONNECT_REFUSED, WAITRESS_RET_SOCK_ERR, WAITRESS_RET_GETADDR_ERR, - WAITRESS_RET_CB_ABORT, - WAITRESS_RET_PARTIAL_FILE, WAITRESS_RET_TIMEOUT, WAITRESS_RET_READ_ERR, WAITRESS_RET_CONNECTION_CLOSED, - WAITRESS_RET_DECODING_ERR, WAITRESS_RET_TLS_WRITE_ERR, WAITRESS_RET_TLS_READ_ERR, + /* protocol errors */ + WAITRESS_RET_PARTIAL_FILE, + WAITRESS_RET_DECODING_ERR, WAITRESS_RET_TLS_HANDSHAKE_ERR, WAITRESS_RET_TLS_FINGERPRINT_MISMATCH, } WaitressReturn_t; diff --git a/src/player.c b/src/player.c index 6e97e46..afd6eb4 100644 --- a/src/player.c +++ b/src/player.c @@ -530,7 +530,9 @@ void *BarPlayerThread (void *data) { ret = (void *) PLAYER_RET_ERR; } - if (wRet != WAITRESS_RET_OK && wRet != WAITRESS_RET_CB_ABORT) { + /* Pandora sends broken audio url’s sometimes (“bad request”). ignore them. */ + if (wRet != WAITRESS_RET_OK && wRet != WAITRESS_RET_CB_ABORT && + wRet != WAITRESS_RET_BAD_REQUEST) { BarUiMsg (player->settings, MSG_ERR, "Cannot access audio file: %s\n", WaitressErrorToStr (wRet)); ret = (void *) PLAYER_RET_ERR; -- cgit v1.2.3