|  | @@ -240,7 +240,16 @@ func (v *ServerSession) DecodeRequestBody(request *protocol.RequestHeader, reade
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  	if request.Security.Is(protocol.SecurityType_NONE) {
 |  |  	if request.Security.Is(protocol.SecurityType_NONE) {
 | 
											
												
													
														|  |  		if request.Option.Has(protocol.RequestOptionChunkStream) {
 |  |  		if request.Option.Has(protocol.RequestOptionChunkStream) {
 | 
											
												
													
														|  | -			return crypto.NewChunkStreamReader(sizeParser, reader)
 |  | 
 | 
											
												
													
														|  | 
 |  | +			if request.Command == protocol.RequestCommandTCP {
 | 
											
												
													
														|  | 
 |  | +				return crypto.NewChunkStreamReader(sizeParser, reader)
 | 
											
												
													
														|  | 
 |  | +			}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +			auth := &crypto.AEADAuthenticator{
 | 
											
												
													
														|  | 
 |  | +				AEAD:                    new(NoOpAuthenticator),
 | 
											
												
													
														|  | 
 |  | +				NonceGenerator:          crypto.NoOpBytesGenerator{},
 | 
											
												
													
														|  | 
 |  | +				AdditionalDataGenerator: crypto.NoOpBytesGenerator{},
 | 
											
												
													
														|  | 
 |  | +			}
 | 
											
												
													
														|  | 
 |  | +			return crypto.NewAuthenticationReader(auth, sizeParser, reader, crypto.ModePacket)
 | 
											
												
													
														|  |  		}
 |  |  		}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  		return buf.NewReader(reader)
 |  |  		return buf.NewReader(reader)
 | 
											
										
											
												
													
														|  | @@ -255,7 +264,7 @@ func (v *ServerSession) DecodeRequestBody(request *protocol.RequestHeader, reade
 | 
											
												
													
														|  |  				NonceGenerator:          crypto.NoOpBytesGenerator{},
 |  |  				NonceGenerator:          crypto.NoOpBytesGenerator{},
 | 
											
												
													
														|  |  				AdditionalDataGenerator: crypto.NoOpBytesGenerator{},
 |  |  				AdditionalDataGenerator: crypto.NoOpBytesGenerator{},
 | 
											
												
													
														|  |  			}
 |  |  			}
 | 
											
												
													
														|  | -			return crypto.NewAuthenticationReader(auth, sizeParser, cryptionReader)
 |  | 
 | 
											
												
													
														|  | 
 |  | +			return crypto.NewAuthenticationReader(auth, sizeParser, cryptionReader, GetStreamMode(request))
 | 
											
												
													
														|  |  		}
 |  |  		}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  		return buf.NewReader(cryptionReader)
 |  |  		return buf.NewReader(cryptionReader)
 | 
											
										
											
												
													
														|  | @@ -273,7 +282,7 @@ func (v *ServerSession) DecodeRequestBody(request *protocol.RequestHeader, reade
 | 
											
												
													
														|  |  			},
 |  |  			},
 | 
											
												
													
														|  |  			AdditionalDataGenerator: crypto.NoOpBytesGenerator{},
 |  |  			AdditionalDataGenerator: crypto.NoOpBytesGenerator{},
 | 
											
												
													
														|  |  		}
 |  |  		}
 | 
											
												
													
														|  | -		return crypto.NewAuthenticationReader(auth, sizeParser, reader)
 |  | 
 | 
											
												
													
														|  | 
 |  | +		return crypto.NewAuthenticationReader(auth, sizeParser, reader, GetStreamMode(request))
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	if request.Security.Is(protocol.SecurityType_CHACHA20_POLY1305) {
 |  |  	if request.Security.Is(protocol.SecurityType_CHACHA20_POLY1305) {
 | 
											
										
											
												
													
														|  | @@ -287,7 +296,7 @@ func (v *ServerSession) DecodeRequestBody(request *protocol.RequestHeader, reade
 | 
											
												
													
														|  |  			},
 |  |  			},
 | 
											
												
													
														|  |  			AdditionalDataGenerator: crypto.NoOpBytesGenerator{},
 |  |  			AdditionalDataGenerator: crypto.NoOpBytesGenerator{},
 | 
											
												
													
														|  |  		}
 |  |  		}
 | 
											
												
													
														|  | -		return crypto.NewAuthenticationReader(auth, sizeParser, reader)
 |  | 
 | 
											
												
													
														|  | 
 |  | +		return crypto.NewAuthenticationReader(auth, sizeParser, reader, GetStreamMode(request))
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	panic("Unknown security type.")
 |  |  	panic("Unknown security type.")
 | 
											
										
											
												
													
														|  | @@ -317,7 +326,16 @@ func (v *ServerSession) EncodeResponseBody(request *protocol.RequestHeader, writ
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  	if request.Security.Is(protocol.SecurityType_NONE) {
 |  |  	if request.Security.Is(protocol.SecurityType_NONE) {
 | 
											
												
													
														|  |  		if request.Option.Has(protocol.RequestOptionChunkStream) {
 |  |  		if request.Option.Has(protocol.RequestOptionChunkStream) {
 | 
											
												
													
														|  | -			return crypto.NewChunkStreamWriter(sizeParser, writer)
 |  | 
 | 
											
												
													
														|  | 
 |  | +			if request.Command == protocol.RequestCommandTCP {
 | 
											
												
													
														|  | 
 |  | +				return crypto.NewChunkStreamWriter(sizeParser, writer)
 | 
											
												
													
														|  | 
 |  | +			}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +			auth := &crypto.AEADAuthenticator{
 | 
											
												
													
														|  | 
 |  | +				AEAD:                    new(NoOpAuthenticator),
 | 
											
												
													
														|  | 
 |  | +				NonceGenerator:          &crypto.NoOpBytesGenerator{},
 | 
											
												
													
														|  | 
 |  | +				AdditionalDataGenerator: crypto.NoOpBytesGenerator{},
 | 
											
												
													
														|  | 
 |  | +			}
 | 
											
												
													
														|  | 
 |  | +			return crypto.NewAuthenticationWriter(auth, sizeParser, writer, crypto.ModePacket)
 | 
											
												
													
														|  |  		}
 |  |  		}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  		return buf.NewWriter(writer)
 |  |  		return buf.NewWriter(writer)
 | 
											
										
											
												
													
														|  | @@ -330,7 +348,7 @@ func (v *ServerSession) EncodeResponseBody(request *protocol.RequestHeader, writ
 | 
											
												
													
														|  |  				NonceGenerator:          crypto.NoOpBytesGenerator{},
 |  |  				NonceGenerator:          crypto.NoOpBytesGenerator{},
 | 
											
												
													
														|  |  				AdditionalDataGenerator: crypto.NoOpBytesGenerator{},
 |  |  				AdditionalDataGenerator: crypto.NoOpBytesGenerator{},
 | 
											
												
													
														|  |  			}
 |  |  			}
 | 
											
												
													
														|  | -			return crypto.NewAuthenticationWriter(auth, sizeParser, v.responseWriter)
 |  | 
 | 
											
												
													
														|  | 
 |  | +			return crypto.NewAuthenticationWriter(auth, sizeParser, v.responseWriter, GetStreamMode(request))
 | 
											
												
													
														|  |  		}
 |  |  		}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  		return buf.NewWriter(v.responseWriter)
 |  |  		return buf.NewWriter(v.responseWriter)
 | 
											
										
											
												
													
														|  | @@ -348,7 +366,7 @@ func (v *ServerSession) EncodeResponseBody(request *protocol.RequestHeader, writ
 | 
											
												
													
														|  |  			},
 |  |  			},
 | 
											
												
													
														|  |  			AdditionalDataGenerator: crypto.NoOpBytesGenerator{},
 |  |  			AdditionalDataGenerator: crypto.NoOpBytesGenerator{},
 | 
											
												
													
														|  |  		}
 |  |  		}
 | 
											
												
													
														|  | -		return crypto.NewAuthenticationWriter(auth, sizeParser, writer)
 |  | 
 | 
											
												
													
														|  | 
 |  | +		return crypto.NewAuthenticationWriter(auth, sizeParser, writer, GetStreamMode(request))
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	if request.Security.Is(protocol.SecurityType_CHACHA20_POLY1305) {
 |  |  	if request.Security.Is(protocol.SecurityType_CHACHA20_POLY1305) {
 | 
											
										
											
												
													
														|  | @@ -362,7 +380,7 @@ func (v *ServerSession) EncodeResponseBody(request *protocol.RequestHeader, writ
 | 
											
												
													
														|  |  			},
 |  |  			},
 | 
											
												
													
														|  |  			AdditionalDataGenerator: crypto.NoOpBytesGenerator{},
 |  |  			AdditionalDataGenerator: crypto.NoOpBytesGenerator{},
 | 
											
												
													
														|  |  		}
 |  |  		}
 | 
											
												
													
														|  | -		return crypto.NewAuthenticationWriter(auth, sizeParser, writer)
 |  | 
 | 
											
												
													
														|  | 
 |  | +		return crypto.NewAuthenticationWriter(auth, sizeParser, writer, GetStreamMode(request))
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	panic("Unknown security type.")
 |  |  	panic("Unknown security type.")
 |