mirror of
https://github.com/librespot-org/librespot.git
synced 2024-12-18 17:11:53 +00:00
Exposing service to both IPv4 and IPv6, addressing remaining issues from # (#1366)
* create dual stack socket on non-windows systems only --------- Co-authored-by: Anders Ballegaard <giithub@anderstb.dk>
This commit is contained in:
parent
353c696554
commit
0ddb3b4cb6
2 changed files with 8 additions and 2 deletions
|
@ -59,6 +59,7 @@ https://github.com/librespot-org/librespot
|
||||||
- [core] `Credentials.username` is now an `Option` (breaking)
|
- [core] `Credentials.username` is now an `Option` (breaking)
|
||||||
- [core] `Session::connect` tries multiple access points, retrying each one.
|
- [core] `Session::connect` tries multiple access points, retrying each one.
|
||||||
- [core] Each access point connection now timesout after 3 seconds.
|
- [core] Each access point connection now timesout after 3 seconds.
|
||||||
|
- [core] Listen on both IPV4 and IPV6 on non-windows hosts
|
||||||
- [main] `autoplay {on|off}` now acts as an override. If unspecified, `librespot`
|
- [main] `autoplay {on|off}` now acts as an override. If unspecified, `librespot`
|
||||||
now follows the setting in the Connect client that controls it. (breaking)
|
now follows the setting in the Connect client that controls it. (breaking)
|
||||||
- [metadata] Most metadata is now retrieved with the `spclient` (breaking)
|
- [metadata] Most metadata is now retrieved with the `spclient` (breaking)
|
||||||
|
|
|
@ -2,7 +2,7 @@ use std::{
|
||||||
borrow::Cow,
|
borrow::Cow,
|
||||||
collections::BTreeMap,
|
collections::BTreeMap,
|
||||||
convert::Infallible,
|
convert::Infallible,
|
||||||
net::{Ipv4Addr, SocketAddr, TcpListener},
|
net::{Ipv4Addr, Ipv6Addr, SocketAddr, TcpListener},
|
||||||
pin::Pin,
|
pin::Pin,
|
||||||
sync::{Arc, Mutex},
|
sync::{Arc, Mutex},
|
||||||
task::{Context, Poll},
|
task::{Context, Poll},
|
||||||
|
@ -266,7 +266,12 @@ pub struct DiscoveryServer {
|
||||||
impl DiscoveryServer {
|
impl DiscoveryServer {
|
||||||
pub fn new(config: Config, port: &mut u16) -> Result<Self, Error> {
|
pub fn new(config: Config, port: &mut u16) -> Result<Self, Error> {
|
||||||
let (discovery, cred_rx) = RequestHandler::new(config);
|
let (discovery, cred_rx) = RequestHandler::new(config);
|
||||||
let address = SocketAddr::new(Ipv4Addr::UNSPECIFIED.into(), *port);
|
let address = if cfg!(windows) {
|
||||||
|
SocketAddr::new(Ipv4Addr::UNSPECIFIED.into(), *port)
|
||||||
|
} else {
|
||||||
|
// this creates a dual stack socket on non-windows systems
|
||||||
|
SocketAddr::new(Ipv6Addr::UNSPECIFIED.into(), *port)
|
||||||
|
};
|
||||||
|
|
||||||
let (close_tx, close_rx) = oneshot::channel();
|
let (close_tx, close_rx) = oneshot::channel();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue