]> git.ipfire.org Git - thirdparty/knot-resolver.git/log
thirdparty/knot-resolver.git
9 years agosubmodules: synced deckard
Marek Vavruša [Wed, 25 Nov 2015 13:46:33 +0000 (14:46 +0100)] 
submodules: synced deckard

9 years agotests: make sure the deckard submodules are checked
Marek Vavruša [Tue, 24 Nov 2015 22:11:10 +0000 (23:11 +0100)] 
tests: make sure the deckard submodules are checked

9 years agobuild: cleanup, no python deps
Marek Vavruša [Tue, 24 Nov 2015 21:59:34 +0000 (22:59 +0100)] 
build: cleanup, no python deps

9 years agoscripts: updated bootstrap script
Marek Vavruša [Tue, 24 Nov 2015 21:43:22 +0000 (22:43 +0100)] 
scripts: updated bootstrap script

9 years agotravis: run tests in parallel
Marek Vavruša [Tue, 24 Nov 2015 19:00:50 +0000 (20:00 +0100)] 
travis: run tests in parallel

9 years agolib/nsrep: do not penalize name failures, no empty NSLIST leaders
Marek Vavruša [Tue, 24 Nov 2015 19:00:11 +0000 (20:00 +0100)] 
lib/nsrep: do not penalize name failures, no empty NSLIST leaders

if the NSLIST already has a candidate with addresses, never replace
current leader with an empty one. otherwise if the former leader address
was tried and failed, new empty leader would be blamed for this and
penalized

9 years agotests: use makefile from deckard, cleanup
Marek Vavruša [Tue, 24 Nov 2015 17:15:15 +0000 (18:15 +0100)] 
tests: use makefile from deckard, cleanup

9 years agobuild: travis cleanup
Marek Vavruša [Tue, 24 Nov 2015 16:50:43 +0000 (17:50 +0100)] 
build: travis cleanup

9 years agodaemon/lua: doc cleanup, todname() call
Marek Vavruša [Tue, 24 Nov 2015 15:02:01 +0000 (16:02 +0100)] 
daemon/lua: doc cleanup, todname() call

policy has policy.todnames() for table of names

9 years agobuild: install resources as 0644
Marek Vavruša [Sat, 21 Nov 2015 11:52:46 +0000 (12:52 +0100)] 
build: install resources as 0644

9 years agoscripts: pip depends v1.0.0-beta2
Marek Vavruša [Fri, 20 Nov 2015 10:19:32 +0000 (11:19 +0100)] 
scripts: pip depends

9 years agoscripts: updated bootstrap script
Marek Vavruša [Fri, 20 Nov 2015 10:12:04 +0000 (11:12 +0100)] 
scripts: updated bootstrap script

9 years agoMerge branch 'deckard'
Marek Vavruša [Thu, 19 Nov 2015 18:22:11 +0000 (19:22 +0100)] 
Merge branch 'deckard'

9 years agotests: clean up paths
Marek Vavruša [Thu, 19 Nov 2015 18:21:05 +0000 (19:21 +0100)] 
tests: clean up paths

9 years agotests: cleanup
Marek Vavruša [Thu, 19 Nov 2015 18:17:27 +0000 (19:17 +0100)] 
tests: cleanup

9 years agotests: fixed deckard integration, doc, travis
Marek Vavruša [Thu, 19 Nov 2015 18:02:28 +0000 (19:02 +0100)] 
tests: fixed deckard integration, doc, travis

9 years agoMerge branch 'master' into deckard
Marek Vavruša [Thu, 19 Nov 2015 17:46:18 +0000 (18:46 +0100)] 
Merge branch 'master' into deckard

9 years agolib/validate: fixed missing DS check when parent is signed, child not on same NS
Marek Vavruša [Thu, 19 Nov 2015 14:41:23 +0000 (15:41 +0100)] 
lib/validate: fixed missing DS check when parent is signed, child not on same NS

refs #33

9 years agolib/iterate: scrub dnssec data from authority when not requested
Marek Vavruša [Thu, 19 Nov 2015 12:45:50 +0000 (13:45 +0100)] 
lib/iterate: scrub dnssec data from authority when not requested

refs #33

9 years agotests: integration tests with deckard
Grigorii Demidov [Thu, 19 Nov 2015 12:26:46 +0000 (13:26 +0100)] 
tests: integration tests with deckard

