]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
reviewed yesterdays commit.
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Fri, 23 Mar 2007 08:25:43 +0000 (08:25 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Fri, 23 Mar 2007 08:25:43 +0000 (08:25 +0000)
git-svn-id: file:///svn/unbound/trunk@191 be551aaa-1e26-0410-a405-d3ace91eadb9

daemon/worker.c
doc/Changelog
util/data/msgreply.c

index dee1805b159a5d7b2b7d18a27eeccf2e0585d510..b7ddfe8e97efa3d023e2eac362a49acfe628e794 100644 (file)
@@ -292,6 +292,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error,
                /* id is still in the buffer, no need to touch it */
                reply_info_answer((struct reply_info*)e->data, 
                        ldns_buffer_read_u16_at(c->buffer, 2), c->buffer);
+               lock_rw_unlock(&e->lock);
                return 1;
        }
        ldns_buffer_rewind(c->buffer);
index 7f7050fc3ad8740acc2fb9ca643eb90ce2c309c4..0e45e54ca1bdcb9089829733a8cd1185098f6d9e 100644 (file)
@@ -1,3 +1,6 @@
+23 March 2007: Wouter
+       - review of yesterday's commits.
+
 22 March 2007: Wouter
        - AIX configure check.
        - lock-verify can handle references to locks that are created
index bc3bb9a5b8181ea17da0b5e4d113968784d9823e..53be329ec4b40695c2c12e0c4c5ea88c9881145b 100644 (file)
@@ -88,8 +88,11 @@ int query_info_parse(struct query_info* m, ldns_buffer* query)
        }
        memmove(m->qname, q, m->qnamesize);
 
-       if(ldns_buffer_remaining(query) < 4)
+       if(ldns_buffer_remaining(query) < 4) {
+               free(m->qname);
+               m->qname = NULL;
                return 0; /* need qtype, qclass */
+       }
        m->qtype = ldns_buffer_read_u16(query);
        m->qclass = ldns_buffer_read_u16(query);
        return 1;
@@ -186,7 +189,9 @@ struct msgreply_entry* query_info_entrysetup(struct query_info* q,
        e->entry.key = e;
        e->entry.data = r;
        lock_rw_init(&e->entry.lock);
-       lock_protect(&e->entry.lock, e, sizeof(*e));
+       lock_protect(&e->entry.lock, &e->key, sizeof(e->key));
+       lock_protect(&e->entry.lock, &e->entry.hash, sizeof(e->entry.hash) +
+               sizeof(e->entry.key) + sizeof(e->entry.data));
        lock_protect(&e->entry.lock, e->key.qname, e->key.qnamesize);
        q->qname = NULL;
        return e;