diff --git a/main.go b/main.go index 1da84a07..9e1b4374 100644 --- a/main.go +++ b/main.go @@ -35,7 +35,7 @@ func main() { // PathToFile: "../wskeystore/README.md", // PathToFile: "./src/croc/croc.go", // PathToFiles: []string{"C:\\Users\\zacks\\go\\src\\github.com\\schollz\\croc\\src\\croc\\croc.go", "croc.exe"}, - PathToFiles: []string{"croc3.exe", "croc2.exe"}, + PathToFiles: []string{"croc2.exe", "croc3.exe"}, KeepPathInRemote: false, }) } else { diff --git a/src/croc/croc.go b/src/croc/croc.go index fddde50a..d3b61ba3 100644 --- a/src/croc/croc.go +++ b/src/croc/croc.go @@ -446,6 +446,9 @@ func (c *Client) updateState() (err error) { } fileHash, errHash := utils.HashFile(path.Join(fileInfo.FolderRemote, fileInfo.Name)) if errHash != nil || !bytes.Equal(fileHash, fileInfo.Hash) { + if !bytes.Equal(fileHash, fileInfo.Hash) { + log.Debugf("hashes are not equal %x != %x", fileHash, fileInfo.Hash) + } finished = false c.FilesToTransferCurrentNum = i break diff --git a/src/webrtc/pkg/session/receiver/receiver.go b/src/webrtc/pkg/session/receiver/receiver.go index 40ec97b7..6adc59d6 100644 --- a/src/webrtc/pkg/session/receiver/receiver.go +++ b/src/webrtc/pkg/session/receiver/receiver.go @@ -1,6 +1,7 @@ package receiver import ( + "encoding/binary" "fmt" "io" "os" @@ -138,6 +139,12 @@ func (s *Session) receiveData(pathToFile string, fileSize int64) error { return err } } + } else { + os.Create(pathToFile) + err := os.Truncate(pathToFile, fileSize) + if err != nil { + return err + } } f, err := os.OpenFile(pathToFile, os.O_RDWR|os.O_CREATE, 0755) @@ -160,7 +167,8 @@ func (s *Session) receiveData(pathToFile string, fileSize int64) error { fmt.Printf("\nNetwork: %s\n", s.sess.NetworkStats.String()) return nil case msg := <-s.msgChannel: - n, err := f.Write(msg.Data) + pos := int64(binary.LittleEndian.Uint64(msg.Data[:8])) + n, err := f.WriteAt(msg.Data[8:], pos) if err != nil { return err } else { diff --git a/src/webrtc/pkg/session/sender/sender.go b/src/webrtc/pkg/session/sender/sender.go index d1e401f0..9a9bbda4 100644 --- a/src/webrtc/pkg/session/sender/sender.go +++ b/src/webrtc/pkg/session/sender/sender.go @@ -1,6 +1,7 @@ package sender import ( + "encoding/binary" "fmt" "io" "os" @@ -18,7 +19,7 @@ import ( const ( // Must be <= 16384 - senderBuffSize = 16384 + senderBuffSize = 16376 bufferThreshold = 512 * 1024 // 512kB ) @@ -188,7 +189,7 @@ func (s *Session) readFile(pathToFile string) error { log.Debugf("Stopped reading data...") close(s.output) }() - + pos := uint64(0) for { // Read file s.dataBuff = s.dataBuff[:cap(s.dataBuff)] @@ -204,12 +205,15 @@ func (s *Session) readFile(pathToFile string) error { } s.dataBuff = s.dataBuff[:n] s.readingStats.AddBytes(uint64(n)) - + posByte := make([]byte, 8) + binary.LittleEndian.PutUint64(posByte, pos) + buff := append([]byte(nil), posByte...) s.output <- outputMsg{ n: n, // Make a copy of the buffer - buff: append([]byte(nil), s.dataBuff...), + buff: append(buff, s.dataBuff...), } + pos += uint64(n) } return nil }