mirror of https://github.com/v2ray/v2ray-core
				
				
				
			unified release
							parent
							
								
									5769df496b
								
							
						
					
					
						commit
						c68da6a0e8
					
				| 
						 | 
				
			
			@ -25,8 +25,10 @@ func NewReader(rawReader io.Reader) *BufferedReader {
 | 
			
		|||
 | 
			
		||||
// Release implements Releasable.Release().
 | 
			
		||||
func (v *BufferedReader) Release() {
 | 
			
		||||
	v.buffer.Release()
 | 
			
		||||
	v.buffer = nil
 | 
			
		||||
	if v.buffer != nil {
 | 
			
		||||
		v.buffer.Release()
 | 
			
		||||
		v.buffer = nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	common.Release(v.reader)
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,8 +31,8 @@ func (v *CryptionReader) Read(data []byte) (int, error) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
func (v *CryptionReader) Release() {
 | 
			
		||||
	v.reader = nil
 | 
			
		||||
	v.stream = nil
 | 
			
		||||
	common.Release(v.reader)
 | 
			
		||||
	common.Release(v.stream)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type CryptionWriter struct {
 | 
			
		||||
| 
						 | 
				
			
			@ -56,6 +56,6 @@ func (v *CryptionWriter) Write(data []byte) (int, error) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
func (v *CryptionWriter) Release() {
 | 
			
		||||
	v.writer = nil
 | 
			
		||||
	v.stream = nil
 | 
			
		||||
	common.Release(v.writer)
 | 
			
		||||
	common.Release(v.stream)
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,10 +19,9 @@ type ErrorLog struct {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
func (v *ErrorLog) Release() {
 | 
			
		||||
	for index := range v.Values {
 | 
			
		||||
		v.Values[index] = nil
 | 
			
		||||
	for _, val := range v.Values {
 | 
			
		||||
		common.Release(val)
 | 
			
		||||
	}
 | 
			
		||||
	v.Values = nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (v *ErrorLog) String() string {
 | 
			
		||||
| 
						 | 
				
			
			@ -37,9 +36,9 @@ type AccessLog struct {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
func (v *AccessLog) Release() {
 | 
			
		||||
	v.From = nil
 | 
			
		||||
	v.To = nil
 | 
			
		||||
	v.Reason = nil
 | 
			
		||||
	common.Release(v.From)
 | 
			
		||||
	common.Release(v.To)
 | 
			
		||||
	common.Release(v.Reason)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (v *AccessLog) String() string {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,6 +4,8 @@ import (
 | 
			
		|||
	"io"
 | 
			
		||||
	"net"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"v2ray.com/core/common"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
| 
						 | 
				
			
			@ -51,8 +53,8 @@ func (reader *TimeOutReader) SetTimeOut(value uint32) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
func (reader *TimeOutReader) Release() {
 | 
			
		||||
	reader.connection = nil
 | 
			
		||||
	reader.worker = nil
 | 
			
		||||
	common.Release(reader.connection)
 | 
			
		||||
	common.Release(reader.worker)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type timedReaderWorker struct {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,6 +6,7 @@ import (
 | 
			
		|||
	"crypto/sha1"
 | 
			
		||||
	"io"
 | 
			
		||||
 | 
			
		||||
	"v2ray.com/core/common"
 | 
			
		||||
	"v2ray.com/core/common/buf"
 | 
			
		||||
	"v2ray.com/core/common/errors"
 | 
			
		||||
	"v2ray.com/core/common/serial"
 | 
			
		||||
| 
						 | 
				
			
			@ -70,8 +71,8 @@ func NewChunkReader(reader io.Reader, auth *Authenticator) *ChunkReader {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
func (v *ChunkReader) Release() {
 | 
			
		||||
	v.reader = nil
 | 
			
		||||
	v.auth = nil
 | 
			
		||||
	common.Release(v.reader)
 | 
			
		||||
	common.Release(v.auth)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (v *ChunkReader) Read() (*buf.Buffer, error) {
 | 
			
		||||
| 
						 | 
				
			
			@ -124,8 +125,8 @@ func NewChunkWriter(writer io.Writer, auth *Authenticator) *ChunkWriter {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
func (v *ChunkWriter) Release() {
 | 
			
		||||
	v.writer = nil
 | 
			
		||||
	v.auth = nil
 | 
			
		||||
	common.Release(v.writer)
 | 
			
		||||
	common.Release(v.auth)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (v *ChunkWriter) Write(payload *buf.Buffer) error {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -69,11 +69,6 @@ func (v *TimedUserValidator) Release() {
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	v.running = false
 | 
			
		||||
	v.validUsers = nil
 | 
			
		||||
	v.userHash = nil
 | 
			
		||||
	v.ids = nil
 | 
			
		||||
	v.hasher = nil
 | 
			
		||||
	v.cancel = nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (v *TimedUserValidator) generateNewHashes(nowSec protocol.Timestamp, idx int, entry *idEntry) {
 | 
			
		||||
| 
						 | 
				
			
			@ -89,10 +84,8 @@ func (v *TimedUserValidator) generateNewHashes(nowSec protocol.Timestamp, idx in
 | 
			
		|||
		idHash.Sum(hashValueRemoval[:0])
 | 
			
		||||
		idHash.Reset()
 | 
			
		||||
 | 
			
		||||
		v.Lock()
 | 
			
		||||
		v.userHash[hashValue] = &indexTimePair{idx, entry.lastSec}
 | 
			
		||||
		delete(v.userHash, hashValueRemoval)
 | 
			
		||||
		v.Unlock()
 | 
			
		||||
 | 
			
		||||
		entry.lastSec++
 | 
			
		||||
		entry.lastSecRemoval++
 | 
			
		||||
| 
						 | 
				
			
			@ -107,9 +100,11 @@ func (v *TimedUserValidator) updateUserHash(interval time.Duration) {
 | 
			
		|||
		select {
 | 
			
		||||
		case now := <-time.After(interval):
 | 
			
		||||
			nowSec := protocol.Timestamp(now.Unix() + cacheDurationSec)
 | 
			
		||||
			v.Lock()
 | 
			
		||||
			for _, entry := range v.ids {
 | 
			
		||||
				v.generateNewHashes(nowSec, entry.userIdx, entry)
 | 
			
		||||
			}
 | 
			
		||||
			v.Unlock()
 | 
			
		||||
		case <-v.cancel.WaitForCancel():
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -117,6 +112,9 @@ func (v *TimedUserValidator) updateUserHash(interval time.Duration) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
func (v *TimedUserValidator) Add(user *protocol.User) error {
 | 
			
		||||
	v.Lock()
 | 
			
		||||
	defer v.Unlock()
 | 
			
		||||
 | 
			
		||||
	idx := len(v.validUsers)
 | 
			
		||||
	v.validUsers = append(v.validUsers, user)
 | 
			
		||||
	rawAccount, err := user.GetTypedAccount()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue