migrate int to int32

pull/984/merge
Darien Raymond 2018-04-02 20:00:50 +02:00
parent 4de3f1adc1
commit 08dab81eb2
No known key found for this signature in database
GPG Key ID: 7251FFA14BB18169
30 changed files with 100 additions and 104 deletions

View File

@ -89,7 +89,7 @@ func (r *StreamReader) ReadMultiBuffer() (buf.MultiBuffer, error) {
r.leftOver = int32(size) r.leftOver = int32(size)
} }
mb, err := r.reader.ReadAtMost(int(r.leftOver)) mb, err := r.reader.ReadAtMost(r.leftOver)
r.leftOver -= int32(mb.Len()) r.leftOver -= mb.Len()
return mb, err return mb, err
} }

View File

@ -71,7 +71,7 @@ func (w *Writer) writeData(mb buf.MultiBuffer) error {
return err return err
} }
mb2 := buf.NewMultiBufferCap(len(mb) + 1) mb2 := buf.NewMultiBufferCap(int32(len(mb)) + 1)
mb2.Append(frame) mb2.Append(frame)
mb2.AppendMulti(mb) mb2.AppendMulti(mb)
return w.writer.WriteMultiBuffer(mb2) return w.writer.WriteMultiBuffer(mb2)

View File

@ -56,13 +56,13 @@ func (b *Buffer) AppendSupplier(writer Supplier) error {
} }
// Byte returns the bytes at index. // Byte returns the bytes at index.
func (b *Buffer) Byte(index int) byte { func (b *Buffer) Byte(index int32) byte {
return b.v[b.start+int32(index)] return b.v[b.start+index]
} }
// SetByte sets the byte value at index. // SetByte sets the byte value at index.
func (b *Buffer) SetByte(index int, value byte) { func (b *Buffer) SetByte(index int32, value byte) {
b.v[b.start+int32(index)] = value b.v[b.start+index] = value
} }
// Bytes returns the content bytes of this Buffer. // Bytes returns the content bytes of this Buffer.
@ -79,34 +79,34 @@ func (b *Buffer) Reset(writer Supplier) error {
} }
// BytesRange returns a slice of this buffer with given from and to boundary. // BytesRange returns a slice of this buffer with given from and to boundary.
func (b *Buffer) BytesRange(from, to int) []byte { func (b *Buffer) BytesRange(from, to int32) []byte {
if from < 0 { if from < 0 {
from += b.Len() from += b.Len()
} }
if to < 0 { if to < 0 {
to += b.Len() to += b.Len()
} }
return b.v[b.start+int32(from) : b.start+int32(to)] return b.v[b.start+from : b.start+to]
} }
// BytesFrom returns a slice of this Buffer starting from the given position. // BytesFrom returns a slice of this Buffer starting from the given position.
func (b *Buffer) BytesFrom(from int) []byte { func (b *Buffer) BytesFrom(from int32) []byte {
if from < 0 { if from < 0 {
from += b.Len() from += b.Len()
} }
return b.v[b.start+int32(from) : b.end] return b.v[b.start+from : b.end]
} }
// BytesTo returns a slice of this Buffer from start to the given position. // BytesTo returns a slice of this Buffer from start to the given position.
func (b *Buffer) BytesTo(to int) []byte { func (b *Buffer) BytesTo(to int32) []byte {
if to < 0 { if to < 0 {
to += b.Len() to += b.Len()
} }
return b.v[b.start : b.start+int32(to)] return b.v[b.start : b.start+to]
} }
// Slice cuts the buffer at the given position. // Slice cuts the buffer at the given position.
func (b *Buffer) Slice(from, to int) { func (b *Buffer) Slice(from, to int32) {
if from < 0 { if from < 0 {
from += b.Len() from += b.Len()
} }
@ -116,24 +116,24 @@ func (b *Buffer) Slice(from, to int) {
if to < from { if to < from {
panic("Invalid slice") panic("Invalid slice")
} }
b.end = b.start + int32(to) b.end = b.start + to
b.start += int32(from) b.start += from
} }
// SliceFrom cuts the buffer at the given position. // SliceFrom cuts the buffer at the given position.
func (b *Buffer) SliceFrom(from int) { func (b *Buffer) SliceFrom(from int32) {
if from < 0 { if from < 0 {
from += b.Len() from += b.Len()
} }
b.start += int32(from) b.start += from
} }
// Len returns the length of the buffer content. // Len returns the length of the buffer content.
func (b *Buffer) Len() int { func (b *Buffer) Len() int32 {
if b == nil { if b == nil {
return 0 return 0
} }
return int(b.end - b.start) return b.end - b.start
} }
// IsEmpty returns true if the buffer is empty. // IsEmpty returns true if the buffer is empty.
@ -159,7 +159,7 @@ func (b *Buffer) Read(data []byte) (int, error) {
return 0, io.EOF return 0, io.EOF
} }
nBytes := copy(data, b.v[b.start:b.end]) nBytes := copy(data, b.v[b.start:b.end])
if nBytes == b.Len() { if int32(nBytes) == b.Len() {
b.Clear() b.Clear()
} else { } else {
b.start += int32(nBytes) b.start += int32(nBytes)

View File

@ -16,10 +16,10 @@ func TestBufferClear(t *testing.T) {
payload := "Bytes" payload := "Bytes"
buffer.Append([]byte(payload)) buffer.Append([]byte(payload))
assert(buffer.Len(), Equals, len(payload)) assert(buffer.Len(), Equals, int32(len(payload)))
buffer.Clear() buffer.Clear()
assert(buffer.Len(), Equals, 0) assert(buffer.Len(), Equals, int32(0))
} }
func TestBufferIsEmpty(t *testing.T) { func TestBufferIsEmpty(t *testing.T) {

View File

@ -66,7 +66,7 @@ func ReadAllToBytes(reader io.Reader) ([]byte, error) {
type MultiBuffer []*Buffer type MultiBuffer []*Buffer
// NewMultiBufferCap creates a new MultiBuffer instance. // NewMultiBufferCap creates a new MultiBuffer instance.
func NewMultiBufferCap(capacity int) MultiBuffer { func NewMultiBufferCap(capacity int32) MultiBuffer {
return MultiBuffer(make([]*Buffer, 0, capacity)) return MultiBuffer(make([]*Buffer, 0, capacity))
} }
@ -93,7 +93,7 @@ func (mb MultiBuffer) Copy(b []byte) int {
for _, bb := range mb { for _, bb := range mb {
nBytes := copy(b[total:], bb.Bytes()) nBytes := copy(b[total:], bb.Bytes())
total += nBytes total += nBytes
if nBytes < bb.Len() { if int32(nBytes) < bb.Len() {
break break
} }
} }
@ -137,8 +137,8 @@ func (mb *MultiBuffer) Write(b []byte) {
} }
// Len returns the total number of bytes in the MultiBuffer. // Len returns the total number of bytes in the MultiBuffer.
func (mb MultiBuffer) Len() int { func (mb MultiBuffer) Len() int32 {
size := 0 size := int32(0)
for _, b := range mb { for _, b := range mb {
size += b.Len() size += b.Len()
} }
@ -176,10 +176,10 @@ func (mb MultiBuffer) ToNetBuffers() net.Buffers {
// SliceBySize splits the beginning of this MultiBuffer into another one, for at most size bytes. // SliceBySize splits the beginning of this MultiBuffer into another one, for at most size bytes.
func (mb *MultiBuffer) SliceBySize(size int32) MultiBuffer { func (mb *MultiBuffer) SliceBySize(size int32) MultiBuffer {
slice := NewMultiBufferCap(10) slice := NewMultiBufferCap(10)
sliceSize := 0 sliceSize := int32(0)
endIndex := len(*mb) endIndex := len(*mb)
for i, b := range *mb { for i, b := range *mb {
if int32(b.Len()+sliceSize) > size { if b.Len()+sliceSize > size {
endIndex = i endIndex = i
break break
} }

View File

@ -33,7 +33,7 @@ func TestMultiBufferAppend(t *testing.T) {
b := New() b := New()
b.AppendBytes('a', 'b') b.AppendBytes('a', 'b')
mb.Append(b) mb.Append(b)
assert(mb.Len(), Equals, 2) assert(mb.Len(), Equals, int32(2))
} }
func TestMultiBufferSliceBySizeLarge(t *testing.T) { func TestMultiBufferSliceBySizeLarge(t *testing.T) {
@ -46,5 +46,5 @@ func TestMultiBufferSliceBySizeLarge(t *testing.T) {
mb.Append(lb) mb.Append(lb)
mb2 := mb.SliceBySize(4 * 1024) mb2 := mb.SliceBySize(4 * 1024)
assert(mb2.Len(), Equals, 4*1024) assert(mb2.Len(), Equals, int32(4*1024))
} }

View File

@ -51,7 +51,7 @@ func (r *BytesToBufferReader) ReadMultiBuffer() (MultiBuffer, error) {
nBytes, err := r.Reader.Read(r.buffer) nBytes, err := r.Reader.Read(r.buffer)
if nBytes > 0 { if nBytes > 0 {
mb := NewMultiBufferCap(nBytes/Size + 1) mb := NewMultiBufferCap(int32(nBytes/Size) + 1)
mb.Write(r.buffer[:nBytes]) mb.Write(r.buffer[:nBytes])
if nBytes == len(r.buffer) && nBytes < int(largeSize) { if nBytes == len(r.buffer) && nBytes < int(largeSize) {
freeBytes(r.buffer) freeBytes(r.buffer)
@ -99,7 +99,7 @@ func (r *BufferedReader) IsBuffered() bool {
// BufferedBytes returns the number of bytes that is cached in this reader. // BufferedBytes returns the number of bytes that is cached in this reader.
func (r *BufferedReader) BufferedBytes() int32 { func (r *BufferedReader) BufferedBytes() int32 {
return int32(r.leftOver.Len()) return r.leftOver.Len()
} }
// ReadByte implements io.ByteReader. // ReadByte implements io.ByteReader.
@ -149,7 +149,7 @@ func (r *BufferedReader) ReadMultiBuffer() (MultiBuffer, error) {
} }
// ReadAtMost returns a MultiBuffer with at most size. // ReadAtMost returns a MultiBuffer with at most size.
func (r *BufferedReader) ReadAtMost(size int) (MultiBuffer, error) { func (r *BufferedReader) ReadAtMost(size int32) (MultiBuffer, error) {
if r.leftOver == nil { if r.leftOver == nil {
mb, err := r.stream.ReadMultiBuffer() mb, err := r.stream.ReadMultiBuffer()
if mb.IsEmpty() && err != nil { if mb.IsEmpty() && err != nil {
@ -158,7 +158,7 @@ func (r *BufferedReader) ReadAtMost(size int) (MultiBuffer, error) {
r.leftOver = mb r.leftOver = mb
} }
mb := r.leftOver.SliceBySize(int32(size)) mb := r.leftOver.SliceBySize(size)
if r.leftOver.IsEmpty() { if r.leftOver.IsEmpty() {
r.leftOver = nil r.leftOver = nil
} }

View File

@ -17,23 +17,23 @@ func TestAdaptiveReader(t *testing.T) {
reader := NewReader(bytes.NewReader(make([]byte, 1024*1024))) reader := NewReader(bytes.NewReader(make([]byte, 1024*1024)))
b, err := reader.ReadMultiBuffer() b, err := reader.ReadMultiBuffer()
assert(err, IsNil) assert(err, IsNil)
assert(b.Len(), Equals, 2*1024) assert(b.Len(), Equals, int32(2*1024))
b, err = reader.ReadMultiBuffer() b, err = reader.ReadMultiBuffer()
assert(err, IsNil) assert(err, IsNil)
assert(b.Len(), Equals, 8*1024) assert(b.Len(), Equals, int32(8*1024))
b, err = reader.ReadMultiBuffer() b, err = reader.ReadMultiBuffer()
assert(err, IsNil) assert(err, IsNil)
assert(b.Len(), Equals, 32*1024) assert(b.Len(), Equals, int32(32*1024))
b, err = reader.ReadMultiBuffer() b, err = reader.ReadMultiBuffer()
assert(err, IsNil) assert(err, IsNil)
assert(b.Len(), Equals, 128*1024) assert(b.Len(), Equals, int32(128*1024))
b, err = reader.ReadMultiBuffer() b, err = reader.ReadMultiBuffer()
assert(err, IsNil) assert(err, IsNil)
assert(b.Len(), Equals, 512*1024) assert(b.Len(), Equals, int32(512*1024))
} }
func TestBytesReaderWriteTo(t *testing.T) { func TestBytesReaderWriteTo(t *testing.T) {

View File

@ -47,7 +47,7 @@ func TestBytesWriterReadFrom(t *testing.T) {
mb, err := cache.ReadMultiBuffer() mb, err := cache.ReadMultiBuffer()
assert(err, IsNil) assert(err, IsNil)
assert(mb.Len(), Equals, size) assert(mb.Len(), Equals, int32(size))
} }
func TestDiscardBytes(t *testing.T) { func TestDiscardBytes(t *testing.T) {

View File

@ -149,12 +149,12 @@ func (r *AuthenticationReader) readInternal(soft bool) (*buf.Buffer, error) {
return nil, err return nil, err
} }
rb, err := r.auth.Open(b.BytesTo(0), b.BytesTo(int(size))) rb, err := r.auth.Open(b.BytesTo(0), b.BytesTo(size))
if err != nil { if err != nil {
b.Release() b.Release()
return nil, err return nil, err
} }
b.Slice(0, len(rb)) b.Slice(0, int32(len(rb)))
return b, nil return b, nil
} }
@ -200,7 +200,7 @@ func NewAuthenticationWriter(auth Authenticator, sizeParser ChunkSizeEncoder, wr
} }
func (w *AuthenticationWriter) seal(b *buf.Buffer) (*buf.Buffer, error) { func (w *AuthenticationWriter) seal(b *buf.Buffer) (*buf.Buffer, error) {
encryptedSize := b.Len() + w.auth.Overhead() encryptedSize := int(b.Len()) + w.auth.Overhead()
eb := buf.New() eb := buf.New()
common.Must(eb.Reset(func(bb []byte) (int, error) { common.Must(eb.Reset(func(bb []byte) (int, error) {
@ -222,7 +222,7 @@ func (w *AuthenticationWriter) writeStream(mb buf.MultiBuffer) error {
defer mb.Release() defer mb.Release()
payloadSize := buf.Size - w.auth.Overhead() - w.sizeParser.SizeBytes() payloadSize := buf.Size - w.auth.Overhead() - w.sizeParser.SizeBytes()
mb2Write := buf.NewMultiBufferCap(len(mb) + 10) mb2Write := buf.NewMultiBufferCap(int32(len(mb) + 10))
for { for {
b := buf.New() b := buf.New()
@ -256,7 +256,7 @@ func (w *AuthenticationWriter) writePacket(mb buf.MultiBuffer) error {
return w.writer.WriteMultiBuffer(buf.NewMultiBufferValue(eb)) return w.writer.WriteMultiBuffer(buf.NewMultiBufferValue(eb))
} }
mb2Write := buf.NewMultiBufferCap(len(mb) + 1) mb2Write := buf.NewMultiBufferCap(int32(len(mb)) + 1)
for !mb.IsEmpty() { for !mb.IsEmpty() {
b := mb.SplitFirst() b := mb.SplitFirst()

View File

@ -30,7 +30,7 @@ func TestAuthenticationReaderWriter(t *testing.T) {
payload := buf.NewSize(payloadSize) payload := buf.NewSize(payloadSize)
payload.Append(rawPayload) payload.Append(rawPayload)
assert(payload.Len(), Equals, payloadSize) assert(payload.Len(), Equals, int32(payloadSize))
cache := buf.NewSize(160 * 1024) cache := buf.NewSize(160 * 1024)
iv := make([]byte, 12) iv := make([]byte, 12)
@ -45,7 +45,7 @@ func TestAuthenticationReaderWriter(t *testing.T) {
}, PlainChunkSizeParser{}, cache, protocol.TransferTypeStream) }, PlainChunkSizeParser{}, cache, protocol.TransferTypeStream)
assert(writer.WriteMultiBuffer(buf.NewMultiBufferValue(payload)), IsNil) assert(writer.WriteMultiBuffer(buf.NewMultiBufferValue(payload)), IsNil)
assert(cache.Len(), Equals, 82658) assert(cache.Len(), Equals, int32(82658))
assert(writer.WriteMultiBuffer(buf.MultiBuffer{}), IsNil) assert(writer.WriteMultiBuffer(buf.MultiBuffer{}), IsNil)
reader := NewAuthenticationReader(&AEADAuthenticator{ reader := NewAuthenticationReader(&AEADAuthenticator{
@ -65,7 +65,7 @@ func TestAuthenticationReaderWriter(t *testing.T) {
mb.AppendMulti(mb2) mb.AppendMulti(mb2)
} }
assert(mb.Len(), Equals, payloadSize) assert(mb.Len(), Equals, int32(payloadSize))
mbContent := make([]byte, payloadSize) mbContent := make([]byte, payloadSize)
mb.Read(mbContent) mb.Read(mbContent)
@ -108,7 +108,7 @@ func TestAuthenticationReaderWriterPacket(t *testing.T) {
payload.Append(pb2) payload.Append(pb2)
assert(writer.WriteMultiBuffer(payload), IsNil) assert(writer.WriteMultiBuffer(payload), IsNil)
assert(cache.Len(), GreaterThan, 0) assert(cache.Len(), GreaterThan, int32(0))
assert(writer.WriteMultiBuffer(buf.MultiBuffer{}), IsNil) assert(writer.WriteMultiBuffer(buf.MultiBuffer{}), IsNil)
assert(err, IsNil) assert(err, IsNil)

View File

@ -62,7 +62,7 @@ type ChunkStreamReader struct {
reader *buf.BufferedReader reader *buf.BufferedReader
buffer []byte buffer []byte
leftOverSize int leftOverSize int32
} }
func NewChunkStreamReader(sizeDecoder ChunkSizeDecoder, reader io.Reader) *ChunkStreamReader { func NewChunkStreamReader(sizeDecoder ChunkSizeDecoder, reader io.Reader) *ChunkStreamReader {
@ -90,7 +90,7 @@ func (r *ChunkStreamReader) ReadMultiBuffer() (buf.MultiBuffer, error) {
if nextSize == 0 { if nextSize == 0 {
return nil, io.EOF return nil, io.EOF
} }
size = int(nextSize) size = int32(nextSize)
} }
r.leftOverSize = size r.leftOverSize = size

View File

@ -27,16 +27,16 @@ func TestChunkStreamIO(t *testing.T) {
assert(writer.WriteMultiBuffer(buf.MultiBuffer{}), IsNil) assert(writer.WriteMultiBuffer(buf.MultiBuffer{}), IsNil)
assert(cache.Len(), Equals, 13) assert(cache.Len(), Equals, int32(13))
mb, err := reader.ReadMultiBuffer() mb, err := reader.ReadMultiBuffer()
assert(err, IsNil) assert(err, IsNil)
assert(mb.Len(), Equals, 4) assert(mb.Len(), Equals, int32(4))
assert(mb[0].Bytes(), Equals, []byte("abcd")) assert(mb[0].Bytes(), Equals, []byte("abcd"))
mb, err = reader.ReadMultiBuffer() mb, err = reader.ReadMultiBuffer()
assert(err, IsNil) assert(err, IsNil)
assert(mb.Len(), Equals, 3) assert(mb.Len(), Equals, int32(3))
assert(mb[0].Bytes(), Equals, []byte("efg")) assert(mb[0].Bytes(), Equals, []byte("efg"))
_, err = reader.ReadMultiBuffer() _, err = reader.ReadMultiBuffer()

View File

@ -98,7 +98,7 @@ func (p *AddressParser) readAddress(b *buf.Buffer, reader io.Reader) (net.Addres
if err := b.AppendSupplier(buf.ReadFullFrom(reader, 1)); err != nil { if err := b.AppendSupplier(buf.ReadFullFrom(reader, 1)); err != nil {
return nil, err return nil, err
} }
domainLength := int(b.Byte(b.Len() - 1)) domainLength := int32(b.Byte(b.Len() - 1))
if err := b.AppendSupplier(buf.ReadFullFrom(reader, int32(domainLength))); err != nil { if err := b.AppendSupplier(buf.ReadFullFrom(reader, int32(domainLength))); err != nil {
return nil, err return nil, err
} }

View File

@ -96,8 +96,8 @@ func (a *Account) AsAccount() (protocol.Account, error) {
// Cipher is an interface for all Shadowsocks ciphers. // Cipher is an interface for all Shadowsocks ciphers.
type Cipher interface { type Cipher interface {
KeySize() int KeySize() int32
IVSize() int IVSize() int32
NewEncryptionWriter(key []byte, iv []byte, writer io.Writer) (buf.Writer, error) NewEncryptionWriter(key []byte, iv []byte, writer io.Writer) (buf.Writer, error)
NewDecryptionReader(key []byte, iv []byte, reader io.Reader) (buf.Reader, error) NewDecryptionReader(key []byte, iv []byte, reader io.Reader) (buf.Reader, error)
IsAEAD() bool IsAEAD() bool
@ -107,18 +107,18 @@ type Cipher interface {
// AesCfb represents all AES-CFB ciphers. // AesCfb represents all AES-CFB ciphers.
type AesCfb struct { type AesCfb struct {
KeyBytes int KeyBytes int32
} }
func (*AesCfb) IsAEAD() bool { func (*AesCfb) IsAEAD() bool {
return false return false
} }
func (v *AesCfb) KeySize() int { func (v *AesCfb) KeySize() int32 {
return v.KeyBytes return v.KeyBytes
} }
func (v *AesCfb) IVSize() int { func (v *AesCfb) IVSize() int32 {
return 16 return 16
} }
@ -151,8 +151,8 @@ func (v *AesCfb) DecodePacket(key []byte, b *buf.Buffer) error {
} }
type AEADCipher struct { type AEADCipher struct {
KeyBytes int KeyBytes int32
IVBytes int IVBytes int32
AEADAuthCreator func(key []byte) cipher.AEAD AEADAuthCreator func(key []byte) cipher.AEAD
} }
@ -160,11 +160,11 @@ func (*AEADCipher) IsAEAD() bool {
return true return true
} }
func (c *AEADCipher) KeySize() int { func (c *AEADCipher) KeySize() int32 {
return c.KeyBytes return c.KeyBytes
} }
func (c *AEADCipher) IVSize() int { func (c *AEADCipher) IVSize() int32 {
return c.IVBytes return c.IVBytes
} }
@ -226,18 +226,18 @@ func (c *AEADCipher) DecodePacket(key []byte, b *buf.Buffer) error {
} }
type ChaCha20 struct { type ChaCha20 struct {
IVBytes int IVBytes int32
} }
func (*ChaCha20) IsAEAD() bool { func (*ChaCha20) IsAEAD() bool {
return false return false
} }
func (v *ChaCha20) KeySize() int { func (v *ChaCha20) KeySize() int32 {
return 32 return 32
} }
func (v *ChaCha20) IVSize() int { func (v *ChaCha20) IVSize() int32 {
return v.IVBytes return v.IVBytes
} }
@ -271,8 +271,8 @@ func (v *ChaCha20) DecodePacket(key []byte, b *buf.Buffer) error {
type NoneCipher struct{} type NoneCipher struct{}
func (NoneCipher) KeySize() int { return 0 } func (NoneCipher) KeySize() int32 { return 0 }
func (NoneCipher) IVSize() int { return 0 } func (NoneCipher) IVSize() int32 { return 0 }
func (NoneCipher) IsAEAD() bool { func (NoneCipher) IsAEAD() bool {
return true // to avoid OTA return true // to avoid OTA
} }
@ -293,13 +293,13 @@ func (NoneCipher) DecodePacket(key []byte, b *buf.Buffer) error {
return nil return nil
} }
func passwordToCipherKey(password []byte, keySize int) []byte { func passwordToCipherKey(password []byte, keySize int32) []byte {
key := make([]byte, 0, keySize) key := make([]byte, 0, keySize)
md5Sum := md5.Sum(password) md5Sum := md5.Sum(password)
key = append(key, md5Sum[:]...) key = append(key, md5Sum[:]...)
for len(key) < keySize { for int32(len(key)) < keySize {
md5Hash := md5.New() md5Hash := md5.New()
common.Must2(md5Hash.Write(md5Sum[:])) common.Must2(md5Hash.Write(md5Sum[:]))
common.Must2(md5Hash.Write(password)) common.Must2(md5Hash.Write(password))

View File

@ -26,10 +26,6 @@ const (
authPassword = 0x02 authPassword = 0x02
authNoMatchingMethod = 0xFF authNoMatchingMethod = 0xFF
addrTypeIPv4 = 0x01
addrTypeIPv6 = 0x04
addrTypeDomain = 0x03
statusSuccess = 0x00 statusSuccess = 0x00
statusCmdNotSupport = 0x07 statusCmdNotSupport = 0x07
) )
@ -96,8 +92,8 @@ func (s *ServerSession) Handshake(reader io.Reader, writer io.Writer) (*protocol
} }
if version == socks5Version { if version == socks5Version {
nMethod := int(buffer.Byte(1)) nMethod := int32(buffer.Byte(1))
if err := buffer.AppendSupplier(buf.ReadFullFrom(reader, int32(nMethod))); err != nil { if err := buffer.AppendSupplier(buf.ReadFullFrom(reader, nMethod)); err != nil {
return nil, newError("failed to read auth methods").Base(err) return nil, newError("failed to read auth methods").Base(err)
} }

View File

@ -883,7 +883,7 @@ func TestShadowsocksChacha20Poly1305UDPConformance(t *testing.T) {
Port: int(serverPort), Port: int(serverPort),
}) })
assert(err, IsNil) assert(err, IsNil)
assert(nBytes, Equals, payload.Len()) assert(int32(nBytes), Equals, payload.Len())
conn.SetReadDeadline(time.Now().Add(time.Second * 10)) conn.SetReadDeadline(time.Now().Add(time.Second * 10))
response := make([]byte, 10240) response := make([]byte, 10240)

View File

@ -8,7 +8,7 @@ import (
) )
type PacketHeader interface { type PacketHeader interface {
Size() int Size() int32
Write([]byte) (int, error) Write([]byte) (int, error)
} }

View File

@ -57,7 +57,7 @@ type HeaderReader struct {
func (*HeaderReader) Read(reader io.Reader) (*buf.Buffer, error) { func (*HeaderReader) Read(reader io.Reader) (*buf.Buffer, error) {
buffer := buf.New() buffer := buf.New()
totalBytes := 0 totalBytes := int32(0)
endingDetected := false endingDetected := false
for totalBytes < maxHeaderLength { for totalBytes < maxHeaderLength {
err := buffer.AppendSupplier(buf.ReadFrom(reader)) err := buffer.AppendSupplier(buf.ReadFrom(reader))
@ -66,13 +66,13 @@ func (*HeaderReader) Read(reader io.Reader) (*buf.Buffer, error) {
return nil, err return nil, err
} }
if n := bytes.Index(buffer.Bytes(), []byte(ENDING)); n != -1 { if n := bytes.Index(buffer.Bytes(), []byte(ENDING)); n != -1 {
buffer.SliceFrom(n + len(ENDING)) buffer.SliceFrom(int32(n + len(ENDING)))
endingDetected = true endingDetected = true
break break
} }
if buffer.Len() >= len(ENDING) { if buffer.Len() >= int32(len(ENDING)) {
totalBytes += buffer.Len() - len(ENDING) totalBytes += buffer.Len() - int32(len(ENDING))
leftover := buffer.BytesFrom(-len(ENDING)) leftover := buffer.BytesFrom(-int32(len(ENDING)))
buffer.Reset(func(b []byte) (int, error) { buffer.Reset(func(b []byte) (int, error) {
return copy(b, leftover), nil return copy(b, leftover), nil
}) })

View File

@ -21,7 +21,7 @@ func TestReaderWriter(t *testing.T) {
writer := NewHeaderWriter(b) writer := NewHeaderWriter(b)
err := writer.Write(cache) err := writer.Write(cache)
assert(err, IsNil) assert(err, IsNil)
assert(cache.Len(), Equals, 8) assert(cache.Len(), Equals, int32(8))
_, err = cache.Write([]byte{'e', 'f', 'g'}) _, err = cache.Write([]byte{'e', 'f', 'g'})
assert(err, IsNil) assert(err, IsNil)

View File

@ -9,7 +9,7 @@ import (
type NoOpHeader struct{} type NoOpHeader struct{}
func (NoOpHeader) Size() int { func (NoOpHeader) Size() int32 {
return 0 return 0
} }

View File

@ -13,7 +13,7 @@ type SRTP struct {
number uint16 number uint16
} }
func (*SRTP) Size() int { func (*SRTP) Size() int32 {
return 4 return 4
} }

View File

@ -22,5 +22,5 @@ func TestSRTPWrite(t *testing.T) {
payload.AppendSupplier(srtp.Write) payload.AppendSupplier(srtp.Write)
payload.Append(content) payload.Append(content)
assert(payload.Len(), Equals, len(content)+srtp.Size()) assert(payload.Len(), Equals, int32(len(content))+srtp.Size())
} }

View File

@ -14,7 +14,7 @@ type UTP struct {
connectionId uint16 connectionId uint16
} }
func (*UTP) Size() int { func (*UTP) Size() int32 {
return 4 return 4
} }

View File

@ -22,5 +22,5 @@ func TestUTPWrite(t *testing.T) {
payload.AppendSupplier(utp.Write) payload.AppendSupplier(utp.Write)
payload.Append(content) payload.Append(content)
assert(payload.Len(), Equals, len(content)+utp.Size()) assert(payload.Len(), Equals, int32(len(content))+utp.Size())
} }

View File

@ -12,7 +12,7 @@ type VideoChat struct {
sn int sn int
} }
func (vc *VideoChat) Size() int { func (vc *VideoChat) Size() int32 {
return 13 return 13
} }

View File

@ -57,7 +57,7 @@ type KCPPacketWriter struct {
func (w *KCPPacketWriter) Overhead() int { func (w *KCPPacketWriter) Overhead() int {
overhead := 0 overhead := 0
if w.Header != nil { if w.Header != nil {
overhead += w.Header.Size() overhead += int(w.Header.Size())
} }
if w.Security != nil { if w.Security != nil {
overhead += w.Security.Overhead() overhead += w.Security.Overhead()

View File

@ -29,7 +29,7 @@ type Segment interface {
Release() Release()
Conversation() uint16 Conversation() uint16
Command() Command Command() Command
ByteSize() int ByteSize() int32
Bytes() buf.Supplier Bytes() buf.Supplier
parse(conv uint16, cmd Command, opt SegmentOption, buf []byte) (bool, []byte) parse(conv uint16, cmd Command, opt SegmentOption, buf []byte) (bool, []byte)
} }
@ -116,7 +116,7 @@ func (s *DataSegment) Bytes() buf.Supplier {
} }
} }
func (s *DataSegment) ByteSize() int { func (s *DataSegment) ByteSize() int32 {
return 2 + 1 + 1 + 4 + 4 + 4 + 2 + s.payload.Len() return 2 + 1 + 1 + 4 + 4 + 4 + 2 + s.payload.Len()
} }
@ -198,8 +198,8 @@ func (s *AckSegment) IsEmpty() bool {
return len(s.NumberList) == 0 return len(s.NumberList) == 0
} }
func (s *AckSegment) ByteSize() int { func (s *AckSegment) ByteSize() int32 {
return 2 + 1 + 1 + 4 + 4 + 4 + 1 + len(s.NumberList)*4 return 2 + 1 + 1 + 4 + 4 + 4 + 1 + int32(len(s.NumberList)*4)
} }
func (s *AckSegment) Bytes() buf.Supplier { func (s *AckSegment) Bytes() buf.Supplier {
@ -214,7 +214,7 @@ func (s *AckSegment) Bytes() buf.Supplier {
for _, number := range s.NumberList { for _, number := range s.NumberList {
b = serial.Uint32ToBytes(number, b) b = serial.Uint32ToBytes(number, b)
} }
return s.ByteSize(), nil return int(s.ByteSize()), nil
} }
} }
@ -264,7 +264,7 @@ func (s *CmdOnlySegment) Command() Command {
return s.Cmd return s.Cmd
} }
func (*CmdOnlySegment) ByteSize() int { func (*CmdOnlySegment) ByteSize() int32 {
return 2 + 1 + 1 + 4 + 4 + 4 return 2 + 1 + 1 + 4 + 4 + 4
} }

View File

@ -30,7 +30,7 @@ func TestDataSegment(t *testing.T) {
bytes := make([]byte, nBytes) bytes := make([]byte, nBytes)
seg.Bytes()(bytes) seg.Bytes()(bytes)
assert(len(bytes), Equals, nBytes) assert(int32(len(bytes)), Equals, nBytes)
iseg, _ := ReadSegment(bytes) iseg, _ := ReadSegment(bytes)
seg2 := iseg.(*DataSegment) seg2 := iseg.(*DataSegment)
@ -56,7 +56,7 @@ func Test1ByteDataSegment(t *testing.T) {
bytes := make([]byte, nBytes) bytes := make([]byte, nBytes)
seg.Bytes()(bytes) seg.Bytes()(bytes)
assert(len(bytes), Equals, nBytes) assert(int32(len(bytes)), Equals, nBytes)
iseg, _ := ReadSegment(bytes) iseg, _ := ReadSegment(bytes)
seg2 := iseg.(*DataSegment) seg2 := iseg.(*DataSegment)
@ -82,7 +82,7 @@ func TestACKSegment(t *testing.T) {
bytes := make([]byte, nBytes) bytes := make([]byte, nBytes)
seg.Bytes()(bytes) seg.Bytes()(bytes)
assert(len(bytes), Equals, nBytes) assert(int32(len(bytes)), Equals, nBytes)
iseg, _ := ReadSegment(bytes) iseg, _ := ReadSegment(bytes)
seg2 := iseg.(*AckSegment) seg2 := iseg.(*AckSegment)
@ -112,7 +112,7 @@ func TestCmdSegment(t *testing.T) {
bytes := make([]byte, nBytes) bytes := make([]byte, nBytes)
seg.Bytes()(bytes) seg.Bytes()(bytes)
assert(len(bytes), Equals, nBytes) assert(int32(len(bytes)), Equals, nBytes)
iseg, _ := ReadSegment(bytes) iseg, _ := ReadSegment(bytes)
seg2 := iseg.(*CmdOnlySegment) seg2 := iseg.(*CmdOnlySegment)

View File

@ -79,7 +79,7 @@ func (c *connection) Write(b []byte) (int, error) {
} }
l := len(b) l := len(b)
mb := buf.NewMultiBufferCap(l/buf.Size + 1) mb := buf.NewMultiBufferCap(int32(l)/buf.Size + 1)
mb.Write(b) mb.Write(b)
return l, c.output.WriteMultiBuffer(mb) return l, c.output.WriteMultiBuffer(mb)
} }