9 years agolib/zonecut: clear TA if its NS isn't cached
Marek Vavruša [Wed, 18 Nov 2015 16:29:49 +0000 (17:29 +0100)] 
lib/zonecut: clear TA if its NS isn't cached

this fixes a bug when NS drops out of cache, but it's TA not,
so i.e. we end up with TA 'cz' and NS in '.', but we need the root TA

9 years agolib/resolve: root zone is always encloser
Marek Vavruša [Wed, 18 Nov 2015 16:12:47 +0000 (17:12 +0100)] 
lib/resolve: root zone is always encloser

bad control flow, the zone cut should be checked for root, as the second
condition checks if SNAME is at/below cut so the outcome is the same for
root query

9 years agolib/zonecut: copy qname for cut lookup, as it may overlap replaced cut
Marek Vavruša [Wed, 18 Nov 2015 15:43:52 +0000 (16:43 +0100)] 
lib/zonecut: copy qname for cut lookup, as it may overlap replaced cut

9 years agomodules/dns64: bad expectation of ffi.copy semantics
Marek Vavruša [Wed, 18 Nov 2015 11:51:08 +0000 (12:51 +0100)] 
modules/dns64: bad expectation of ffi.copy semantics

the copy doesn't take cdata length into account, but measures string len

refs #43

9 years agodaemon/worker: poison contents of mempools on freelists
Marek Vavruša [Wed, 18 Nov 2015 11:51:43 +0000 (12:51 +0100)] 
daemon/worker: poison contents of mempools on freelists

9 years agolib/cache: missing name check for kr_cache_rank_peek
Marek Vavruša [Wed, 18 Nov 2015 08:24:21 +0000 (09:24 +0100)] 
lib/cache: missing name check for kr_cache_rank_peek

refs #43

9 years agomodules: avoid ffi.new in hotpath
Marek Vavruša [Tue, 17 Nov 2015 22:20:46 +0000 (23:20 +0100)] 
modules: avoid ffi.new in hotpath

this fixes a bug when a text-declared type wasn’t reused and LJ eventually segfaulted in ffi.new after a lot of redeclarations

9 years agobuild: set ARCH from CC, bump version to beta2
Marek Vavruša [Tue, 17 Nov 2015 21:41:21 +0000 (22:41 +0100)] 
build: set ARCH from CC, bump version to beta2

9 years agobuild: enable Go modules on amd64 only
Marek Vavruša [Tue, 17 Nov 2015 21:17:36 +0000 (22:17 +0100)] 
build: enable Go modules on amd64 only

the current Go doesn’t support c-shared on other architectures than amd64

9 years agomodules: dns64 checks for records, all response status
Marek Vavruša [Tue, 17 Nov 2015 21:07:44 +0000 (22:07 +0100)] 
modules: dns64 checks for records, all response status

fixes #42

9 years agolib: initialize null qsource for resolver-initiated queries
Marek Vavruša [Tue, 17 Nov 2015 20:43:38 +0000 (21:43 +0100)] 
lib: initialize null qsource for resolver-initiated queries

fixes #41

9 years agodoc: grammar
Marek Vavruša [Mon, 16 Nov 2015 20:52:53 +0000 (21:52 +0100)] 
doc: grammar

9 years agolib/utils: clear rrcounts in packet recycle
Marek Vavruša [Mon, 16 Nov 2015 20:44:10 +0000 (21:44 +0100)] 
lib/utils: clear rrcounts in packet recycle

9 years agomodules: renumber module
Marek Vavruša [Mon, 16 Nov 2015 20:43:55 +0000 (21:43 +0100)] 
modules: renumber module

this module allows to rewrite address ranges in answers to different address ranges specified in configuration

9 years agolib/nsrep: use other NS addresses as alternative
Marek Vavruša [Sun, 15 Nov 2015 11:51:14 +0000 (12:51 +0100)] 
lib/nsrep: use other NS addresses as alternative

this allows daemon to try other NSs for fast retransmit if the best chosen NS doesn’t respond within time limit

9 years agodaemon: fixed leaking TCP handles when timeouted
Marek Vavruša [Sun, 15 Nov 2015 11:29:31 +0000 (12:29 +0100)] 
daemon: fixed leaking TCP handles when timeouted

