| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -2992,24 +2992,6 @@ static void *HTPStateGetTx(void *alstate, uint64_t tx_id)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        return NULL;
 | 
					 | 
					 | 
					 | 
					        return NULL;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static void HTPStateSetTxLogged(void *alstate, void *vtx, LoggerId bits)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					{
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    htp_tx_t *tx = (htp_tx_t *)vtx;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    HtpTxUserData *tx_ud = (HtpTxUserData *) htp_tx_get_user_data(tx);
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (tx_ud)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        tx_ud->logged = bits;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static LoggerId HTPStateGetTxLogged(void *alstate, void *vtx)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					{
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    htp_tx_t *tx = (htp_tx_t *)vtx;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    HtpTxUserData *tx_ud = (HtpTxUserData *) htp_tx_get_user_data(tx);
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (tx_ud != NULL)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        return tx_ud->logged;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    return 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static int HTPStateGetAlstateProgressCompletionStatus(uint8_t direction)
 | 
					 | 
					 | 
					 | 
					static int HTPStateGetAlstateProgressCompletionStatus(uint8_t direction)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					{
 | 
					 | 
					 | 
					 | 
					{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    return (direction & STREAM_TOSERVER) ? HTP_REQUEST_COMPLETE : HTP_RESPONSE_COMPLETE;
 | 
					 | 
					 | 
					 | 
					    return (direction & STREAM_TOSERVER) ? HTP_REQUEST_COMPLETE : HTP_RESPONSE_COMPLETE;
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -3073,37 +3055,14 @@ static int HTPSetTxDetectState(void *vtx, DetectEngineState *s)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    return 0;
 | 
					 | 
					 | 
					 | 
					    return 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static uint64_t HTPGetTxDetectFlags(void *vtx, uint8_t dir)
 | 
					 | 
					 | 
					 | 
					static AppLayerTxData *HTPGetTxData(void *vtx)
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					{
 | 
					 | 
					 | 
					 | 
					{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    htp_tx_t *tx = (htp_tx_t *)vtx;
 | 
					 | 
					 | 
					 | 
					    htp_tx_t *tx = (htp_tx_t *)vtx;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    HtpTxUserData *tx_ud = htp_tx_get_user_data(tx);
 | 
					 | 
					 | 
					 | 
					    HtpTxUserData *tx_ud = htp_tx_get_user_data(tx);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (tx_ud) {
 | 
					 | 
					 | 
					 | 
					    if (tx_ud) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if (dir & STREAM_TOSERVER) {
 | 
					 | 
					 | 
					 | 
					        return &tx_ud->tx_data;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            return tx_ud->detect_flags_ts;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } else {
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            return tx_ud->detect_flags_tc;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        }
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    return 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static void HTPSetTxDetectFlags(void *vtx, uint8_t dir, uint64_t detect_flags)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					{
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    htp_tx_t *tx = (htp_tx_t *)vtx;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    HtpTxUserData *tx_ud = htp_tx_get_user_data(tx);
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (tx_ud == NULL) {
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        tx_ud = HTPMalloc(sizeof(*tx_ud));
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if (unlikely(tx_ud == NULL))
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            return;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        memset(tx_ud, 0, sizeof(*tx_ud));
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        htp_tx_set_user_data(tx, tx_ud);
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (dir & STREAM_TOSERVER) {
 | 
					 | 
					 | 
					 | 
					    return NULL;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        tx_ud->detect_flags_ts = detect_flags;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } else {
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        tx_ud->detect_flags_tc = detect_flags;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    return;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static int HTPRegisterPatternsForProtocolDetection(void)
 | 
					 | 
					 | 
					 | 
					static int HTPRegisterPatternsForProtocolDetection(void)
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -3182,8 +3141,6 @@ void RegisterHTPParsers(void)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        AppLayerParserRegisterGetStateProgressFunc(IPPROTO_TCP, ALPROTO_HTTP, HTPStateGetAlstateProgress);
 | 
					 | 
					 | 
					 | 
					        AppLayerParserRegisterGetStateProgressFunc(IPPROTO_TCP, ALPROTO_HTTP, HTPStateGetAlstateProgress);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        AppLayerParserRegisterGetTxCnt(IPPROTO_TCP, ALPROTO_HTTP, HTPStateGetTxCnt);
 | 
					 | 
					 | 
					 | 
					        AppLayerParserRegisterGetTxCnt(IPPROTO_TCP, ALPROTO_HTTP, HTPStateGetTxCnt);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        AppLayerParserRegisterGetTx(IPPROTO_TCP, ALPROTO_HTTP, HTPStateGetTx);
 | 
					 | 
					 | 
					 | 
					        AppLayerParserRegisterGetTx(IPPROTO_TCP, ALPROTO_HTTP, HTPStateGetTx);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        AppLayerParserRegisterLoggerFuncs(IPPROTO_TCP, ALPROTO_HTTP, HTPStateGetTxLogged,
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                          HTPStateSetTxLogged);
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        AppLayerParserRegisterGetStateProgressCompletionStatus(ALPROTO_HTTP,
 | 
					 | 
					 | 
					 | 
					        AppLayerParserRegisterGetStateProgressCompletionStatus(ALPROTO_HTTP,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                                               HTPStateGetAlstateProgressCompletionStatus);
 | 
					 | 
					 | 
					 | 
					                                                               HTPStateGetAlstateProgressCompletionStatus);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        AppLayerParserRegisterGetEventsFunc(IPPROTO_TCP, ALPROTO_HTTP, HTPGetEvents);
 | 
					 | 
					 | 
					 | 
					        AppLayerParserRegisterGetEventsFunc(IPPROTO_TCP, ALPROTO_HTTP, HTPGetEvents);
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -3193,8 +3150,7 @@ void RegisterHTPParsers(void)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        AppLayerParserRegisterTruncateFunc(IPPROTO_TCP, ALPROTO_HTTP, HTPStateTruncate);
 | 
					 | 
					 | 
					 | 
					        AppLayerParserRegisterTruncateFunc(IPPROTO_TCP, ALPROTO_HTTP, HTPStateTruncate);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        AppLayerParserRegisterDetectStateFuncs(IPPROTO_TCP, ALPROTO_HTTP,
 | 
					 | 
					 | 
					 | 
					        AppLayerParserRegisterDetectStateFuncs(IPPROTO_TCP, ALPROTO_HTTP,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                               HTPGetTxDetectState, HTPSetTxDetectState);
 | 
					 | 
					 | 
					 | 
					                                               HTPGetTxDetectState, HTPSetTxDetectState);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        AppLayerParserRegisterDetectFlagsFuncs(IPPROTO_TCP, ALPROTO_HTTP,
 | 
					 | 
					 | 
					 | 
					        AppLayerParserRegisterTxDataFunc(IPPROTO_TCP, ALPROTO_HTTP, HTPGetTxData);
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                               HTPGetTxDetectFlags, HTPSetTxDetectFlags);
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        AppLayerParserRegisterSetStreamDepthFlag(IPPROTO_TCP, ALPROTO_HTTP,
 | 
					 | 
					 | 
					 | 
					        AppLayerParserRegisterSetStreamDepthFlag(IPPROTO_TCP, ALPROTO_HTTP,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                                 AppLayerHtpSetStreamDepthFlag);
 | 
					 | 
					 | 
					 | 
					                                                 AppLayerHtpSetStreamDepthFlag);
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
 
 |