+ else if (more_coming[0] || more_coming[1])
+ {
+ /* got partial data - probably from cache - reduce wait time */
+ struct timespec now, tmp, extra;
+
+ /* tmp = now - start */
+ _mdns_now(&now);
+ _mdns_sub_time(&tmp, &now, &start);
+
+ extra.tv_sec = MEDIUM_AAAA_EXTRA;
+ extra.tv_nsec = 0;
+
+ /* delta = tmp + extra */
+ _mdns_add_time(&delta, &tmp, &extra);
+
+ /* check that delta doesn't exceed our total timeout */
+ _mdns_sub_time(&tmp, &timeout, &delta);
+ if (tmp.tv_sec >= 0)
+ {
+ _mdns_debug_message(";; new timeout [%s type %d class %d] (waiting for more) %ld.%ld [ctx %p %p]\n", name, type, class, delta.tv_sec, delta.tv_nsec, (n_ctx > 0) ? &(ctx[0]) : NULL, (n_ctx > 1) ? &(ctx[1]) : NULL);
+ _mdns_deadline(&finish, &delta);
+ }
+ }
+ else if (got_a_response == GOT_DATA)