From 442af0205ef0929a22433201ce28c715fcdae1ff Mon Sep 17 00:00:00 2001 From: Unbewohnte Date: Sun, 7 Nov 2021 12:10:32 +0300 Subject: [PATCH] [node] clearer sendPiece error handling in sender node --- src/node/node.go | 56 +++++++++++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/src/node/node.go b/src/node/node.go index 340790e..cf666bb 100644 --- a/src/node/node.go +++ b/src/node/node.go @@ -223,42 +223,44 @@ func (node *Node) Start() { // and wait for it to be ready again if node.State.AllowedToTransfer && node.TransferInfo.Ready { err = sendPiece(file, node.Net.Conn, node.Net.EncryptionKey) - if err != nil { - if err == ErrorSentAll { - // the file has been sent fully - fileIDBuff := new(bytes.Buffer) - err = binary.Write(fileIDBuff, binary.BigEndian, file.ID) + switch err { + case ErrorSentAll: + // the file has been sent fully + fileIDBuff := new(bytes.Buffer) + err = binary.Write(fileIDBuff, binary.BigEndian, file.ID) + if err != nil { + panic(err) + } + + endFilePacket := protocol.Packet{ + Header: protocol.HeaderEndfile, + Body: fileIDBuff.Bytes(), + } + + if node.Net.EncryptionKey != nil { + err = endFilePacket.EncryptBody(node.Net.EncryptionKey) if err != nil { panic(err) } + } - endFilePacket := protocol.Packet{ - Header: protocol.HeaderEndfile, - Body: fileIDBuff.Bytes(), - } + protocol.SendPacket(node.Net.Conn, endFilePacket) - if node.Net.EncryptionKey != nil { - err = endFilePacket.EncryptBody(node.Net.EncryptionKey) - if err != nil { - panic(err) - } - } + // because there`s still no handling for directories - send + // done packet + protocol.SendPacket(node.Net.Conn, protocol.Packet{ + Header: protocol.HeaderDone, + }) - protocol.SendPacket(node.Net.Conn, endFilePacket) + node.State.Stopped = true - // because there`s still no handling for directories - send - // done packet - protocol.SendPacket(node.Net.Conn, protocol.Packet{ - Header: protocol.HeaderDone, - }) + case nil: - node.State.Stopped = true - } else { - node.State.Stopped = true + default: + node.State.Stopped = true - fmt.Printf("An error occured when sending a piece of \"%s\": %s\n", file.Name, err) - panic(err) - } + fmt.Printf("An error occured while sending a piece of \"%s\": %s\n", file.Name, err) + panic(err) } node.TransferInfo.Ready = false