소스 검색

prevention of preparing packet more than once (may have been only encrypted/compressed, don't need to run in again)

Image 2 년 전
부모
커밋
64ac76a681
1개의 변경된 파일5개의 추가작업 그리고 2개의 파일을 삭제
  1. 5 2
      EQ2/source/common/EQStream.cpp

+ 5 - 2
EQ2/source/common/EQStream.cpp

@@ -915,7 +915,10 @@ void EQStream::PreparePacket(EQ2Packet* app, int8 offset){
 	printf( "Before A in %s, line %i:\n", __FUNCTION__, __LINE__);
 	DumpPacket(app);
 #endif
-	if(!app->packet_prepared){
+	if(app->eq2_compressed || app->packet_encrypted) {
+		return;
+	}
+	else if(!app->packet_prepared){
 		if(app->PreparePacket(MaxLen) == 255) //invalid version
 			return;
 	}
@@ -934,7 +937,7 @@ void EQStream::PreparePacket(EQ2Packet* app, int8 offset){
 		if (compressed_offset)
 			app->eq2_compressed = true;
 	}
-	if(!app->packet_encrypted){
+	if(StreamType!=UnknownStream && !app->packet_encrypted){
 		EncryptPacket(app, compressed_offset, offset);
 		if(app->size > 2 && app->pBuffer[2] == 0){
 			uchar* new_buffer = new uchar[app->size+1];