server_socket: use resolve_host_port() instead of getaddrinfo()
Allow port specification in "bind_to_address" settings.
This commit is contained in:
parent
7d9d459ac2
commit
a3f7947ad2
1
NEWS
1
NEWS
@ -20,6 +20,7 @@ ver 0.17 (2011/??/??)
|
|||||||
- roar: new output plugin for RoarAudio
|
- roar: new output plugin for RoarAudio
|
||||||
* state_file: add option "restore_paused"
|
* state_file: add option "restore_paused"
|
||||||
* cue: show CUE track numbers
|
* cue: show CUE track numbers
|
||||||
|
* allow port specification in "bind_to_address" settings
|
||||||
|
|
||||||
|
|
||||||
ver 0.16.5 (2010/??/??)
|
ver 0.16.5 (2010/??/??)
|
||||||
|
@ -83,6 +83,10 @@ This specifies which address mpd binds to and listens on. Multiple
|
|||||||
bind_to_address parameters may be specified. The default is "any", which binds
|
bind_to_address parameters may be specified. The default is "any", which binds
|
||||||
to all available addresses.
|
to all available addresses.
|
||||||
|
|
||||||
|
You can set a port that is different from the global port setting,
|
||||||
|
e.g. "localhost:6602". IPv6 addresses must be enclosed in square
|
||||||
|
brackets if you want to configure a port, e.g. "[::1]:6602".
|
||||||
|
|
||||||
To bind to a Unix domain socket, specify an absolute path. For a
|
To bind to a Unix domain socket, specify an absolute path. For a
|
||||||
system-wide MPD, we suggest the path "\fB/var/run/mpd/socket\fP".
|
system-wide MPD, we suggest the path "\fB/var/run/mpd/socket\fP".
|
||||||
.TP
|
.TP
|
||||||
|
@ -380,24 +380,11 @@ server_socket_add_host(struct server_socket *ss, const char *hostname,
|
|||||||
unsigned port, GError **error_r)
|
unsigned port, GError **error_r)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_TCP
|
#ifdef HAVE_TCP
|
||||||
struct addrinfo hints;
|
struct addrinfo *ai = resolve_host_port(hostname, port,
|
||||||
memset(&hints, 0, sizeof(hints));
|
AI_PASSIVE, SOCK_STREAM,
|
||||||
hints.ai_flags = AI_PASSIVE;
|
error_r);
|
||||||
hints.ai_family = PF_UNSPEC;
|
if (ai == NULL)
|
||||||
hints.ai_socktype = SOCK_STREAM;
|
|
||||||
hints.ai_protocol = IPPROTO_TCP;
|
|
||||||
|
|
||||||
char service[20];
|
|
||||||
g_snprintf(service, sizeof(service), "%u", port);
|
|
||||||
|
|
||||||
struct addrinfo *ai;
|
|
||||||
int ret = getaddrinfo(hostname, service, &hints, &ai);
|
|
||||||
if (ret != 0) {
|
|
||||||
g_set_error(error_r, server_socket_quark(), ret,
|
|
||||||
"Failed to look up host \"%s\": %s",
|
|
||||||
hostname, gai_strerror(ret));
|
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
|
|
||||||
for (const struct addrinfo *i = ai; i != NULL; i = i->ai_next)
|
for (const struct addrinfo *i = ai; i != NULL; i = i->ai_next)
|
||||||
server_socket_add_address(ss, i->ai_addr, i->ai_addrlen);
|
server_socket_add_address(ss, i->ai_addr, i->ai_addrlen);
|
||||||
|
Loading…
Reference in New Issue
Block a user