Fix invalid torrent names to use from_utf8_lossy #316
This commit is contained in:
parent
acf67b2439
commit
1409dffb8f
2 changed files with 13 additions and 8 deletions
|
|
@ -566,9 +566,13 @@ fn make_torrent_details(
|
||||||
Ok(TorrentDetailsResponse {
|
Ok(TorrentDetailsResponse {
|
||||||
id,
|
id,
|
||||||
info_hash: info_hash.as_string(),
|
info_hash: info_hash.as_string(),
|
||||||
name: name
|
name: name.map(|s| s.to_owned()).or_else(|| {
|
||||||
.map(|s| s.to_owned())
|
info.and_then(|i| {
|
||||||
.or_else(|| info.and_then(|i| i.name.as_ref().map(|b| b.to_string()))),
|
i.name
|
||||||
|
.as_ref()
|
||||||
|
.map(|b| String::from_utf8_lossy(b.as_ref()).into())
|
||||||
|
})
|
||||||
|
}),
|
||||||
files: Some(files),
|
files: Some(files),
|
||||||
output_folder,
|
output_folder,
|
||||||
stats: None,
|
stats: None,
|
||||||
|
|
|
||||||
|
|
@ -1006,11 +1006,12 @@ impl Session {
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(name) = &info.name {
|
if let Some(name) = &info.name {
|
||||||
let s =
|
let s = String::from_utf8_lossy(name.as_slice());
|
||||||
std::str::from_utf8(name.as_slice()).context("invalid UTF-8 in torrent name")?;
|
if !s.is_empty() {
|
||||||
let pb = PathBuf::from(s);
|
let pb = PathBuf::from(s.as_ref());
|
||||||
check_valid(&pb)?;
|
check_valid(&pb)?;
|
||||||
return Ok(Some(pb));
|
return Ok(Some(pb));
|
||||||
|
}
|
||||||
};
|
};
|
||||||
if let Some(name) = magnet_name {
|
if let Some(name) = magnet_name {
|
||||||
let pb = PathBuf::from(name);
|
let pb = PathBuf::from(name);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue