Package: pianobar
Version: 2012.12.01-1
Severity: important
Tags: patch, upstream
anthony@Watt:~$ pianobar
Welcome to pianobar (2012.12.01)! Press ? for a list of commands.
(i) Login... Network error: TLS read failed.
This is only with Pandora One high-quality audio I believe. A patch
(not written by me) is available at
<https://gist.github.com/pvstodghill/4078695>
I am attaching a version of that patch suitable for plopping in
debian/patches. I have tested this, and it fixes the problem.
This bug unfortunately means I get to install a local version of
pianobar on my machines.
Upstream discussion is at
<https://github.com/PromyLOPh/pianobar/issues/321> and
<https://github.com/PromyLOPh/pianobar/pull/336>. I don't understand the
reason not to apply, so I've asked on the pull request.
-- System Information:
Debian Release: 7.0
APT prefers testing
APT policy: (500, 'testing'), (130, 'unstable'), (120, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 3.7-trunk-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Versions of packages pianobar depends on:
ii libao4 1.1.0-2
ii libc6 2.13-37
ii libfaad2 2.7-8
ii libgcrypt11 1.5.0-3
ii libgnutls26 2.12.20-2
ii libmad0 0.15.1b-7
ii libpiano0 2012.12.01-1
pianobar recommends no packages.
Versions of packages pianobar suggests:
ii libaudio-scrobbler-perl 0.01-2.1
-- no debconf information
Index: pianobar-2012.12.01/src/libwaitress/waitress.c
===================================================================
--- pianobar-2012.12.01.orig/src/libwaitress/waitress.c 2012-12-01 12:03:23.000000000 -0500
+++ pianobar-2012.12.01/src/libwaitress/waitress.c 2013-02-13 02:32:03.000000000 -0500
@@ -537,6 +537,14 @@
ssize_t ret = gnutls_record_recv (waith->request.tlsSession, buf, size);
if (ret < 0) {
+ if (ret == GNUTLS_E_UNEXPECTED_PACKET_LENGTH
+#ifdef GNUTLS_E_PREMATURE_TERMINATION
+ || ret == GNUTLS_E_PREMATURE_TERMINATION
+#endif
+ ) {
+ *retSize = 0;
+ return waith->request.readWriteRet;
+ }
return WAITRESS_RET_TLS_READ_ERR;
} else {
*retSize = ret;