9 years agodaemon: fast retransmit address selection
Marek Vavruša [Thu, 12 Nov 2015 18:16:18 +0000 (19:16 +0100)] 
daemon: fast retransmit address selection

instead of single I/O request per step, the daemon now retries
all addresses in the selection with 300ms timeout between tries.
there are len(list) + len(list)/2 tries

the idea is to reduce latency when UDP request doesn't punch through,
or some NSs are overwhelmed/faulty

9 years agodaemon/lua: pkt:clear(), pkt:question()
Marek Vavruša [Fri, 13 Nov 2015 15:02:13 +0000 (16:02 +0100)] 
daemon/lua: pkt:clear(), pkt:question()

9 years agolib/iterate: always copy to final answer
Marek Vavruša [Fri, 13 Nov 2015 14:55:12 +0000 (15:55 +0100)] 
lib/iterate: always copy to final answer

RRs may be touched after resolution completion, this copies RR from
temporary per-recv buffer to answer, which is persistent for the whole
duration of request

9 years agomodules/tinyweb: cleanup on exit
Marek Vavruša [Fri, 13 Nov 2015 12:43:06 +0000 (13:43 +0100)] 
modules/tinyweb: cleanup on exit

9 years agolib/daemon: address sanitizer annotated poisoning
Marek Vavruša [Fri, 13 Nov 2015 12:42:55 +0000 (13:42 +0100)] 
lib/daemon: address sanitizer annotated poisoning

if the library or daemon is compiled with address sanitizer, objects in
freelists are poisoned to detect use-after-recycle errors
it is not currently used in the library, as there are no freelists

9 years agodaemon: fixed leak on resolve()
Marek Vavruša [Fri, 13 Nov 2015 12:41:00 +0000 (13:41 +0100)] 
daemon: fixed leak on resolve()

9 years agolib/dnssec: always check wildcard expansion proof
Marek Vavruša [Thu, 12 Nov 2015 17:36:33 +0000 (18:36 +0100)] 
lib/dnssec: always check wildcard expansion proof

refs #33

9 years agodoc: cleanup
Marek Vavruša [Thu, 12 Nov 2015 16:58:45 +0000 (17:58 +0100)] 
doc: cleanup

9 years agoMerge remote-tracking branch 'origin/stubmode'
Marek Vavruša [Thu, 12 Nov 2015 16:57:05 +0000 (17:57 +0100)] 
Merge remote-tracking branch 'origin/stubmode'

9 years agomodules/tinyweb: simplified without channels
Marek Vavruša [Thu, 12 Nov 2015 16:55:39 +0000 (17:55 +0100)] 
modules/tinyweb: simplified without channels

9 years agolib: cleanup unused variable
Marek Vavruša [Thu, 12 Nov 2015 16:55:13 +0000 (17:55 +0100)] 
lib: cleanup unused variable

9 years agodaemon: cleanup rr scanning
Marek Vavruša [Thu, 12 Nov 2015 16:54:53 +0000 (17:54 +0100)] 
daemon: cleanup rr scanning

9 years agodaemon: use writemap to work around latency when busy
Marek Vavruša [Thu, 12 Nov 2015 16:54:17 +0000 (17:54 +0100)] 
daemon: use writemap to work around latency when busy

9 years agomodules/tinyweb: added favicon
Marek Vavruša [Thu, 5 Nov 2015 09:57:55 +0000 (10:57 +0100)] 
modules/tinyweb: added favicon

9 years agolib/rrcache: handle qname/cname traversal when it fails
Marek Vavruša [Tue, 3 Nov 2015 16:08:36 +0000 (17:08 +0100)] 
lib/rrcache: handle qname/cname traversal when it fails

9 years agolib/resolve: do not do root priming in hotpath
Marek Vavruša [Tue, 3 Nov 2015 14:36:55 +0000 (15:36 +0100)] 
lib/resolve: do not do root priming in hotpath

refs #16

9 years agodaemon: fixed race condition when canceling one event multiple times
Marek Vavruša [Tue, 3 Nov 2015 14:32:33 +0000 (15:32 +0100)] 
daemon: fixed race condition when canceling one event multiple times

9 years agobuild: removed libknot vercheck, .pc fail with this
Marek Vavruša [Thu, 29 Oct 2015 13:32:23 +0000 (14:32 +0100)] 
build: removed libknot vercheck, .pc fail with this

