transfer fixes
This commit is contained in:
parent
052b5206f4
commit
a539572e0a
@ -158,7 +158,7 @@ class p2p {
|
|||||||
|
|
||||||
if(fs.lstatSync(filePath).isDirectory())
|
if(fs.lstatSync(filePath).isDirectory())
|
||||||
{
|
{
|
||||||
const filesList = directoryFilesRecursive(filePath).map(file => ph.relative(this.dataDirectory, file))
|
const filesList = directoryFilesRecursive(filePath).map(file => ph.relative(this.dataDirectory, file).replace(/\\/g, '/'))
|
||||||
callback({filesList})
|
callback({filesList})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -423,10 +423,13 @@ class p2p {
|
|||||||
logT('transfer', 'get file request', path)
|
logT('transfer', 'get file request', path)
|
||||||
return new Promise(async (resolve) =>
|
return new Promise(async (resolve) =>
|
||||||
{
|
{
|
||||||
const filePath = this.dataDirectory + '/' + (targetPath || ph.basename(path))
|
const filePath = this.dataDirectory + '/' + (targetPath || path)
|
||||||
// recreate directory to file if not exist
|
// recreate directory to file if not exist
|
||||||
await mkdirp(ph.dirname(filePath))
|
await mkdirp(ph.dirname(filePath))
|
||||||
const fileStream = fs.createWriteStream(filePath)
|
let fileStream
|
||||||
|
if(!fs.existsSync(filePath) || !fs.lstatSync(filePath).isDirectory())
|
||||||
|
fileStream = fs.createWriteStream(filePath)
|
||||||
|
|
||||||
let peer = null
|
let peer = null
|
||||||
let firstTransfer = false
|
let firstTransfer = false
|
||||||
let deleteCallback = (remotePeer || this).emit('file', {path}, (chunk, nil, addr) => {
|
let deleteCallback = (remotePeer || this).emit('file', {path}, (chunk, nil, addr) => {
|
||||||
@ -440,7 +443,8 @@ class p2p {
|
|||||||
{
|
{
|
||||||
logT('transfer', 'closing transfering file stream', path)
|
logT('transfer', 'closing transfering file stream', path)
|
||||||
deleteCallback()
|
deleteCallback()
|
||||||
fileStream.end()
|
if(fileStream)
|
||||||
|
fileStream.end()
|
||||||
if(firstTransfer) // данные передало до этого, значит файл целый
|
if(firstTransfer) // данные передало до этого, значит файл целый
|
||||||
{
|
{
|
||||||
resolve(true)
|
resolve(true)
|
||||||
@ -454,11 +458,28 @@ class p2p {
|
|||||||
{
|
{
|
||||||
logT('transfer', 'get folder content', filesList)
|
logT('transfer', 'get folder content', filesList)
|
||||||
deleteCallback()
|
deleteCallback()
|
||||||
fileStream.end()
|
const transferFiles = () => {
|
||||||
Promise.all(filesList.map(file => this.file(file, null, addr))).then(() => {
|
Promise.all(filesList.map(file => this.file(file, null, addr))).then(() => {
|
||||||
logT('transfer', 'finish transfer all files from folder')
|
logT('transfer', 'finish transfer all files from folder')
|
||||||
resolve()
|
resolve()
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
if(fileStream)
|
||||||
|
fileStream.end(null, null, () => {
|
||||||
|
fs.unlinkSync(filePath)
|
||||||
|
transferFiles()
|
||||||
|
})
|
||||||
|
else
|
||||||
|
transferFiles()
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!fileStream)
|
||||||
|
{
|
||||||
|
logTE('transfer', 'error on file transfer', path, 'cant create description')
|
||||||
|
deleteCallback()
|
||||||
|
resolve(false)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user