fix CreateBackend function - the way that the right backend was chosen & backends were initialized did not make sense...

This commit is contained in:
Bernhard Amann 2012-02-06 13:15:01 -08:00
parent 115e6a18b4
commit f76bbf01a4

View file

@ -142,12 +142,12 @@ WriterBackend* Manager::CreateBackend(WriterFrontend* frontend, bro_int_t type)
return 0; return 0;
} }
if ( ld->type == type ) if ( ld->type != type )
break; {
// no, didn't find the right one...
if ( ! ld->factory ) ++ld;
// Oops, we can't instantiate this guy. continue;
return 0; }
// If the writer has an init function, call it. // If the writer has an init function, call it.
if ( ld->init ) if ( ld->init )
@ -157,17 +157,24 @@ WriterBackend* Manager::CreateBackend(WriterFrontend* frontend, bro_int_t type)
// call it again later. // call it again later.
ld->init = 0; ld->init = 0;
else else
{
// Init failed, disable by deleting factory // Init failed, disable by deleting factory
// function. // function.
ld->factory = 0; ld->factory = 0;
DBG_LOG(DBG_LOGGING, "failed to init writer class %s", DBG_LOG(DBG_LOGGING, "failed to init writer class %s",
ld->name); ld->name);
return false; return false;
}
} }
++ld; if ( ! ld->factory )
// Oops, we can't instantiate this guy.
return 0;
// all done. break.
break;
} }
assert(ld->factory); assert(ld->factory);