diff --git a/handle_misc.go b/handle_misc.go index a34e533c..e7cd8d04 100644 --- a/handle_misc.go +++ b/handle_misc.go @@ -257,6 +257,7 @@ func (c *clientHandler) handleFEAT(param string) error { } func (c *clientHandler) handleTYPE(param string) error { + param = strings.ReplaceAll(strings.ToUpper(param), " ", "") switch param { case "I", "L8": c.currentTransferType = TransferTypeBinary diff --git a/handle_misc_test.go b/handle_misc_test.go index 2a590c08..d69e3c5d 100644 --- a/handle_misc_test.go +++ b/handle_misc_test.go @@ -297,6 +297,22 @@ func TestTYPE(t *testing.T) { require.NoError(t, err) require.Equal(t, StatusOK, rc) + rc, _, err = raw.SendCommand("TYPE i") + require.NoError(t, err) + require.Equal(t, StatusOK, rc) + + rc, _, err = raw.SendCommand("TYPE a") + require.NoError(t, err) + require.Equal(t, StatusOK, rc) + + rc, _, err = raw.SendCommand("TYPE l 8") + require.NoError(t, err) + require.Equal(t, StatusOK, rc) + + rc, _, err = raw.SendCommand("TYPE l 7") + require.NoError(t, err) + require.Equal(t, StatusOK, rc) + rc, _, err = raw.SendCommand("TYPE wrong") require.NoError(t, err) require.Equal(t, StatusNotImplementedParam, rc)