From 35763dea799c96361e288a10eab0fbd16c36e880 Mon Sep 17 00:00:00 2001
From: Lars-Dominik Braun <lars@6xq.net>
Date: Sat, 14 Apr 2012 16:49:51 +0200
Subject: Add force_tls setting

Use TLS for all actions when requested. Closes #234
---
 src/settings.c | 3 +++
 src/settings.h | 1 +
 src/ui.c       | 7 ++++---
 3 files changed, 8 insertions(+), 3 deletions(-)

(limited to 'src')

diff --git a/src/settings.c b/src/settings.c
index 54edba9..51c2400 100644
--- a/src/settings.c
+++ b/src/settings.c
@@ -121,6 +121,7 @@ void BarSettingsRead (BarSettings_t *settings) {
 		#endif
 	#endif
 	settings->autoselect = true;
+	settings->forceTls = false;
 	settings->history = 5;
 	settings->volume = 0;
 	settings->sortOrder = BAR_SORT_NAME_AZ;
@@ -245,6 +246,8 @@ void BarSettingsRead (BarSettings_t *settings) {
 			settings->fifo = strdup (val);
 		} else if (streq ("autoselect", key)) {
 			settings->autoselect = atoi (val);
+		} else if (streq ("force_tls", key)) {
+			settings->forceTls = atoi (val);
 		} else if (streq ("tls_fingerprint", key)) {
 			/* expects 40 byte hex-encoded sha1 */
 			if (strlen (val) == 40) {
diff --git a/src/settings.h b/src/settings.h
index 4c4205e..ce3732b 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -81,6 +81,7 @@ typedef struct {
 
 typedef struct {
 	bool autoselect;
+	bool forceTls;
 	unsigned int history;
 	int volume;
 	BarStationSorting_t sortOrder;
diff --git a/src/ui.c b/src/ui.c
index 104ee04..4162dce 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -134,14 +134,15 @@ void BarUiMsg (const BarSettings_t *settings, const BarUiMsg_t type,
 /*	fetch http resource (post request)
  *	@param waitress handle
  *	@param piano request (initialized by PianoRequest())
+ *	@param ignore libpiano TLS hint and use it always
  */
 static WaitressReturn_t BarPianoHttpRequest (WaitressHandle_t *waith,
-		PianoRequest_t *req) {
+		PianoRequest_t *req, bool forceTls) {
 	waith->extraHeaders = "Content-Type: text/xml\r\n";
 	waith->postData = req->postData;
 	waith->method = WAITRESS_METHOD_POST;
 	waith->url.path = req->urlPath;
-	waith->url.tls = req->secure;
+	waith->url.tls = req->secure || forceTls;
 
 	return WaitressFetchBuf (waith, &req->responseData);
 }
@@ -172,7 +173,7 @@ int BarUiPianoCall (BarApp_t * const app, PianoRequestType_t type,
 			return 0;
 		}
 
-		*wRet = BarPianoHttpRequest (&app->waith, &req);
+		*wRet = BarPianoHttpRequest (&app->waith, &req, app->settings.forceTls);
 		if (*wRet != WAITRESS_RET_OK) {
 			BarUiMsg (&app->settings, MSG_NONE, "Network error: %s\n", WaitressErrorToStr (*wRet));
 			if (req.responseData != NULL) {
-- 
cgit v1.2.3