<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="generator" content="Osso Notes">
<title></title></head>
<body>
<p>----- Original message -----
<br>> On 11/17/2012 09:00 AM, Balazs Scheidler wrote:
<br>> > dbparser: support inheriting properties in a corellation action
<br>> >
<br>> > I merged this one, although I have some doubts. It uses
<br>> > log_msg_clone_cow(), which does have some tricky semantics, as it
<br>> > assumes that the cloned message will not change, once cloned.
<br>> >
<br>> > I was thinking about removing clone_cow() completely because of this
<br>> > tricky stuff, and whenever we need a clone we're about to change the
<br>> > LogMessage anyway, and delaying the actual change means that we have
<br>> > to do two malloc() calls, instead of one.
<br>> >
<br>> > Can you test whether changing the message that triggered the action
<br>> > with a rewrite rule, keeps the cloned one intact? This would need a
<br>> > parallel path to the db-parser().
<br>> It seems, that log_msg_clone_cow write protects the original log
<br>> message, so trying to do a log_msg_set_value on the original message
<br>> will result in an assertion. Sorry I didn't realize this when doing the
<br>> original patch, explicitly copying all the name-value pairs seemed
<br>> inefficient, but this behaviour is not desirable. Should I rework the
<br>> patch this way or is there a better way of doing it?
<br>>
<br>
<br>I'd drop clone_cow() now, and implement a proper clone that allocates the logmsg header and nvtable in a single block, and copies everything through.
<br>
<br>that way clone+change becomes cheaper and you got a clone call that works in this case too.</p>
</body>
</html>