diff --git a/packer/rpc/muxconn.go b/packer/rpc/muxconn.go index 434ebdea8..db8faabf6 100644 --- a/packer/rpc/muxconn.go +++ b/packer/rpc/muxconn.go @@ -402,10 +402,13 @@ func (m *MuxConn) loop() { case streamStateFinWait2: fallthrough case streamStateEstablished: - select { - case stream.writeCh <- data: - default: - panic(fmt.Sprintf("Failed to write data, buffer full for stream %d", id)) + if len(data) > 0 { + select { + case stream.writeCh <- data: + default: + panic(fmt.Sprintf( + "Failed to write data, buffer full for stream %d", id)) + } } default: log.Printf("[ERR] Data received for stream in state: %d", stream.state) @@ -469,7 +472,7 @@ const ( func newStream(from muxPacketFrom, id uint32, m *MuxConn) *Stream { // Create the stream object and channel where data will be sent to dataR, dataW := io.Pipe() - writeCh := make(chan []byte, 256) + writeCh := make(chan []byte, 4096) // Set the data channel so we can write to it. stream := &Stream{