mirror of
https://github.com/librespot-org/librespot.git
synced 2024-12-18 17:11:53 +00:00
Avoid crashing when Avahi is not available
When librespot is built with Avahi turned on, it will crash if Avahi is later not available at runtime. This change avoids it crashing hard when Avahi is not available; librespot will merely warn of the issue. This affects some distribution packages too, where the maintainer might prefer leaving Avahi support enabled, but many setups don't (or can't) run Avahi. Co-authored-by: Nick Steel <nick@nsteel.co.uk>
This commit is contained in:
parent
7efc62b9ca
commit
c4af90f5fe
3 changed files with 11 additions and 10 deletions
|
@ -35,6 +35,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
- [playback] Adhere to ReplayGain spec when calculating gain normalisation factor.
|
- [playback] Adhere to ReplayGain spec when calculating gain normalisation factor.
|
||||||
- [playback] `alsa`: Use `--volume-range` overrides for softvol controls
|
- [playback] `alsa`: Use `--volume-range` overrides for softvol controls
|
||||||
- [connect] Don't panic when activating shuffle without previous interaction.
|
- [connect] Don't panic when activating shuffle without previous interaction.
|
||||||
|
- [main] Fix crash when built with Avahi support but Avahi is locally unavailable.
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
- [playback] `alsamixer`: previously deprecated option `mixer-card` has been removed.
|
- [playback] `alsamixer`: previously deprecated option `mixer-card` has been removed.
|
||||||
|
|
|
@ -111,8 +111,7 @@ impl Builder {
|
||||||
None,
|
None,
|
||||||
port,
|
port,
|
||||||
&["VERSION=1.0", "CPath=/"],
|
&["VERSION=1.0", "CPath=/"],
|
||||||
)
|
).map_err(|e| Error::DnsSdError(io::Error::new(io::ErrorKind::Unsupported, e)))?;
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
let responder = libmdns::Responder::spawn(&tokio::runtime::Handle::current())?;
|
let responder = libmdns::Responder::spawn(&tokio::runtime::Handle::current())?;
|
||||||
|
|
17
src/main.rs
17
src/main.rs
|
@ -1581,19 +1581,15 @@ async fn main() {
|
||||||
|
|
||||||
if setup.enable_discovery {
|
if setup.enable_discovery {
|
||||||
let device_id = setup.session_config.device_id.clone();
|
let device_id = setup.session_config.device_id.clone();
|
||||||
|
match librespot::discovery::Discovery::builder(device_id)
|
||||||
discovery = match librespot::discovery::Discovery::builder(device_id)
|
|
||||||
.name(setup.connect_config.name.clone())
|
.name(setup.connect_config.name.clone())
|
||||||
.device_type(setup.connect_config.device_type)
|
.device_type(setup.connect_config.device_type)
|
||||||
.port(setup.zeroconf_port)
|
.port(setup.zeroconf_port)
|
||||||
.launch()
|
.launch()
|
||||||
{
|
{
|
||||||
Ok(d) => Some(d),
|
Ok(d) => discovery = Some(d),
|
||||||
Err(e) => {
|
Err(err) => warn!("Could not initialise discovery: {}.", err),
|
||||||
error!("Discovery Error: {}", e);
|
};
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(credentials) = setup.credentials {
|
if let Some(credentials) = setup.credentials {
|
||||||
|
@ -1606,6 +1602,11 @@ async fn main() {
|
||||||
)
|
)
|
||||||
.fuse(),
|
.fuse(),
|
||||||
);
|
);
|
||||||
|
} else if discovery.is_none() {
|
||||||
|
error!(
|
||||||
|
"Discovery is unavailable and no credentials provided. Authentication is not possible."
|
||||||
|
);
|
||||||
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
|
|
Loading…
Reference in a new issue