9 years agodnssec/signature: fixed cid#131821
Marek Vavruša [Thu, 29 Oct 2015 13:16:37 +0000 (14:16 +0100)] 
dnssec/signature: fixed cid#131821

9 years agodnssec/nsec3: fixed cid#131822 and cid#131820
Marek Vavruša [Thu, 29 Oct 2015 13:16:18 +0000 (14:16 +0100)] 
dnssec/nsec3: fixed cid#131822 and cid#131820

9 years agodoc: added known packaged dependencies (incomplete)
Marek Vavruša [Wed, 28 Oct 2015 16:08:33 +0000 (17:08 +0100)] 
doc: added known packaged dependencies (incomplete)

9 years agobuild: added pkg-config version requirements to Makefile
Marek Vavruša [Wed, 28 Oct 2015 15:55:21 +0000 (16:55 +0100)] 
build: added pkg-config version requirements to Makefile

9 years agomodules/policy+view: new policy.FORWARD(dst) and policy.all matching rule
Marek Vavruša [Wed, 28 Oct 2015 15:38:24 +0000 (16:38 +0100)] 
modules/policy+view: new policy.FORWARD(dst) and policy.all matching rule

this is Unbound's 'forward-zone' on steroids

9 years agolib/resolve: stub resolution with predefined address
Marek Vavruša [Wed, 28 Oct 2015 15:33:27 +0000 (16:33 +0100)] 
lib/resolve: stub resolution with predefined address

the library is able to resolve query in stub mode (no referral chasing,
zone cut lookup) if asked to
validator turns off for stub queries, validating stub is NYI

9 years agolib/nsrep: force resolution with given NS address
Marek Vavruša [Wed, 28 Oct 2015 15:31:34 +0000 (16:31 +0100)] 
lib/nsrep: force resolution with given NS address

9 years agolib/validate: fixed NODATA proof when synthesised from * ENT
Marek Vavruša [Tue, 27 Oct 2015 23:15:13 +0000 (00:15 +0100)] 
lib/validate: fixed NODATA proof when synthesised from * ENT

thanks to Pieter Lexis and Peter van Dijk from PowerDNS for discovering this.

9 years agodnssec/nsec: removed a bunch of dead/cruft code, added comments
Marek Vavruša [Tue, 27 Oct 2015 23:12:07 +0000 (00:12 +0100)] 
dnssec/nsec: removed a bunch of dead/cruft code, added comments

9 years agodnssec/nsec: fixed name non-existence check
Marek Vavruša [Tue, 27 Oct 2015 23:10:36 +0000 (00:10 +0100)] 
dnssec/nsec: fixed name non-existence check

the RFC4035 M < S < N stands if the S isn’t after the last name in the zone, this is indicated by M > N, proving that the next of the last name is the first name; if the S is after M, then it proves it’s non-existence

thanks to Pieter Lexis and Peter van Dijk from PowerDNS for discovering this!

9 years agodaemon/lua: qry:resolved() and qry:final()
Marek Vavruša [Tue, 27 Oct 2015 23:07:37 +0000 (00:07 +0100)] 
daemon/lua: qry:resolved() and qry:final()

resolved() returns true if current query is resolved (i.e. authoritative)
final() returns true if current query is resolved and is not a subrequest (has no parent)

9 years agomodules/dns64: introduced module
Marek Vavruša [Tue, 27 Oct 2015 11:23:41 +0000 (12:23 +0100)] 
modules/dns64: introduced module

9 years agodaemon/lua: kr_query_t.name() includes last root label
Marek Vavruša [Tue, 27 Oct 2015 09:07:56 +0000 (10:07 +0100)] 
daemon/lua: kr_query_t.name() includes last root label

9 years agodaemon/lua: str2ip conversion function
Marek Vavruša [Tue, 27 Oct 2015 09:07:12 +0000 (10:07 +0100)] 
daemon/lua: str2ip conversion function

9 years agolib: request holds authority/additional RRs for finalization
Marek Vavruša [Tue, 27 Oct 2015 09:06:53 +0000 (10:06 +0100)] 
lib: request holds authority/additional RRs for finalization

as the libknot packet interface disallows out-of-order packet
writes, authority and additional records must be written after
the answer is complete; records in the rr arrays will be written to final answer during finalization

9 years agolib/cache: noted that rank is limited to 6 bits
Marek Vavruša [Tue, 27 Oct 2015 09:03:39 +0000 (10:03 +0100)] 
lib/cache: noted that rank is limited to 6 bits

9 years agomodules/tinyweb: border thickness
Marek Vavruša [Mon, 26 Oct 2015 15:18:08 +0000 (16:18 +0100)] 
modules/tinyweb: border thickness

9 years agomodules/tinyweb: zoomable
Marek Vavruša [Mon, 26 Oct 2015 15:14:17 +0000 (16:14 +0100)] 
modules/tinyweb: zoomable

9 years agomodules/tinyweb: population quantile for bracketing
Marek Vavruša [Mon, 26 Oct 2015 14:33:24 +0000 (15:33 +0100)] 
modules/tinyweb: population quantile for bracketing

this yields much better contrast in this situation, where
one country overshadows the rest on a linear scale

9 years agomodules/tinyweb: units, colouring
Marek Vavruša [Mon, 26 Oct 2015 14:26:17 +0000 (15:26 +0100)] 
modules/tinyweb: units, colouring

9 years agomodules/tinyweb: feed exports country code as well
Marek Vavruša [Mon, 26 Oct 2015 14:08:51 +0000 (15:08 +0100)] 
modules/tinyweb: feed exports country code as well

9 years agomodules/tinyweb: added legend, fill bracketing, updated map visualization
Marek Vavruša [Mon, 26 Oct 2015 14:07:44 +0000 (15:07 +0100)] 
modules/tinyweb: added legend, fill bracketing, updated map visualization

9 years agolib/resolve: consider only distance between cut-nonterm
Marek Vavruša [Sat, 24 Oct 2015 10:05:35 +0000 (12:05 +0200)] 
lib/resolve: consider only distance between cut-nonterm

9 years agomodules/tinyweb: improved axes on stats plot
Marek Vavruša [Fri, 23 Oct 2015 22:14:01 +0000 (00:14 +0200)] 
modules/tinyweb: improved axes on stats plot

9 years agomodules/tinyweb: updated Epoch to 0.8.3 (bugfixes)
Marek Vavruša [Fri, 23 Oct 2015 22:13:43 +0000 (00:13 +0200)] 
modules/tinyweb: updated Epoch to 0.8.3 (bugfixes)

9 years agolib/resolve: minim=off when there is NODATA between cached target/cut
Marek Vavruša [Fri, 23 Oct 2015 20:31:35 +0000 (22:31 +0200)] 
lib/resolve: minim=off when there is NODATA between cached target/cut

when resolver finds a zone cut from cache, it checks whether there is an empty non-terminal between target QNAME and cached zone cut.
this is indicated by presence of NODATA/NXDOMAIN in packet cache.
if it finds one, it turns off qname minimisation and continues,
this saves one query for empty non-term zones like ‘co.jp’

caveat: only direct child of the cut can be considered (e.g. ‘co.jp’ for ‘jp’), otherwise we would leak information to parent if the zone cut fell out of cache and NODATA existed

9 years agolib/cache: more granular control for rank check on insertion
Marek Vavruša [Fri, 23 Oct 2015 20:14:31 +0000 (22:14 +0200)] 
lib/cache: more granular control for rank check on insertion

for pktcache same or better rank is required (because it’s a direct answer)
for rrcache better rank is required (unless doing write-through)

for both cases, no cache rank check is needed when inserting secure data

security note: this mitigates possible non-auth NS hijacking

9 years agolib/zonecut: shuffle root NS list to lower a.root preference
Marek Vavruša [Fri, 23 Oct 2015 20:33:21 +0000 (22:33 +0200)] 
lib/zonecut: shuffle root NS list to lower a.root preference

reason: a root gives consistently unpredictable performance, which
we cannot take into consideration for the first start. j,k roots
moved to the front as they're everywhere and less loaded than a
swamped with requests from legacy tools

9 years agodoc: modules/tinyweb
Marek Vavruša [Thu, 22 Oct 2015 23:06:34 +0000 (01:06 +0200)] 
doc: modules/tinyweb

9 years agobuild: allow Go 1.5 (without .0)
Marek Vavruša [Thu, 22 Oct 2015 23:02:15 +0000 (01:02 +0200)] 
build: allow Go 1.5 (without .0)

