Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
client
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Terraform modules
Analyze
Contributor analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
elixxir
client
Commits
b912519f
Commit
b912519f
authored
2 years ago
by
Jono Wenger
Browse files
Options
Downloads
Patches
Plain Diff
add debug logs
parent
0cea60fa
No related branches found
No related tags found
1 merge request
!430
XX-4277 / Fix file transfer crashes
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
bindings/fileTransfer.go
+8
-6
8 additions, 6 deletions
bindings/fileTransfer.go
fileTransfer/e2e/wrapper.go
+8
-0
8 additions, 0 deletions
fileTransfer/e2e/wrapper.go
fileTransfer/manager.go
+14
-0
14 additions, 0 deletions
fileTransfer/manager.go
with
30 additions
and
6 deletions
bindings/fileTransfer.go
+
8
−
6
View file @
b912519f
...
@@ -172,13 +172,11 @@ func InitFileTransfer(e2eID int, receiveFileCallback ReceiveFileCallback,
...
@@ -172,13 +172,11 @@ func InitFileTransfer(e2eID int, receiveFileCallback ReceiveFileCallback,
return
nil
,
err
return
nil
,
err
}
}
jww
.
INFO
.
Printf
(
"[FT] Before AddService"
)
// Add file transfer processes to API services tracking
// Add file transfer processes to API services tracking
err
=
user
.
api
.
AddService
(
m
.
StartProcesses
)
err
=
user
.
api
.
AddService
(
m
.
StartProcesses
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
jww
.
INFO
.
Printf
(
"[FT] After AddService"
)
// Return wrapped manager
// Return wrapped manager
return
&
FileTransfer
{
w
:
w
},
nil
return
&
FileTransfer
{
w
:
w
},
nil
...
@@ -211,6 +209,7 @@ func (f *FileTransfer) Send(payload, recipientID []byte, retry float32,
...
@@ -211,6 +209,7 @@ func (f *FileTransfer) Send(payload, recipientID []byte, retry float32,
p
:=
time
.
Millisecond
*
time
.
Duration
(
period
)
p
:=
time
.
Millisecond
*
time
.
Duration
(
period
)
jww
.
INFO
.
Printf
(
"** FileTransfer.Send before building CB"
)
// Wrap transfer progress callback to be passed to fileTransfer layer
// Wrap transfer progress callback to be passed to fileTransfer layer
cb
:=
func
(
completed
bool
,
arrived
,
total
uint16
,
cb
:=
func
(
completed
bool
,
arrived
,
total
uint16
,
st
fileTransfer
.
SentTransfer
,
t
fileTransfer
.
FilePartTracker
,
err
error
)
{
st
fileTransfer
.
SentTransfer
,
t
fileTransfer
.
FilePartTracker
,
err
error
)
{
...
@@ -229,19 +228,22 @@ func (f *FileTransfer) Send(payload, recipientID []byte, retry float32,
...
@@ -229,19 +228,22 @@ func (f *FileTransfer) Send(payload, recipientID []byte, retry float32,
}
}
// Unmarshal payload
// Unmarshal payload
fs
:=
&
FileSend
{}
jww
.
INFO
.
Printf
(
"** FileTransfer.Send before unmarshal
FileSend
"
)
err
=
json
.
Unmarshal
(
payload
,
fs
)
var
fs
FileSend
if
err
!=
nil
{
if
err
=
json
.
Unmarshal
(
payload
,
&
fs
);
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
// Send file
// Send file
ftID
,
err
:=
f
.
w
.
Send
(
recipient
,
fs
.
Name
,
fs
.
Type
,
fs
.
Contents
,
retry
,
fs
.
Preview
,
cb
,
p
)
jww
.
INFO
.
Printf
(
"** FileTransfer.Send before send"
)
ftID
,
err
:=
f
.
w
.
Send
(
recipient
,
fs
.
Name
,
fs
.
Type
,
fs
.
Contents
,
retry
,
fs
.
Preview
,
cb
,
p
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
// Return Transfer ID
// Return Transfer ID
jww
.
INFO
.
Printf
(
"** FileTransfer.Send before return"
)
return
ftID
.
Bytes
(),
nil
return
ftID
.
Bytes
(),
nil
}
}
...
...
This diff is collapsed.
Click to expand it.
fileTransfer/e2e/wrapper.go
+
8
−
0
View file @
b912519f
...
@@ -8,6 +8,7 @@
...
@@ -8,6 +8,7 @@
package
e2e
package
e2e
import
(
import
(
jww
"github.com/spf13/jwalterweatherman"
"gitlab.com/elixxir/client/catalog"
"gitlab.com/elixxir/client/catalog"
"gitlab.com/elixxir/client/e2e"
"gitlab.com/elixxir/client/e2e"
"gitlab.com/elixxir/client/e2e/receive"
"gitlab.com/elixxir/client/e2e/receive"
...
@@ -90,12 +91,15 @@ func (w *Wrapper) Send(recipient *id.ID, fileName, fileType string,
...
@@ -90,12 +91,15 @@ func (w *Wrapper) Send(recipient *id.ID, fileName, fileType string,
progressCB
ft
.
SentProgressCallback
,
period
time
.
Duration
)
(
progressCB
ft
.
SentProgressCallback
,
period
time
.
Duration
)
(
*
ftCrypto
.
TransferID
,
error
)
{
*
ftCrypto
.
TransferID
,
error
)
{
jww
.
INFO
.
Printf
(
"** Wrapper.Send before SendNew creation"
)
sendNew
:=
func
(
transferInfo
[]
byte
)
error
{
sendNew
:=
func
(
transferInfo
[]
byte
)
error
{
return
sendNewFileTransferMessage
(
recipient
,
transferInfo
,
w
.
e2e
)
return
sendNewFileTransferMessage
(
recipient
,
transferInfo
,
w
.
e2e
)
}
}
jww
.
INFO
.
Printf
(
"** Wrapper.Send before addEndMessageToCallback"
)
modifiedProgressCB
:=
w
.
addEndMessageToCallback
(
progressCB
)
modifiedProgressCB
:=
w
.
addEndMessageToCallback
(
progressCB
)
jww
.
INFO
.
Printf
(
"** Wrapper.Send before send"
)
return
w
.
ft
.
Send
(
recipient
,
fileName
,
fileType
,
fileData
,
retry
,
preview
,
return
w
.
ft
.
Send
(
recipient
,
fileName
,
fileType
,
fileData
,
retry
,
preview
,
modifiedProgressCB
,
period
,
sendNew
)
modifiedProgressCB
,
period
,
sendNew
)
}
}
...
@@ -115,9 +119,13 @@ func (w *Wrapper) RegisterSentProgressCallback(tid *ftCrypto.TransferID,
...
@@ -115,9 +119,13 @@ func (w *Wrapper) RegisterSentProgressCallback(tid *ftCrypto.TransferID,
// message is not sent.
// message is not sent.
func
(
w
*
Wrapper
)
addEndMessageToCallback
(
func
(
w
*
Wrapper
)
addEndMessageToCallback
(
progressCB
ft
.
SentProgressCallback
)
ft
.
SentProgressCallback
{
progressCB
ft
.
SentProgressCallback
)
ft
.
SentProgressCallback
{
jww
.
INFO
.
Printf
(
"** Wrapper.addEndMessageToCallback before !w.p.NotifyUponCompletion"
)
if
!
w
.
p
.
NotifyUponCompletion
{
if
!
w
.
p
.
NotifyUponCompletion
{
jww
.
INFO
.
Printf
(
"** Wrapper.addEndMessageToCallback after !w.p.NotifyUponCompletion"
)
return
progressCB
return
progressCB
}
}
jww
.
INFO
.
Printf
(
"** Wrapper.addEndMessageToCallback before return"
)
return
func
(
completed
bool
,
arrived
,
total
uint16
,
return
func
(
completed
bool
,
arrived
,
total
uint16
,
st
ft
.
SentTransfer
,
t
ft
.
FilePartTracker
,
err
error
)
{
st
ft
.
SentTransfer
,
t
ft
.
FilePartTracker
,
err
error
)
{
...
...
This diff is collapsed.
Click to expand it.
fileTransfer/manager.go
+
14
−
0
View file @
b912519f
...
@@ -270,6 +270,10 @@ func (m *manager) Send(recipient *id.ID, fileName, fileType string,
...
@@ -270,6 +270,10 @@ func (m *manager) Send(recipient *id.ID, fileName, fileType string,
progressCB
SentProgressCallback
,
period
time
.
Duration
,
sendNew
SendNew
)
(
progressCB
SentProgressCallback
,
period
time
.
Duration
,
sendNew
SendNew
)
(
*
ftCrypto
.
TransferID
,
error
)
{
*
ftCrypto
.
TransferID
,
error
)
{
jww
.
INFO
.
Printf
(
"** Sending file transfer %q to %s. fileType:%s retry:%f preview:%q"
,
fileName
,
recipient
,
fileType
,
retry
,
preview
)
// Return an error if the file name is too long
// Return an error if the file name is too long
if
len
(
fileName
)
>
FileNameMaxLen
{
if
len
(
fileName
)
>
FileNameMaxLen
{
return
nil
,
errors
.
Errorf
(
errFileNameSize
,
len
(
fileName
),
FileNameMaxLen
)
return
nil
,
errors
.
Errorf
(
errFileNameSize
,
len
(
fileName
),
FileNameMaxLen
)
...
@@ -291,17 +295,21 @@ func (m *manager) Send(recipient *id.ID, fileName, fileType string,
...
@@ -291,17 +295,21 @@ func (m *manager) Send(recipient *id.ID, fileName, fileType string,
}
}
// Return an error if the network is not healthy
// Return an error if the network is not healthy
jww
.
INFO
.
Printf
(
"** manager.Send before IsHealthy"
)
if
!
m
.
cmix
.
IsHealthy
()
{
if
!
m
.
cmix
.
IsHealthy
()
{
return
nil
,
errors
.
Errorf
(
errSendNetworkHealth
,
fileName
)
return
nil
,
errors
.
Errorf
(
errSendNetworkHealth
,
fileName
)
}
}
// Generate new transfer key and transfer ID
// Generate new transfer key and transfer ID
jww
.
INFO
.
Printf
(
"** manager.Send before GetStream"
)
rng
:=
m
.
rng
.
GetStream
()
rng
:=
m
.
rng
.
GetStream
()
jww
.
INFO
.
Printf
(
"** manager.Send before NewTransferKey"
)
key
,
err
:=
ftCrypto
.
NewTransferKey
(
rng
)
key
,
err
:=
ftCrypto
.
NewTransferKey
(
rng
)
if
err
!=
nil
{
if
err
!=
nil
{
rng
.
Close
()
rng
.
Close
()
return
nil
,
errors
.
Errorf
(
errNewKey
,
err
)
return
nil
,
errors
.
Errorf
(
errNewKey
,
err
)
}
}
jww
.
INFO
.
Printf
(
"** manager.Send before NewTransferID"
)
tid
,
err
:=
ftCrypto
.
NewTransferID
(
rng
)
tid
,
err
:=
ftCrypto
.
NewTransferID
(
rng
)
if
err
!=
nil
{
if
err
!=
nil
{
rng
.
Close
()
rng
.
Close
()
...
@@ -310,15 +318,18 @@ func (m *manager) Send(recipient *id.ID, fileName, fileType string,
...
@@ -310,15 +318,18 @@ func (m *manager) Send(recipient *id.ID, fileName, fileType string,
rng
.
Close
()
rng
.
Close
()
// Generate transfer MAC
// Generate transfer MAC
jww
.
INFO
.
Printf
(
"** manager.Send before CreateTransferMAC"
)
mac
:=
ftCrypto
.
CreateTransferMAC
(
fileData
,
key
)
mac
:=
ftCrypto
.
CreateTransferMAC
(
fileData
,
key
)
// Get size of each part and partition file into equal length parts
// Get size of each part and partition file into equal length parts
jww
.
INFO
.
Printf
(
"** manager.Send before NewPartMessage"
)
partMessage
:=
fileMessage
.
NewPartMessage
(
m
.
cmix
.
GetMaxMessageLength
())
partMessage
:=
fileMessage
.
NewPartMessage
(
m
.
cmix
.
GetMaxMessageLength
())
parts
:=
partitionFile
(
fileData
,
partMessage
.
GetPartSize
())
parts
:=
partitionFile
(
fileData
,
partMessage
.
GetPartSize
())
numParts
:=
uint16
(
len
(
parts
))
numParts
:=
uint16
(
len
(
parts
))
fileSize
:=
uint32
(
len
(
fileData
))
fileSize
:=
uint32
(
len
(
fileData
))
// Send the initial file transfer message over E2E
// Send the initial file transfer message over E2E
jww
.
INFO
.
Printf
(
"** manager.Send before TransferInfo"
)
info
:=
&
TransferInfo
{
info
:=
&
TransferInfo
{
fileName
,
fileType
,
key
,
mac
,
numParts
,
fileSize
,
retry
,
preview
}
fileName
,
fileType
,
key
,
mac
,
numParts
,
fileSize
,
retry
,
preview
}
transferInfo
,
err
:=
info
.
Marshal
()
transferInfo
,
err
:=
info
.
Marshal
()
...
@@ -334,6 +345,7 @@ func (m *manager) Send(recipient *id.ID, fileName, fileType string,
...
@@ -334,6 +345,7 @@ func (m *manager) Send(recipient *id.ID, fileName, fileType string,
}
}
// Calculate the number of fingerprints to generate
// Calculate the number of fingerprints to generate
jww
.
INFO
.
Printf
(
"** manager.Send before calcNumberOfFingerprints"
)
numFps
:=
calcNumberOfFingerprints
(
len
(
parts
),
retry
)
numFps
:=
calcNumberOfFingerprints
(
len
(
parts
),
retry
)
// Create new sent transfer
// Create new sent transfer
...
@@ -355,9 +367,11 @@ func (m *manager) Send(recipient *id.ID, fileName, fileType string,
...
@@ -355,9 +367,11 @@ func (m *manager) Send(recipient *id.ID, fileName, fileType string,
for
_
,
p
:=
range
st
.
GetUnsentParts
()
{
for
_
,
p
:=
range
st
.
GetUnsentParts
()
{
m
.
batchQueue
<-
p
m
.
batchQueue
<-
p
}
}
jww
.
INFO
.
Printf
(
"** manager.Send before registerSentProgressCallback"
)
// Register the progress callback
// Register the progress callback
m
.
registerSentProgressCallback
(
st
,
progressCB
,
period
)
m
.
registerSentProgressCallback
(
st
,
progressCB
,
period
)
jww
.
INFO
.
Printf
(
"** manager.Send before return"
)
return
&
tid
,
nil
return
&
tid
,
nil
}
}
...
...
This diff is collapsed.
Click to expand it.
Dariusz Rybicki
@darrarski.xx
mentioned in commit
elixxir-dapps-sdk-swift@d3749786
·
2 years ago
mentioned in commit
elixxir-dapps-sdk-swift@d3749786
mentioned in commit elixxir-dapps-sdk-swift@d374978604430993b2d6ac328d2b0097191c933b
Toggle commit list
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment