diff options
author | blmpl <blm@poczta.fm> | 2016-10-15 10:10:52 +0200 |
---|---|---|
committer | Lars-Dominik Braun <lars@6xq.net> | 2016-10-15 10:13:00 +0200 |
commit | 79844540a83d7acaf8166b3081913f1968ebf78c (patch) | |
tree | 86ac1a7ba990661b0f4a063d165431f89d82e5f9 /src | |
parent | 7c2d9ebb7f61cf04d75e28ca5cd6932002c4357b (diff) | |
download | pianobar-79844540a83d7acaf8166b3081913f1968ebf78c.tar.gz pianobar-79844540a83d7acaf8166b3081913f1968ebf78c.tar.bz2 pianobar-79844540a83d7acaf8166b3081913f1968ebf78c.zip |
Support binding to a specific network interface
Closes #597.
Diffstat (limited to 'src')
-rw-r--r-- | src/settings.c | 3 | ||||
-rw-r--r-- | src/settings.h | 1 | ||||
-rw-r--r-- | src/ui.c | 9 |
3 files changed, 13 insertions, 0 deletions
diff --git a/src/settings.c b/src/settings.c index f1aa707..115a71c 100644 --- a/src/settings.c +++ b/src/settings.c @@ -111,6 +111,7 @@ void BarSettingsInit (BarSettings_t *settings) { void BarSettingsDestroy (BarSettings_t *settings) { free (settings->controlProxy); free (settings->proxy); + free (settings->bindTo); free (settings->username); free (settings->password); free (settings->passwordCmd); @@ -269,6 +270,8 @@ void BarSettingsRead (BarSettings_t *settings) { settings->controlProxy = strdup (val); } else if (streq ("proxy", key)) { settings->proxy = strdup (val); + } else if (streq ("bind_to", key)) { + settings->bindTo = strdup (val); } else if (streq ("user", key)) { settings->username = strdup (val); } else if (streq ("password", key)) { diff --git a/src/settings.h b/src/settings.h index d35a64c..0b40113 100644 --- a/src/settings.h +++ b/src/settings.h @@ -93,6 +93,7 @@ typedef struct { char *password, *passwordCmd; char *controlProxy; /* non-american listeners need this */ char *proxy; + char *bindTo; char *autostartStation; char *eventCmd; char *loveIcon; @@ -209,6 +209,15 @@ static CURLcode BarPianoHttpRequest (CURL * const http, setAndCheck (CURLOPT_CAINFO, settings->caBundle); } + if (settings->bindTo!= NULL) { + if (curl_easy_setopt (http, CURLOPT_INTERFACE, + settings->bindTo) != CURLE_OK) { + /* if binding fails, notice about that */ + BarUiMsg (settings, MSG_ERR, "bindTo (%s) is invalid!\n", + settings->bindTo); + } + } + /* set up proxy (control proxy for non-us citizen or global proxy for poor * firewalled fellows) */ if (settings->controlProxy != NULL) { |