+ for (i = 0; i < rtnl->rqueue_size; i++) {
+ if (REFCNT_GET(rtnl->rqueue[i]->n_ref) > 1) {
+ q = false;
+ break;
+ } else if (rtnl->rqueue[i]->rtnl != rtnl)
+ --refs;
+ }
+
+ if (q) {
+ for (i = 0; i < rtnl->wqueue_size; i++) {
+ if (REFCNT_GET(rtnl->wqueue[i]->n_ref) > 1) {
+ q = false;
+ break;
+ } else if (rtnl->wqueue[i]->rtnl != rtnl)
+ --refs;
+ }
+ }
+
+ if (q && REFCNT_GET(rtnl->n_ref) == refs) {
+ /* Drop our own ref early to avoid recursion from:
+ * sd_rtnl_message_unref()
+ * sd_rtnl_unref()
+ * These must enter sd_rtnl_unref() with a ref-cnt
+ * smaller than us. */
+ REFCNT_DEC(rtnl->n_ref);