summaryrefslogtreecommitdiffstats
path: root/3rdparty/mpg123/2020_all_mpg123-vorbis-ssl.patch
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/mpg123/2020_all_mpg123-vorbis-ssl.patch')
-rw-r--r--3rdparty/mpg123/2020_all_mpg123-vorbis-ssl.patch766
1 files changed, 0 insertions, 766 deletions
diff --git a/3rdparty/mpg123/2020_all_mpg123-vorbis-ssl.patch b/3rdparty/mpg123/2020_all_mpg123-vorbis-ssl.patch
deleted file mode 100644
index 453c91b..0000000
--- a/3rdparty/mpg123/2020_all_mpg123-vorbis-ssl.patch
+++ /dev/null
@@ -1,766 +0,0 @@
-diff -dPNur xmms-1.2.11/configure.in xmms-1.2.11-new/configure.in
---- xmms-1.2.11/configure.in 2007-11-16 22:52:30.000000000 +0100
-+++ xmms-1.2.11-new/configure.in 2007-11-25 00:00:09.000000000 +0100
-@@ -144,6 +144,22 @@
- fi
- AC_SUBST([PTHREAD_LIBS])
-
-+dnl *** OpenSSL support
-+AC_ARG_ENABLE( ssl,
-+[ --disable-ssl Disable HTTP SSL in plugin(s) [default=enabled]],,
-+ enable_ssl="yes")
-+
-+if test "x$enable_ssl" = xyes; then
-+ SSL_LIBS=""
-+ AC_CHECK_LIB(ssl, SSL_read, [SSL_LIBS="-lssl"
-+ AC_DEFINE(HTTP_SSL,,[Define if OpenSSL is available])
-+ AC_DEFINE(OPENSSL_NO_KRB5,,[Define if OpenSSL is available])],
-+ echo "*** SSL support requires openssl and openssl-devel packages ***")
-+ LIBS="$LIBS $SSL_LIBS"
-+else
-+ AC_MSG_RESULT([*** Disabling SSL in plugin(s) per user request ***])
-+ have_ssl=no
-+fi
-
- dnl ***
- dnl *** OpenGL
-diff -dPNur xmms-1.2.11/Input/mpg123/common.c xmms-1.2.11-new/Input/mpg123/common.c
---- xmms-1.2.11/Input/mpg123/common.c 2007-11-24 23:59:35.000000000 +0100
-+++ xmms-1.2.11-new/Input/mpg123/common.c 2007-11-25 00:00:09.000000000 +0100
-@@ -464,7 +464,11 @@
- void mpg123_open_stream(char *bs_filenam, int fd, unsigned long range)
- {
- filept_opened = 1;
-+#ifdef HTTP_SSL
-+ if (!strncasecmp(bs_filenam, "http://", 7) || !strncasecmp(bs_filenam, "https://", 8))
-+#else
- if (!strncasecmp(bs_filenam, "http://", 7))
-+#endif
- {
- filept = NULL;
- mpg123_info->filesize = 0;
-diff -dPNur xmms-1.2.11/Input/mpg123/http.c xmms-1.2.11-new/Input/mpg123/http.c
---- xmms-1.2.11/Input/mpg123/http.c 2007-11-24 23:53:33.000000000 +0100
-+++ xmms-1.2.11-new/Input/mpg123/http.c 2007-11-25 00:00:09.000000000 +0100
-@@ -33,6 +33,14 @@
- #include "mpg123.h"
- #include "libxmms/util.h"
-
-+#ifdef HTTP_SSL
-+#include <openssl/ssl.h>
-+#include <openssl/err.h>
-+#include <openssl/x509.h>
-+#include <openssl/pem.h>
-+#include <openssl/crypto.h>
-+#endif
-+
- #define min(x,y) ((x)<(y)?(x):(y))
- #define min3(x,y,z) (min(x,y)<(z)?min(x,y):(z))
- #define min4(x,y,z,w) (min3(x,y,z)<(w)?min3(x,y,z):(w))
-@@ -117,7 +125,11 @@
- return res;
- }
-
-+#ifdef HTTP_SSL
-+static void parse_url(const gchar * url, gchar ** user, gchar ** pass, gchar ** host, int *port, gchar ** filename, int *ssl)
-+#else
- static void parse_url(const gchar * url, gchar ** user, gchar ** pass, gchar ** host, int *port, gchar ** filename)
-+#endif
- {
- gchar *h, *p, *pt, *f, *temp, *ptr;
-
-@@ -126,6 +138,14 @@
-
- if (!strncasecmp("http://", ptr, 7))
- ptr += 7;
-+#ifdef HTTP_SSL
-+ if (!strncasecmp("https://", ptr, 8)) {
-+ ptr += 8;
-+ *ssl = 1;
-+ } else
-+ *ssl = 0;
-+#endif
-+
- h = strchr(ptr, '@');
- f = strchr(ptr, '/');
- if (h != NULL && (!f || h < f))
-@@ -160,7 +180,12 @@
- {
- if (f)
- *f = '\0';
-- *port = 80;
-+#ifdef HTTP_SSL
-+ if (*ssl)
-+ *port = 443;
-+ else
-+#endif
-+ *port = 80;
- }
- *host = g_strdup(h);
-
-@@ -302,16 +327,27 @@
- return FALSE;
- }
-
-+#ifdef HTTP_SSL
-+gint mpg123_http_read_line(gchar * buf, gint size, SSL *ssl_c)
-+#else
- gint mpg123_http_read_line(gchar * buf, gint size)
-+#endif
- {
-- gint i = 0;
-+ gint i = 0, rc;
-
- while (going && i < size - 1)
- {
- if (http_check_for_data())
- {
-- if (read(sock, buf + i, 1) <= 0)
-- return -1;
-+#ifdef HTTP_SSL
-+ if (ssl_c) {
-+ while ((rc = SSL_read(ssl_c, buf + i, 1)) == -1);
-+ if (rc <= 0)
-+ return -1;
-+ } else
-+#endif
-+ if (read(sock, buf + i, 1) <= 0)
-+ return -1;
- if (buf[i] == '\n')
- break;
- if (buf[i] != '\r')
-@@ -342,7 +378,13 @@
- struct sockaddr_in address;
- #endif
- struct timeval tv;
--
-+#ifdef HTTP_SSL
-+ SSL *ssl_c = NULL;
-+ SSL_CTX *ssl_ctx = NULL;
-+ BIO *b = NULL;
-+ gint ssl=0;
-+#endif
-+
- url = (gchar *) arg;
- do
- {
-@@ -350,7 +392,11 @@
-
- g_strstrip(url);
-
-+#ifdef HTTP_SSL
-+ parse_url(url, &user, &pass, &host, &port, &filename, &ssl);
-+#else
- parse_url(url, &user, &pass, &host, &port, &filename);
-+#endif
-
- if ((!filename || !*filename) && url[strlen(url) - 1] != '/')
- temp = g_strconcat(url, "/", NULL);
-@@ -362,6 +408,26 @@
- chost = mpg123_cfg.use_proxy ? mpg123_cfg.proxy_host : host;
- cport = mpg123_cfg.use_proxy ? mpg123_cfg.proxy_port : port;
-
-+#ifdef HTTP_SSL
-+ if (ssl) {
-+ SSL_library_init();
-+ OpenSSL_add_ssl_algorithms();
-+ SSL_load_error_strings();
-+
-+ ssl_ctx = SSL_CTX_new(SSLv23_client_method());
-+ if (ssl_ctx == NULL) {
-+ fprintf(stderr, "SSL_CTX_new() failed.");
-+ eof = TRUE;
-+ }
-+
-+ ssl_c = SSL_new(ssl_ctx);
-+ if (ssl_c == NULL) {
-+ fprintf(stderr, "SSL_new() failed.\n");
-+ eof = TRUE;
-+ }
-+ }
-+#endif
-+
- #ifdef USE_IPV6
- g_snprintf(service, 6, "%d", cport);
- memset(&hints, 0, sizeof(hints));
-@@ -441,7 +507,20 @@
- eof = TRUE;
- }
- }
-+#ifdef HTTP_SSL
-+ if (ssl) {
-+ b = BIO_new_socket(sock, BIO_NOCLOSE);
-+ if (b == NULL) {
-+ printf("BIO_new_socket() failed.\n");
-+ eof = TRUE;
-+ }
-+
-+ // cannot fail
-+ SSL_set_bio(ssl_c, b, b);
-+ }
-+#endif
- #endif
-+
- while (going)
- {
- tv.tv_sec = 0;
-@@ -466,6 +545,24 @@
- break;
- }
- }
-+#ifdef HTTP_SSL
-+ if (ssl) {
-+ int rc;
-+
-+ SSL_set_connect_state(ssl_c);
-+
-+ while ((rc = SSL_connect(ssl_c)) == -1);
-+ if (rc <= 0) {
-+ fprintf(stderr, "SSL_connect() error. SSL error code: %d.\n",
-+ SSL_get_error(ssl_c, rc));
-+ }
-+ while ((rc = SSL_do_handshake(ssl_c)) == -1);
-+ if (rc <= 0) {
-+ fprintf(stderr, "SSL_do_handshake() error. SSL error code: %d.\n",
-+ SSL_get_error(ssl_c, rc));
-+ }
-+ }
-+#endif
- if (!eof)
- {
- gchar *auth = NULL, *proxy_auth = NULL;
-@@ -517,14 +614,30 @@
- g_free(proxy_auth);
- if(auth)
- g_free(auth);
-- write(sock, temp, strlen(temp));
-+#ifdef HTTP_SSL
-+ if (ssl) {
-+ int rc;
-+ while ((rc = SSL_write(ssl_c, temp, strlen(temp))) == -1);
-+ if (rc <= 0) {
-+ fprintf(stderr, "SSL_write() error. SSL error code: %d.\n",
-+ SSL_get_error(ssl_c, rc));
-+ eof = TRUE;
-+ }
-+ } else
-+#endif
-+ write(sock, temp, strlen(temp));
-+
- g_free(temp);
- mpg123_ip.set_info_text(_("CONNECTED: WAITING FOR REPLY"));
- while (going && !eof)
- {
- if (http_check_for_data())
- {
-+#ifdef HTTP_SSL
-+ if (mpg123_http_read_line(line, 1024, ssl_c))
-+#else
- if (mpg123_http_read_line(line, 1024))
-+#endif
- {
- status = strchr(line, ' ');
- if (status)
-@@ -537,7 +650,11 @@
- {
- if(http_check_for_data())
- {
-+#ifdef HTTP_SSL
-+ if((cnt = mpg123_http_read_line(line, 1024, ssl_c)) != -1)
-+#else
- if((cnt = mpg123_http_read_line(line, 1024)) != -1)
-+#endif
- {
- if(!cnt)
- break;
-@@ -579,7 +696,11 @@
- {
- if (http_check_for_data())
- {
-+#ifdef HTTP_SSL
-+ if ((cnt = mpg123_http_read_line(line, 1024, ssl_c)) != -1)
-+#else
- if ((cnt = mpg123_http_read_line(line, 1024)) != -1)
-+#endif
- {
- if (!cnt)
- break;
-@@ -617,6 +738,10 @@
- fclose(output_file);
- output_file = NULL;
- }
-+#ifdef HTTP_SSL
-+ if (ssl)
-+ SSL_shutdown(ssl_c);
-+#endif
- close(sock);
- g_free(user);
- g_free(pass);
-@@ -634,6 +759,10 @@
- fname = file;
- if (!strncasecmp(fname, "http://", 7))
- fname += 7;
-+#ifdef HTTP_SSL
-+ if (!strncasecmp(fname, "https://", 8))
-+ fname += 8;
-+#endif
- temp = strrchr(fname, '.');
- if (temp && !strcasecmp(temp, ".mp3"))
- *temp = '\0';
-@@ -668,7 +797,12 @@
- cnt = min(http_free(), buffer_length - wr_index);
- if (cnt > 1024)
- cnt = 1024;
-- written = read(sock, buffer + wr_index, cnt);
-+#ifdef HTTP_SSL
-+ if (ssl)
-+ while ((written = SSL_read(ssl_c, buffer + wr_index, cnt)) == -1);
-+ else
-+#endif
-+ written = read(sock, buffer + wr_index, cnt);
- if (written <= 0)
- {
- eof = TRUE;
-@@ -715,6 +849,10 @@
- fclose(output_file);
- output_file = NULL;
- }
-+#ifdef HTTP_SSL
-+ if (ssl)
-+ SSL_shutdown(ssl_c);
-+#endif
- close(sock);
- if (udp_sock != 0)
- close(udp_sock);
-diff -dPNur xmms-1.2.11/Input/mpg123/mpg123.c xmms-1.2.11-new/Input/mpg123/mpg123.c
---- xmms-1.2.11/Input/mpg123/mpg123.c 2007-11-24 23:59:35.000000000 +0100
-+++ xmms-1.2.11-new/Input/mpg123/mpg123.c 2007-11-25 00:00:09.000000000 +0100
-@@ -317,7 +317,11 @@
- char *ext;
- guint16 wavid;
-
-+#ifdef HTTP_SSL
-+ if (!strncasecmp(filename, "http://", 7) || !strncasecmp(filename, "https://", 8))
-+#else
- if (!strncasecmp(filename, "http://", 7))
-+#endif
- { /* We assume all http:// (except those ending in .ogg) are mpeg -- why do we do that? */
- ext = strrchr(filename, '.');
- if (ext)
-@@ -801,7 +805,11 @@
- /*
- * TODO: Getting song info from http streams.
- */
-+#ifdef HTTP_SSL
-+ if (strncasecmp(filename, "http://", 7) && strncasecmp(filename, "https://", 8))
-+#else
- if (strncasecmp(filename, "http://", 7))
-+#endif
- {
- if ((file = fopen(filename, "rb")) != NULL)
- {
-@@ -890,7 +898,12 @@
- mpg123_init_layer3(fr.down_sample_sblimit);
-
- mpg123_info->tpf = mpg123_compute_tpf(&fr);
-+
-+#ifdef HTTP_SSL
-+ if (strncasecmp(filename, "http://", 7) && strncasecmp(filename, "https://", 8))
-+#else
- if (strncasecmp(filename, "http://", 7))
-+#endif
- {
- if (mpg123_stream_check_for_xing_header(&fr, &xing_header))
- {
-@@ -937,7 +950,11 @@
- mpg123_mode = fr.mode;
- mpg123_length = mpg123_info->num_frames * mpg123_info->tpf * 1000;
-
-+#ifdef HTTP_SSL
-+ if (strncasecmp(filename, "http://", 7) && strncasecmp(filename, "https://", 8))
-+#else
- if (strncasecmp(filename, "http://", 7))
-+#endif
- {
- if (!mpg123_title)
- mpg123_title = get_song_title(NULL,filename);
-@@ -1050,7 +1067,11 @@
- {
- /* FIXME networks streams */
- disp_bitrate = mpg123_bitrate;
-+#ifdef HTTP_SSL
-+ if(!have_xing_header && strncasecmp(filename,"http://",7) && strncasecmp(filename, "https://", 8))
-+#else
- if(!have_xing_header && strncasecmp(filename,"http://",7))
-+#endif
- {
- double rel = mpg123_relative_pos();
- if (rel)
-diff -dPNur xmms-1.2.11/Input/vorbis/fileinfo.c xmms-1.2.11-new/Input/vorbis/fileinfo.c
---- xmms-1.2.11/Input/vorbis/fileinfo.c 2005-05-15 02:01:20.000000000 +0200
-+++ xmms-1.2.11-new/Input/vorbis/fileinfo.c 2007-11-25 00:00:09.000000000 +0100
-@@ -227,7 +227,12 @@
- vcedit_state *state;
- vorbis_comment *comment;
-
-+#ifdef HTTP_SSL
-+ if (!g_strncasecmp(vte.filename, "http://", 7) ||
-+ !g_strncasecmp(vte.filename, "https://", 8))
-+#else
- if (!g_strncasecmp(vte.filename, "http://", 7))
-+#endif
- return;
-
- state = vcedit_new_state();
-@@ -303,7 +308,12 @@
- vcedit_state *state;
- vorbis_comment *comment;
-
-+#ifdef HTTP_SSL
-+ if (!g_strncasecmp(vte.filename, "http://", 7) ||
-+ !g_strncasecmp(vte.filename, "https://", 8))
-+#else
- if (!g_strncasecmp(vte.filename, "http://", 7))
-+#endif
- return;
-
- state = vcedit_new_state();
-@@ -800,7 +810,12 @@
- } else
- gdk_window_raise(window->window);
-
-+#ifdef HTTP_SSL
-+ if (!g_strncasecmp(vte.filename, "http://", 7) ||
-+ !g_strncasecmp(vte.filename, "https://", 8))
-+#else
- if (!g_strncasecmp(vte.filename, "http://", 7))
-+#endif
- gtk_widget_set_sensitive(tag_frame, FALSE);
- else
- gtk_widget_set_sensitive(tag_frame, TRUE);
-diff -dPNur xmms-1.2.11/Input/vorbis/http.c xmms-1.2.11-new/Input/vorbis/http.c
---- xmms-1.2.11/Input/vorbis/http.c 2007-11-16 22:51:24.000000000 +0100
-+++ xmms-1.2.11-new/Input/vorbis/http.c 2007-11-25 00:03:11.000000000 +0100
-@@ -39,6 +39,10 @@
- #include "xmms/plugin.h"
- #include "xmms/i18n.h"
-
-+#ifdef HTTP_SSL
-+#include <openssl/ssl.h>
-+#endif
-+
- #define min(x,y) ((x)<(y)?(x):(y))
- #define min3(x,y,z) (min(x,y)<(z)?min(x,y):(z))
- #define min4(x,y,z,w) (min3(x,y,z)<(w)?min3(x,y,z):(w))
-@@ -116,7 +120,11 @@
- return res;
- }
-
-+#ifdef HTTP_SSL
-+static void parse_url(const gchar * url, gchar ** user, gchar ** pass, gchar ** host, int *port, gchar ** filename, int *ssl)
-+#else
- static void parse_url(const gchar * url, gchar ** user, gchar ** pass, gchar ** host, int *port, gchar ** filename)
-+#endif
- {
- gchar *h, *p, *pt, *f, *temp, *ptr;
-
-@@ -125,6 +133,14 @@
-
- if (!strncasecmp("http://", ptr, 7))
- ptr += 7;
-+#ifdef HTTP_SSL
-+ if (!strncasecmp("https://", ptr, 8)) {
-+ ptr += 8;
-+ *ssl = 1;
-+ } else
-+ *ssl = 0;
-+#endif
-+
- h = strchr(ptr, '@');
- f = strchr(ptr, '/');
- if (h != NULL && (!f || h < f))
-@@ -159,7 +175,12 @@
- {
- if (f)
- *f = '\0';
-- *port = 80;
-+#ifdef HTTP_SSL
-+ if (*ssl)
-+ *port = 443;
-+ else
-+#endif
-+ *port = 80;
- }
- *host = g_strdup(h);
-
-@@ -257,16 +278,27 @@
- return FALSE;
- }
-
-+#ifdef HTTP_SSL
-+gint vorbis_http_read_line(gchar * buf, gint size, SSL *ssl_c)
-+#else
- gint vorbis_http_read_line(gchar * buf, gint size)
-+#endif
- {
-- gint i = 0;
-+ gint i = 0, rc;
-
- while (going && i < size - 1)
- {
- if (http_check_for_data())
- {
-- if (read(sock, buf + i, 1) <= 0)
-- return -1;
-+#ifdef HTTP_SSL
-+ if (ssl_c) {
-+ while ((rc = SSL_read(ssl_c, buf + i, 1)) == -1);
-+ if (rc <= 0)
-+ return -1;
-+ } else
-+#endif
-+ if (read(sock, buf + i, 1) <= 0)
-+ return -1;
- if (buf[i] == '\n')
- break;
- if (buf[i] != '\r')
-@@ -296,6 +328,12 @@
- struct sockaddr_in address;
- #endif
- struct timeval tv;
-+#ifdef HTTP_SSL
-+ SSL *ssl_c = NULL;
-+ SSL_CTX *ssl_ctx = NULL;
-+ BIO *b = NULL;
-+ gint ssl=0;
-+#endif
-
- url = (gchar *) arg;
- do
-@@ -304,7 +342,11 @@
-
- g_strstrip(url);
-
-+#ifdef HTTP_SSL
-+ parse_url(url, &user, &pass, &host, &port, &filename, &ssl);
-+#else
- parse_url(url, &user, &pass, &host, &port, &filename);
-+#endif
-
- if ((!filename || !*filename) && url[strlen(url) - 1] != '/')
- temp = g_strconcat(url, "/", NULL);
-@@ -316,6 +358,26 @@
- chost = vorbis_cfg.use_proxy ? vorbis_cfg.proxy_host : host;
- cport = vorbis_cfg.use_proxy ? vorbis_cfg.proxy_port : port;
-
-+#ifdef HTTP_SSL
-+ if (ssl) {
-+ SSL_library_init();
-+ OpenSSL_add_ssl_algorithms();
-+ SSL_load_error_strings();
-+
-+ ssl_ctx = SSL_CTX_new(SSLv23_client_method());
-+ if (ssl_ctx == NULL) {
-+ fprintf(stderr, "SSL_CTX_new() failed.");
-+ eof = TRUE;
-+ }
-+
-+ ssl_c = SSL_new(ssl_ctx);
-+ if (ssl_c == NULL) {
-+ fprintf(stderr, "SSL_new() failed.\n");
-+ eof = TRUE;
-+ }
-+ }
-+#endif
-+
- #ifdef USE_IPV6
- g_snprintf(service, 6, "%d", cport);
- memset(&hints, 0, sizeof(hints));
-@@ -394,6 +456,18 @@
- eof = TRUE;
- }
- }
-+#ifdef HTTP_SSL
-+ if (ssl) {
-+ b = BIO_new_socket(sock, BIO_NOCLOSE);
-+ if (b == NULL) {
-+ printf("BIO_new_socket() failed.\n");
-+ eof = TRUE;
-+ }
-+
-+ // cannot fail
-+ SSL_set_bio(ssl_c, b, b);
-+ }
-+#endif
- #endif
- while (going)
- {
-@@ -419,6 +493,24 @@
- break;
- }
- }
-+#ifdef HTTP_SSL
-+ if (ssl) {
-+ int rc;
-+
-+ SSL_set_connect_state(ssl_c);
-+
-+ while ((rc = SSL_connect(ssl_c)) == -1);
-+ if (rc <= 0) {
-+ fprintf(stderr, "SSL_connect() error. SSL error code: %d.\n",
-+ SSL_get_error(ssl_c, rc));
-+ }
-+ while ((rc = SSL_do_handshake(ssl_c)) == -1);
-+ if (rc <= 0) {
-+ fprintf(stderr, "SSL_do_handshake() error. SSL error code: %d.\n",
-+ SSL_get_error(ssl_c, rc));
-+ }
-+ }
-+#endif
- if (!eof)
- {
- gchar *auth = NULL, *proxy_auth = NULL;
-@@ -449,14 +541,30 @@
- g_free(proxy_auth);
- if(auth)
- g_free(auth);
-- write(sock, temp, strlen(temp));
-+#ifdef HTTP_SSL
-+ if (ssl) {
-+ int rc;
-+ while ((rc = SSL_write(ssl_c, temp, strlen(temp))) == -1);
-+ if (rc <= 0) {
-+ fprintf(stderr, "SSL_write() error. SSL error code: %d.\n",
-+ SSL_get_error(ssl_c, rc));
-+ eof = TRUE;
-+ }
-+ } else
-+#endif
-+ write(sock, temp, strlen(temp));
-+
- g_free(temp);
- vorbis_ip.set_info_text(_("CONNECTED: WAITING FOR REPLY"));
- while (going && !eof)
- {
- if (http_check_for_data())
- {
-+#ifdef HTTP_SSL
-+ if (vorbis_http_read_line(line, 1024, ssl_c))
-+#else
- if (vorbis_http_read_line(line, 1024))
-+#endif
- {
- status = strchr(line, ' ');
- if (status)
-@@ -469,7 +577,11 @@
- {
- if(http_check_for_data())
- {
-+#ifdef HTTP_SSL
-+ if((cnt = vorbis_http_read_line(line, 1024, ssl_c)) != -1)
-+#else
- if((cnt = vorbis_http_read_line(line, 1024)) != -1)
-+#endif
- {
- if(!cnt)
- break;
-@@ -511,7 +623,11 @@
- {
- if (http_check_for_data())
- {
-+#ifdef HTTP_SSL
-+ if ((cnt = vorbis_http_read_line(line, 1024, ssl_c)) != -1)
-+#else
- if ((cnt = vorbis_http_read_line(line, 1024)) != -1)
-+#endif
- {
- if (!cnt)
- break;
-@@ -537,6 +653,10 @@
- fclose(output_file);
- output_file = NULL;
- }
-+#ifdef HTTP_SSL
-+ if (ssl)
-+ SSL_shutdown(ssl_c);
-+#endif
- close(sock);
- g_free(user);
- g_free(pass);
-@@ -554,6 +674,9 @@
- fname = file;
- if (!strncasecmp(fname, "http://", 7))
- fname += 7;
-+ if (!strncasecmp(fname, "https://", 8))
-+ fname += 8;
-+
- temp = strrchr(fname, '.');
- if (temp && !strcasecmp(temp, ".ogg"))
- *temp = '\0';
-@@ -588,7 +711,12 @@
- cnt = min(http_free(), buffer_length - wr_index);
- if (cnt > 1024)
- cnt = 1024;
-- written = read(sock, buffer + wr_index, cnt);
-+#ifdef HTTP_SSL
-+ if (ssl)
-+ while ((written = SSL_read(ssl_c, buffer + wr_index, cnt)) == -1);
-+ else
-+#endif
-+ written = read(sock, buffer + wr_index, cnt);
- if (written <= 0)
- {
- eof = TRUE;
-@@ -629,6 +757,10 @@
- fclose(output_file);
- output_file = NULL;
- }
-+#ifdef HTTP_SSL
-+ if (ssl)
-+ SSL_shutdown(ssl_c);
-+#endif
- close(sock);
-
-
-diff -dPNur xmms-1.2.11/Input/vorbis/vorbis.c xmms-1.2.11-new/Input/vorbis/vorbis.c
---- xmms-1.2.11/Input/vorbis/vorbis.c 2006-07-16 15:40:04.000000000 +0200
-+++ xmms-1.2.11-new/Input/vorbis/vorbis.c 2007-11-25 00:00:09.000000000 +0100
-@@ -138,7 +138,12 @@
- char *ext;
-
- /* is this our http resource? */
-+#ifdef HTTP_SSL
-+ if (strncasecmp(filename, "http://", 7) == 0 ||
-+ strncasecmp(filename, "https://", 8) == 0) {
-+#else
- if (strncasecmp(filename, "http://", 7) == 0) {
-+#endif
- ext = strrchr(filename, '.');
- if (ext) {
- if (!strncasecmp(ext, ".ogg", 4)) {
-@@ -332,7 +337,12 @@
-
- memset(&vf, 0, sizeof(vf));
-
-+#ifdef HTTP_SSL
-+ if (strncasecmp("http://", filename, 7) &&
-+ strncasecmp("https://", filename, 8)) {
-+#else
- if (strncasecmp("http://", filename, 7) != 0) {
-+#endif
- /* file is a real file */
- if ((stream = fopen(filename, "r")) == NULL) {
- vorbis_eos = TRUE;
-@@ -536,7 +546,12 @@
- FILE *stream;
- OggVorbis_File vf; /* avoid thread interaction */
-
-+#ifdef HTTP_SSL
-+ if (strncasecmp(filename, "http://", 7) &&
-+ strncasecmp(filename, "https://", 8)) {
-+#else
- if (strncasecmp(filename, "http://", 7)) {
-+#endif
- if ((stream = fopen(filename, "r")) == NULL)
- return;
-