mirror of
https://github.com/edgelesssys/constellation.git
synced 2025-02-08 19:08:40 -05:00
debugd: keep mutex locked while receiving files (#1070)
This commit is contained in:
parent
a85ba96ac4
commit
8c57995468
@ -68,6 +68,8 @@ func (s *FileTransferer) SendFiles(stream SendFilesStream) error {
|
|||||||
|
|
||||||
// RecvFiles receives files from the given stream.
|
// RecvFiles receives files from the given stream.
|
||||||
func (s *FileTransferer) RecvFiles(stream RecvFilesStream) (err error) {
|
func (s *FileTransferer) RecvFiles(stream RecvFilesStream) (err error) {
|
||||||
|
s.mux.Lock()
|
||||||
|
defer s.mux.Unlock()
|
||||||
if err := s.startRecv(); err != nil {
|
if err := s.startRecv(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -170,8 +172,6 @@ func (s *FileTransferer) handleFileRecv(stream RecvFilesStream) (bool, error) {
|
|||||||
|
|
||||||
// startRecv marks the file receive as started. It returns an error if receiving has already started.
|
// startRecv marks the file receive as started. It returns an error if receiving has already started.
|
||||||
func (s *FileTransferer) startRecv() error {
|
func (s *FileTransferer) startRecv() error {
|
||||||
s.mux.Lock()
|
|
||||||
defer s.mux.Unlock()
|
|
||||||
switch {
|
switch {
|
||||||
case s.receiveFinished:
|
case s.receiveFinished:
|
||||||
return ErrReceiveFinished
|
return ErrReceiveFinished
|
||||||
@ -185,8 +185,6 @@ func (s *FileTransferer) startRecv() error {
|
|||||||
// abortRecv marks the file receive as failed.
|
// abortRecv marks the file receive as failed.
|
||||||
// This allows for a retry of the file receive.
|
// This allows for a retry of the file receive.
|
||||||
func (s *FileTransferer) abortRecv() {
|
func (s *FileTransferer) abortRecv() {
|
||||||
s.mux.Lock()
|
|
||||||
defer s.mux.Unlock()
|
|
||||||
s.receiveStarted = false
|
s.receiveStarted = false
|
||||||
s.files = nil
|
s.files = nil
|
||||||
}
|
}
|
||||||
@ -194,16 +192,12 @@ func (s *FileTransferer) abortRecv() {
|
|||||||
// finishRecv marks the file receive as completed.
|
// finishRecv marks the file receive as completed.
|
||||||
// This allows other debugd instances to request files from this server.
|
// This allows other debugd instances to request files from this server.
|
||||||
func (s *FileTransferer) finishRecv() {
|
func (s *FileTransferer) finishRecv() {
|
||||||
s.mux.Lock()
|
|
||||||
defer s.mux.Unlock()
|
|
||||||
s.receiveStarted = false
|
s.receiveStarted = false
|
||||||
s.receiveFinished = true
|
s.receiveFinished = true
|
||||||
}
|
}
|
||||||
|
|
||||||
// addFile adds a file to the list of received files.
|
// addFile adds a file to the list of received files.
|
||||||
func (s *FileTransferer) addFile(file FileStat) {
|
func (s *FileTransferer) addFile(file FileStat) {
|
||||||
s.mux.Lock()
|
|
||||||
defer s.mux.Unlock()
|
|
||||||
s.files = append(s.files, file)
|
s.files = append(s.files, file)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -364,20 +364,15 @@ func TestConcurrency(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type stubStreamReadWriter struct {
|
type stubStreamReadWriter struct {
|
||||||
readStreamFilename string
|
readStreamErr error
|
||||||
readStreamErr error
|
writeStreamErr error
|
||||||
|
|
||||||
writeStreamFilename string
|
|
||||||
writeStreamErr error
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *stubStreamReadWriter) ReadStream(filename string, _ streamer.WriteChunkStream, _ uint, _ bool) error {
|
func (s *stubStreamReadWriter) ReadStream(filename string, _ streamer.WriteChunkStream, _ uint, _ bool) error {
|
||||||
s.readStreamFilename = filename
|
|
||||||
return s.readStreamErr
|
return s.readStreamErr
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *stubStreamReadWriter) WriteStream(filename string, _ streamer.ReadChunkStream, _ bool) error {
|
func (s *stubStreamReadWriter) WriteStream(filename string, _ streamer.ReadChunkStream, _ bool) error {
|
||||||
s.writeStreamFilename = filename
|
|
||||||
return s.writeStreamErr
|
return s.writeStreamErr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user