mirror of https://github.com/v2ray/v2ray-core
migrate int to int32
parent
4de3f1adc1
commit
08dab81eb2
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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))
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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))
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -8,7 +8,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type PacketHeader interface {
|
type PacketHeader interface {
|
||||||
Size() int
|
Size() int32
|
||||||
Write([]byte) (int, error)
|
Write([]byte) (int, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
})
|
})
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ import (
|
||||||
|
|
||||||
type NoOpHeader struct{}
|
type NoOpHeader struct{}
|
||||||
|
|
||||||
func (NoOpHeader) Size() int {
|
func (NoOpHeader) Size() int32 {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ type SRTP struct {
|
||||||
number uint16
|
number uint16
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*SRTP) Size() int {
|
func (*SRTP) Size() int32 {
|
||||||
return 4
|
return 4
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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())
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ type UTP struct {
|
||||||
connectionId uint16
|
connectionId uint16
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*UTP) Size() int {
|
func (*UTP) Size() int32 {
|
||||||
return 4
|
return 4
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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())
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue