… | |
… | |
53 | #define INITIAL_SYN_TIMEOUT 2. |
53 | #define INITIAL_SYN_TIMEOUT 2. |
54 | |
54 | |
55 | #define MIN_SEND_INTERVAL 0.01 |
55 | #define MIN_SEND_INTERVAL 0.01 |
56 | #define MAX_SEND_INTERVAL 0.5 // optimistic? |
56 | #define MAX_SEND_INTERVAL 0.5 // optimistic? |
57 | |
57 | |
58 | #define MAX_OUTSTANDING 800 // max. outstanding requests |
58 | #define MAX_OUTSTANDING 40 // max. outstanding requests |
59 | #define MAX_WINDOW 1000 // max. for MAX_OUTSTANDING |
59 | #define MAX_WINDOW 100 // max. for MAX_OUTSTANDING |
60 | #define MAX_BACKLOG (100*1024) // size of protocol backlog, must be > MAXSIZE |
60 | #define MAX_BACKLOG (100*1024) // size of protocol backlog, must be > MAXSIZE |
61 | |
61 | |
62 | #define MAX_DOMAIN_SIZE 220 // 255 is legal limit, but bind doesn't compress well |
62 | #define MAX_DOMAIN_SIZE 220 // 255 is legal limit, but bind doesn't compress well |
63 | // 240 leaves about 4 bytes of server reply data |
63 | // 240 leaves about 4 bytes of server reply data |
64 | // every two request byte sless give room for one reply byte |
64 | // every two request byte sless give room for one reply byte |
… | |
… | |
824 | if (SEQNO_EQ ((*i)->seqno, seqno)) |
824 | if (SEQNO_EQ ((*i)->seqno, seqno)) |
825 | { |
825 | { |
826 | // already seen that request: simply reply with the cached reply |
826 | // already seen that request: simply reply with the cached reply |
827 | dns_rcv *r = *i; |
827 | dns_rcv *r = *i; |
828 | |
828 | |
829 | printf ("DUPLICATE %d\n", htons (r->pkt->id));//D |
829 | slog (L_DEBUG, "DUPLICATE %d\n", htons (r->pkt->id)); |
830 | |
830 | |
831 | memcpy (pkt.at (0), r->pkt->at (0), offs = r->pkt->len); |
831 | memcpy (pkt.at (0), r->pkt->at (0), offs = r->pkt->len); |
832 | pkt.id = r->pkt->id; |
832 | pkt.id = r->pkt->id; |
833 | goto duplicate_request; |
833 | goto duplicate_request; |
834 | } |
834 | } |