diff --git a/pkg/port/iscsit/conn.go b/pkg/port/iscsit/conn.go index 59efd6b..d74fd5e 100644 --- a/pkg/port/iscsit/conn.go +++ b/pkg/port/iscsit/conn.go @@ -24,7 +24,6 @@ import ( "github.com/gostor/gotgt/pkg/api" "github.com/gostor/gotgt/pkg/util" - "github.com/gostor/gotgt/pkg/util/pool" ) const ( @@ -126,13 +125,12 @@ func (c *iscsiConnection) init() { sort.Sort(c.loginParam.sessionParam) } -func (c *iscsiConnection) readData(size int) ([]byte, int, error) { - var buf = pool.NewBuffer(size) +func (c *iscsiConnection) readData(buf []byte) (int, error) { length, err := io.ReadFull(c.conn, buf) if err != nil { - return nil, -1, err + return -1, err } - return buf, length, nil + return length, nil } func (c *iscsiConnection) write(resp []byte) (int, error) { diff --git a/pkg/port/iscsit/iscsid.go b/pkg/port/iscsit/iscsid.go index 02fb338..e551b3d 100644 --- a/pkg/port/iscsit/iscsid.go +++ b/pkg/port/iscsit/iscsid.go @@ -217,7 +217,7 @@ func (s *ISCSITargetDriver) rxHandler(conn *iscsiConnection) { switch conn.rxIOState { case IOSTATE_RX_BHS: log.Debug("rx handler: IOSTATE_RX_BHS") - buf, length, err = conn.readData(BHS_SIZE) + length, err = conn.readData(buf) if err != nil { log.Error(err) return @@ -227,7 +227,6 @@ func (s *ISCSITargetDriver) rxHandler(conn *iscsiConnection) { conn.state = CONN_STATE_CLOSE return } - //conn.rxBuffer = buf cmd, err = parseHeader(buf) if err != nil { log.Error(err) @@ -262,12 +261,11 @@ func (s *ISCSITargetDriver) rxHandler(conn *iscsiConnection) { cmd.RawData = pool.NewBuffer(dl) length := 0 for length < dl { - b, l, err := conn.readData(dl - length) + l, err := conn.readData(cmd.RawData[length:]) if err != nil { log.Error(err) return } - copy(cmd.RawData[length:], b) length += l } if length != dl {