diff options
-rw-r--r-- | soundbox/streaming.go | 27 | ||||
-rw-r--r-- | soundbox/url.go | 2 |
2 files changed, 9 insertions, 20 deletions
diff --git a/soundbox/streaming.go b/soundbox/streaming.go index 2686f47..1a2d89e 100644 --- a/soundbox/streaming.go +++ b/soundbox/streaming.go @@ -2,7 +2,6 @@ package soundbox import ( "context" - "errors" "io" "net" "time" @@ -27,24 +26,14 @@ func streamContext(ctx context.Context, r io.Reader, targets []net.HardwareAddr) } }() - for { - buffer := make([]byte, bufferSize) - i, readErr := r.Read(buffer) - for _, conn := range conns { - conn.SetDeadline(time.Now().Add(writeTimeout)) - _, writeErr := conn.Write(buffer[:i]) - if writeErr != nil { - return writeErr - } - } - if readErr != nil { - if errors.Is(readErr, io.EOF) { - break - } else { - return readErr - } - } + writers := make([]io.Writer, 0) + for _, conn := range conns { + writers = append(writers, conn) } - return nil + mw := io.MultiWriter(writers...) + + _, err := io.Copy(mw, r) + + return err } diff --git a/soundbox/url.go b/soundbox/url.go index 6fed442..b24b05d 100644 --- a/soundbox/url.go +++ b/soundbox/url.go @@ -33,7 +33,7 @@ func StreamURLContext(ctx context.Context, url string, targets []net.HardwareAdd return err } - streamContext(ctx, stdout, targets) + _ = streamContext(ctx, stdout, targets) return cmd.Wait() } |