double connection_free() in dns_resolve()
If dns_resolve()'s call to dns_resolve_impl() returns -1, it ends up running ``` dns_cancel_pending_resolve(exitconn->_base.address); if (!exitconn->_base.marked_for_close) { connection_free(TO_CONN(exitconn)); ``` But dns_cancel_pending_resolve() runs ``` while (resolve->pending_connections) { ... if (!pendconn->_base.marked_for_close) connection_free(TO_CONN(pendconn)); ``` So we would end up calling connection_free() on it twice. But we don't in practice, since the first connection_free() scribbles 0xCC on it, which sets marked_for_close to true, so we don't free it the second time! Cue Nick's circus music. Our friendly irc person says "fix not so easy btw, connection_free() still need to call if no it was attached to pending resolve list."
issue