@ -116,12 +116,13 @@ static int LuaStreamingLogger(ThreadVars *tv, void *thread_data, const Flow *f,
SCEnter ( ) ;
void * txptr = NULL ;
LuaStreamingBuffer b = { data , data_len , flags } ;
SCLogDebug ( " flags %02x " , flags ) ;
if ( flags & OUTPUT_STREAMING_FLAG_TRANSACTION ) {
if ( f & & f - > alstate )
txptr = AppLayerParserGetTx ( f - > proto , ALPROTO_HTTP , f - > alstate , tx_id ) ;
txptr = AppLayerParserGetTx ( f - > proto , f- > alproto , f - > alstate , tx_id ) ;
}
LogLuaThreadCtx * td = ( LogLuaThreadCtx * ) thread_data ;
@ -129,13 +130,17 @@ static int LuaStreamingLogger(ThreadVars *tv, void *thread_data, const Flow *f,
SCMutexLock ( & td - > lua_ctx - > m ) ;
LuaStateSetThreadVars ( td - > lua_ctx - > luastate , tv ) ;
LuaStateSetTX ( td - > lua_ctx - > luastate , txptr ) ;
if ( flags & OUTPUT_STREAMING_FLAG_TRANSACTION )
LuaStateSetTX ( td - > lua_ctx - > luastate , txptr ) ;
LuaStateSetFlow ( td - > lua_ctx - > luastate , ( Flow * ) f , /* locked */ LUA_FLOW_LOCKED_BY_PARENT ) ;
LuaStateSetStreamingBuffer ( td - > lua_ctx - > luastate , & b ) ;
/* prepare data to pass to script */
lua_getglobal ( td - > lua_ctx - > luastate , " log " ) ;
lua_newtable ( td - > lua_ctx - > luastate ) ;
LogLuaPushTableKeyValueInt ( td - > lua_ctx - > luastate , " tx_id " , ( int ) ( tx_id ) ) ;
if ( flags & OUTPUT_STREAMING_FLAG_TRANSACTION )
LogLuaPushTableKeyValueInt ( td - > lua_ctx - > luastate , " tx_id " , ( int ) ( tx_id ) ) ;
int retval = lua_pcall ( td - > lua_ctx - > luastate , 1 , 0 , 0 ) ;
if ( retval ! = 0 ) {
@ -611,7 +616,10 @@ static OutputCtx *OutputLuaLogInit(ConfNode *conf)
om - > conf_name = script - > val ;
om - > InitSubFunc = OutputLuaLogInitSub ;
if ( opts . alproto = = ALPROTO_HTTP ) {
if ( opts . alproto = = ALPROTO_HTTP & & opts . streaming ) {
om - > StreamingLogFunc = LuaStreamingLogger ;
om - > alproto = ALPROTO_HTTP ;
} else if ( opts . alproto = = ALPROTO_HTTP ) {
om - > TxLogFunc = LuaTxLogger ;
om - > alproto = ALPROTO_HTTP ;
} else if ( opts . packet & & opts . alerts ) {