9 years agoiterator+rrcache: do not follow CNAME chains (if not DNSSEC-secured)
Marek Vavruša [Thu, 22 Oct 2015 13:13:01 +0000 (15:13 +0200)] 
iterator+rrcache: do not follow CNAME chains (if not DNSSEC-secured)

[1] shows an attack using spoofed CNAME targets to replace legitimate
entries in resolver cache by speeding up once-per-TTL attack opportunity

as a defense, the resolver almost always requeries CNAME targets and
doesn't store them in cache. the only exception is when the CNAME target
is within current authority, and the answer is DNSSEC-secured

thanks to Toshinori Maeno (@beyondDNS) for pointing this out [2]

[1]: https://tools.ietf.org/id/draft-weaver-dnsext-comprehensive-
resolver-00.html
[2]: https://moin.qmail.jp/DNS/KnotResolver/CNAMEpatch

9 years agodoc: fixed correct README path
Marek Vavruša [Thu, 22 Oct 2015 10:09:36 +0000 (12:09 +0200)] 
doc: fixed correct README path

9 years agomodules/tinyweb: added easing on the map contrast
Marek Vavruša [Thu, 22 Oct 2015 10:06:51 +0000 (12:06 +0200)] 
modules/tinyweb: added easing on the map contrast

9 years agomodules/tinyweb: Go-based module with an embedded web interface
Marek Vavruša [Tue, 20 Oct 2015 08:40:34 +0000 (10:40 +0200)] 
modules/tinyweb: Go-based module with an embedded web interface

9 years agolib/utils: added convenience API for calling module props
Marek Vavruša [Tue, 20 Oct 2015 17:38:23 +0000 (19:38 +0200)] 
lib/utils: added convenience API for calling module props

9 years agodaemon: register props even with just config
Marek Vavruša [Tue, 20 Oct 2015 08:40:49 +0000 (10:40 +0200)] 
daemon: register props even with just config

9 years agomodules: support for modules in Go (needs golang 1.5+)
Marek Vavruša [Mon, 19 Oct 2015 17:41:03 +0000 (19:41 +0200)] 
modules: support for modules in Go (needs golang 1.5+)

9 years agolib/validate: fixed DS proof check in some cases
Marek Vavruša [Mon, 19 Oct 2015 15:07:29 +0000 (17:07 +0200)] 
lib/validate: fixed DS proof check in some cases

when the DS NODATA was proved from a different authority

9 years agodaemon/lua: use knot_pkt_section to work around ABI breakage at libknot 297a1c89
Marek Vavruša [Mon, 19 Oct 2015 14:44:57 +0000 (16:44 +0200)] 
daemon/lua: use knot_pkt_section to work around ABI breakage at libknot 297a1c89

9 years agodaemon: fixed default confval
Marek Vavruša [Mon, 19 Oct 2015 09:46:23 +0000 (11:46 +0200)] 
daemon: fixed default confval

9 years agobuild: report patchversion
Marek Vavruša [Sun, 18 Oct 2015 21:21:05 +0000 (23:21 +0200)] 
build: report patchversion

9 years agoMerge branch 'resumable-layers'
Marek Vavruša [Sun, 18 Oct 2015 21:20:11 +0000 (23:20 +0200)] 
Merge branch 'resumable-layers'

9 years agodaemon: -c to set config file outside of rundir
Marek Vavruša [Sun, 18 Oct 2015 21:18:33 +0000 (23:18 +0200)] 
daemon: -c to set config file outside of rundir

9 years agomodules/hints: generate PTR records as well
Marek Vavruša [Sun, 18 Oct 2015 21:02:07 +0000 (23:02 +0200)] 
modules/hints: generate PTR records as well

in case the address matches multiple names, the lexicographically first domain name is returned

meaning
\5host1\3com is after \5host1\2cz
\5host2 is after \5host1
\3aaa is after \2zz

9 years agodaemon: precedence operators {‘<‘, ‘>’} for modules
Marek Vavruša [Sun, 18 Oct 2015 20:54:48 +0000 (22:54 +0200)] 
daemon: precedence operators {‘<‘, ‘>’} for modules

9 years agodaemon/engine: fixed serialization of nested tables
Marek Vavruša [Sun, 18 Oct 2015 20:55:01 +0000 (22:55 +0200)] 
daemon/engine: fixed serialization of nested tables