do not crash the core if the XHave in mesh.json fails to parse

This commit is contained in:
Zlatin Balevsky
2019-10-29 10:28:14 +00:00
parent f69727ab43
commit e5b12701f5

View File

@@ -1,5 +1,6 @@
package com.muwire.core.mesh package com.muwire.core.mesh
import java.util.logging.Level
import java.util.stream.Collectors import java.util.stream.Collectors
import com.muwire.core.Constants import com.muwire.core.Constants
@@ -13,8 +14,10 @@ import com.muwire.core.util.DataUtil
import groovy.json.JsonOutput import groovy.json.JsonOutput
import groovy.json.JsonSlurper import groovy.json.JsonSlurper
import groovy.util.logging.Log
import net.i2p.data.Base64 import net.i2p.data.Base64
@Log
class MeshManager { class MeshManager {
private final Map<InfoHash, Mesh> meshes = Collections.synchronizedMap(new HashMap<>()) private final Map<InfoHash, Mesh> meshes = Collections.synchronizedMap(new HashMap<>())
@@ -99,8 +102,13 @@ class MeshManager {
mesh.sources.add(persona) mesh.sources.add(persona)
} }
if (json.xHave != null) if (json.xHave != null) {
DataUtil.decodeXHave(json.xHave).each { pieces.markDownloaded(it) } try {
DataUtil.decodeXHave(json.xHave).each { pieces.markDownloaded(it) }
} catch (IllegalArgumentException bad) {
log.log(Level.WARNING, "couldn't parse XHave", bad)
}
}
if (!mesh.sources.isEmpty()) if (!mesh.sources.isEmpty())
meshes.put(infoHash, mesh) meshes.put(infoHash, mesh)