udns_resolver.c:916: dns_submit_dn: Assertion `q->dnsq_origdnl0 > 0' failed.

Iñaki Baz Castillo ibc at aliax.net
Tue Jul 5 17:56:22 MSD 2011


2011/7/5 Iñaki Baz Castillo <ibc at aliax.net>:
> 2011/7/5 Iñaki Baz Castillo <ibc at aliax.net>:
>> Hi, note that I don't mean "a._" but "a. _" (with space, so you must
>> enclose the string between "" to pass it as a single argument to the
>> call).
>> Sorry, I was wrong, please use ".a _".
>
> I've tested your code with "a. _" and produces:
>
>  .a _: valid domain but no data of requested type
>
> However in my Ruby C extension (which uses udns asyncronously) it
> produces ("today") a timeout so tempfail.

Ok, I've captured a trace and the DNS query sent by udns is wrong (I
attach the full capture exported from wireshark to txt):

    Source: 192.168.1.16 (192.168.1.16)
    Destination: 8.8.8.8 (8.8.8.8)
User Datagram Protocol, Src Port: 56776 (56776), Dst Port: domain (53)
    Source port: 56776 (56776)
    Destination port: domain (53)
    Length: 133
    Checksum: 0xe83e [validation disabled]
        [Good Checksum: False]
        [Bad Checksum: False]
Domain Name System (query)
    Transaction ID: 0x4a9f
    Flags: 0x0100 (Standard query)
        0... .... .... .... = Response: Message is a query
        .000 0... .... .... = Opcode: Standard query (0)
        .... ..0. .... .... = Truncated: Message is not truncated
        .... ...1 .... .... = Recursion desired: Do query recursively
        .... .... .0.. .... = Z: reserved (0)
        .... .... ...0 .... = Non-authenticated data: Unacceptable
    Questions: 1
    Answer RRs: 0
    Authority RRs: 0
    Additional RRs: 1
    Queries
        <Unknown extended label>: type Unknown (40891), class Unknown (0)
            Name: <Unknown extended label>
            Type: Unknown (40891)
            Class: Unknown (0x0000)
    Additional records
        <Root>: type Unused, class Unknown (43378)
            Name: <Root>
            Type: Unused (unused)
            Class: Unknown (0xa972)
            Time to live: 19181 days, 4 hours, 20 minutes, 15 seconds
            Data length: 0


The DNS replies "0010 = Reply code: Server failure (2)". Note that I'm
using DNS server 8.8.8.8 (Google) in this case, without using unbound.



-- 
Iñaki Baz Castillo
<ibc at aliax.net>
-------------- next part --------------
No.     Time        Source                Destination           Protocol Info
      1 0.000000    192.168.1.16          8.8.8.8               DNS      Standard query Unknown (40891) <Unknown extended label>

Frame 1: 169 bytes on wire (1352 bits), 169 bytes captured (1352 bits)
    Arrival Time: Jul  5, 2011 15:52:16.061911000 CEST
    Epoch Time: 1309873936.061911000 seconds
    [Time delta from previous captured frame: 0.000000000 seconds]
    [Time delta from previous displayed frame: 0.000000000 seconds]
    [Time since reference or first frame: 0.000000000 seconds]
    Frame Number: 1
    Frame Length: 169 bytes (1352 bits)
    Capture Length: 169 bytes (1352 bits)
    [Frame is marked: False]
    [Frame is ignored: False]
    [Protocols in frame: sll:ip:udp:dns]
    [Coloring Rule Name: UDP]
    [Coloring Rule String: udp]
Linux cooked capture
    Packet type: Sent by us (4)
    Link-layer address type: 1
    Link-layer address length: 6
    Source: LiteonTe_20:55:c0 (70:f1:a1:20:55:c0)
    Protocol: IP (0x0800)
Internet Protocol, Src: 192.168.1.16 (192.168.1.16), Dst: 8.8.8.8 (8.8.8.8)
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..0. = ECN-Capable Transport (ECT): 0
        .... ...0 = ECN-CE: 0
    Total Length: 153
    Identification: 0x0000 (0)
    Flags: 0x02 (Don't Fragment)
        0... .... = Reserved bit: Not set
        .1.. .... = Don't fragment: Set
        ..0. .... = More fragments: Not set
    Fragment offset: 0
    Time to live: 64
    Protocol: UDP (17)
    Header checksum: 0x688c [correct]
        [Good: True]
        [Bad: False]
    Source: 192.168.1.16 (192.168.1.16)
    Destination: 8.8.8.8 (8.8.8.8)
User Datagram Protocol, Src Port: 56776 (56776), Dst Port: domain (53)
    Source port: 56776 (56776)
    Destination port: domain (53)
    Length: 133
    Checksum: 0xe83e [validation disabled]
        [Good Checksum: False]
        [Bad Checksum: False]
Domain Name System (query)
    Transaction ID: 0x4a9f
    Flags: 0x0100 (Standard query)
        0... .... .... .... = Response: Message is a query
        .000 0... .... .... = Opcode: Standard query (0)
        .... ..0. .... .... = Truncated: Message is not truncated
        .... ...1 .... .... = Recursion desired: Do query recursively
        .... .... .0.. .... = Z: reserved (0)
        .... .... ...0 .... = Non-authenticated data: Unacceptable
    Questions: 1
    Answer RRs: 0
    Authority RRs: 0
    Additional RRs: 1
    Queries
        <Unknown extended label>: type Unknown (40891), class Unknown (0)
            Name: <Unknown extended label>
            Type: Unknown (40891)
            Class: Unknown (0x0000)
    Additional records
        <Root>: type Unused, class Unknown (43378)
            Name: <Root>
            Type: Unused (unused)
            Class: Unknown (0xa972)
            Time to live: 19181 days, 4 hours, 20 minutes, 15 seconds
            Data length: 0

No.     Time        Source                Destination           Protocol Info
      2 0.001218    192.168.1.16          8.8.8.8               DNS      Standard query Unknown (40891) <Unknown extended label>

Frame 2: 169 bytes on wire (1352 bits), 169 bytes captured (1352 bits)
    Arrival Time: Jul  5, 2011 15:52:16.063129000 CEST
    Epoch Time: 1309873936.063129000 seconds
    [Time delta from previous captured frame: 0.001218000 seconds]
    [Time delta from previous displayed frame: 0.001218000 seconds]
    [Time since reference or first frame: 0.001218000 seconds]
    Frame Number: 2
    Frame Length: 169 bytes (1352 bits)
    Capture Length: 169 bytes (1352 bits)
    [Frame is marked: False]
    [Frame is ignored: False]
    [Protocols in frame: sll:ip:udp:dns]
    [Coloring Rule Name: UDP]
    [Coloring Rule String: udp]
Linux cooked capture
    Packet type: Sent by us (4)
    Link-layer address type: 1
    Link-layer address length: 6
    Source: LiteonTe_20:55:c0 (70:f1:a1:20:55:c0)
    Protocol: IP (0x0800)
Internet Protocol, Src: 192.168.1.16 (192.168.1.16), Dst: 8.8.8.8 (8.8.8.8)
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..0. = ECN-Capable Transport (ECT): 0
        .... ...0 = ECN-CE: 0
    Total Length: 153
    Identification: 0x0000 (0)
    Flags: 0x02 (Don't Fragment)
        0... .... = Reserved bit: Not set
        .1.. .... = Don't fragment: Set
        ..0. .... = More fragments: Not set
    Fragment offset: 0
    Time to live: 64
    Protocol: UDP (17)
    Header checksum: 0x688c [correct]
        [Good: True]
        [Bad: False]
    Source: 192.168.1.16 (192.168.1.16)
    Destination: 8.8.8.8 (8.8.8.8)
User Datagram Protocol, Src Port: 56776 (56776), Dst Port: domain (53)
    Source port: 56776 (56776)
    Destination port: domain (53)
    Length: 133
    Checksum: 0xf11d [validation disabled]
        [Good Checksum: False]
        [Bad Checksum: False]
Domain Name System (query)
    Transaction ID: 0xbac9
    Flags: 0x0100 (Standard query)
        0... .... .... .... = Response: Message is a query
        .000 0... .... .... = Opcode: Standard query (0)
        .... ..0. .... .... = Truncated: Message is not truncated
        .... ...1 .... .... = Recursion desired: Do query recursively
        .... .... .0.. .... = Z: reserved (0)
        .... .... ...0 .... = Non-authenticated data: Unacceptable
    Questions: 1
    Answer RRs: 0
    Authority RRs: 0
    Additional RRs: 1
    Queries
        <Unknown extended label>: type Unknown (40891), class Unknown (0)
            Name: <Unknown extended label>
            Type: Unknown (40891)
            Class: Unknown (0x0000)
    Additional records
        <Root>: type Unused, class Unknown (43378)
            Name: <Root>
            Type: Unused (unused)
            Class: Unknown (0xa972)
            Time to live: 19181 days, 4 hours, 20 minutes, 15 seconds
            Data length: 0

No.     Time        Source                Destination           Protocol Info
      3 2.804494    8.8.8.8               192.168.1.16          DNS      Standard query response, Server failure

Frame 3: 169 bytes on wire (1352 bits), 169 bytes captured (1352 bits)
    Arrival Time: Jul  5, 2011 15:52:18.866405000 CEST
    Epoch Time: 1309873938.866405000 seconds
    [Time delta from previous captured frame: 2.803276000 seconds]
    [Time delta from previous displayed frame: 2.803276000 seconds]
    [Time since reference or first frame: 2.804494000 seconds]
    Frame Number: 3
    Frame Length: 169 bytes (1352 bits)
    Capture Length: 169 bytes (1352 bits)
    [Frame is marked: False]
    [Frame is ignored: False]
    [Protocols in frame: sll:ip:udp:dns]
    [Coloring Rule Name: UDP]
    [Coloring Rule String: udp]
Linux cooked capture
    Packet type: Unicast to us (0)
    Link-layer address type: 1
    Link-layer address length: 6
    Source: Draytek_96:73:28 (00:50:7f:96:73:28)
    Protocol: IP (0x0800)
Internet Protocol, Src: 8.8.8.8 (8.8.8.8), Dst: 192.168.1.16 (192.168.1.16)
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..0. = ECN-Capable Transport (ECT): 0
        .... ...0 = ECN-CE: 0
    Total Length: 153
    Identification: 0x2843 (10307)
    Flags: 0x00
        0... .... = Reserved bit: Not set
        .0.. .... = Don't fragment: Not set
        ..0. .... = More fragments: Not set
    Fragment offset: 0
    Time to live: 47
    Protocol: UDP (17)
    Header checksum: 0x9149 [correct]
        [Good: True]
        [Bad: False]
    Source: 8.8.8.8 (8.8.8.8)
    Destination: 192.168.1.16 (192.168.1.16)
User Datagram Protocol, Src Port: domain (53), Dst Port: 56776 (56776)
    Source port: domain (53)
    Destination port: 56776 (56776)
    Length: 133
    Checksum: 0x70a9 [validation disabled]
        [Good Checksum: False]
        [Bad Checksum: False]
Domain Name System (response)
    [Request In: 5]
    [Time: -1.197343000 seconds]
    Transaction ID: 0xbac9
    Flags: 0x8182 (Standard query response, Server failure)
        1... .... .... .... = Response: Message is a response
        .000 0... .... .... = Opcode: Standard query (0)
        .... .0.. .... .... = Authoritative: Server is not an authority for domain
        .... ..0. .... .... = Truncated: Message is not truncated
        .... ...1 .... .... = Recursion desired: Do query recursively
        .... .... 1... .... = Recursion available: Server can do recursive queries
        .... .... .0.. .... = Z: reserved (0)
        .... .... ..0. .... = Answer authenticated: Answer/authority portion was not authenticated by the server
        .... .... ...0 .... = Non-authenticated data: Unacceptable
        .... .... .... 0010 = Reply code: Server failure (2)
    Questions: 1
    Answer RRs: 0
    Authority RRs: 0
    Additional RRs: 1
    Queries
        <Unknown extended label>: type Unknown (40891), class Unknown (0)
            Name: <Unknown extended label>
            Type: Unknown (40891)
            Class: Unknown (0x0000)
    Additional records
        <Root>: type Unused, class Unknown (43378)
            Name: <Root>
            Type: Unused (unused)
            Class: Unknown (0xa972)
            Time to live: 19181 days, 4 hours, 20 minutes, 15 seconds
            Data length: 0

No.     Time        Source                Destination           Protocol Info
      4 4.001800    192.168.1.16          8.8.8.8               DNS      Standard query Unknown (40891) <Unknown extended label>

Frame 4: 169 bytes on wire (1352 bits), 169 bytes captured (1352 bits)
    Arrival Time: Jul  5, 2011 15:52:20.063711000 CEST
    Epoch Time: 1309873940.063711000 seconds
    [Time delta from previous captured frame: 1.197306000 seconds]
    [Time delta from previous displayed frame: 1.197306000 seconds]
    [Time since reference or first frame: 4.001800000 seconds]
    Frame Number: 4
    Frame Length: 169 bytes (1352 bits)
    Capture Length: 169 bytes (1352 bits)
    [Frame is marked: False]
    [Frame is ignored: False]
    [Protocols in frame: sll:ip:udp:dns]
    [Coloring Rule Name: UDP]
    [Coloring Rule String: udp]
Linux cooked capture
    Packet type: Sent by us (4)
    Link-layer address type: 1
    Link-layer address length: 6
    Source: LiteonTe_20:55:c0 (70:f1:a1:20:55:c0)
    Protocol: IP (0x0800)
Internet Protocol, Src: 192.168.1.16 (192.168.1.16), Dst: 8.8.8.8 (8.8.8.8)
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..0. = ECN-Capable Transport (ECT): 0
        .... ...0 = ECN-CE: 0
    Total Length: 153
    Identification: 0x0000 (0)
    Flags: 0x02 (Don't Fragment)
        0... .... = Reserved bit: Not set
        .1.. .... = Don't fragment: Set
        ..0. .... = More fragments: Not set
    Fragment offset: 0
    Time to live: 64
    Protocol: UDP (17)
    Header checksum: 0x688c [correct]
        [Good: True]
        [Bad: False]
    Source: 192.168.1.16 (192.168.1.16)
    Destination: 8.8.8.8 (8.8.8.8)
User Datagram Protocol, Src Port: 56776 (56776), Dst Port: domain (53)
    Source port: 56776 (56776)
    Destination port: domain (53)
    Length: 133
    Checksum: 0xe83e [validation disabled]
        [Good Checksum: False]
        [Bad Checksum: False]
Domain Name System (query)
    Transaction ID: 0x4a9f
    Flags: 0x0100 (Standard query)
        0... .... .... .... = Response: Message is a query
        .000 0... .... .... = Opcode: Standard query (0)
        .... ..0. .... .... = Truncated: Message is not truncated
        .... ...1 .... .... = Recursion desired: Do query recursively
        .... .... .0.. .... = Z: reserved (0)
        .... .... ...0 .... = Non-authenticated data: Unacceptable
    Questions: 1
    Answer RRs: 0
    Authority RRs: 0
    Additional RRs: 1
    Queries
        <Unknown extended label>: type Unknown (40891), class Unknown (0)
            Name: <Unknown extended label>
            Type: Unknown (40891)
            Class: Unknown (0x0000)
    Additional records
        <Root>: type Unused, class Unknown (43378)
            Name: <Root>
            Type: Unused (unused)
            Class: Unknown (0xa972)
            Time to live: 19181 days, 4 hours, 20 minutes, 15 seconds
            Data length: 0

No.     Time        Source                Destination           Protocol Info
      5 4.001837    192.168.1.16          8.8.8.8               DNS      Standard query Unknown (40891) <Unknown extended label>

Frame 5: 169 bytes on wire (1352 bits), 169 bytes captured (1352 bits)
    Arrival Time: Jul  5, 2011 15:52:20.063748000 CEST
    Epoch Time: 1309873940.063748000 seconds
    [Time delta from previous captured frame: 0.000037000 seconds]
    [Time delta from previous displayed frame: 0.000037000 seconds]
    [Time since reference or first frame: 4.001837000 seconds]
    Frame Number: 5
    Frame Length: 169 bytes (1352 bits)
    Capture Length: 169 bytes (1352 bits)
    [Frame is marked: False]
    [Frame is ignored: False]
    [Protocols in frame: sll:ip:udp:dns]
    [Coloring Rule Name: UDP]
    [Coloring Rule String: udp]
Linux cooked capture
    Packet type: Sent by us (4)
    Link-layer address type: 1
    Link-layer address length: 6
    Source: LiteonTe_20:55:c0 (70:f1:a1:20:55:c0)
    Protocol: IP (0x0800)
Internet Protocol, Src: 192.168.1.16 (192.168.1.16), Dst: 8.8.8.8 (8.8.8.8)
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..0. = ECN-Capable Transport (ECT): 0
        .... ...0 = ECN-CE: 0
    Total Length: 153
    Identification: 0x0000 (0)
    Flags: 0x02 (Don't Fragment)
        0... .... = Reserved bit: Not set
        .1.. .... = Don't fragment: Set
        ..0. .... = More fragments: Not set
    Fragment offset: 0
    Time to live: 64
    Protocol: UDP (17)
    Header checksum: 0x688c [correct]
        [Good: True]
        [Bad: False]
    Source: 192.168.1.16 (192.168.1.16)
    Destination: 8.8.8.8 (8.8.8.8)
User Datagram Protocol, Src Port: 56776 (56776), Dst Port: domain (53)
    Source port: 56776 (56776)
    Destination port: domain (53)
    Length: 133
    Checksum: 0xf11d [validation disabled]
        [Good Checksum: False]
        [Bad Checksum: False]
Domain Name System (query)
    Transaction ID: 0xbac9
    Flags: 0x0100 (Standard query)
        0... .... .... .... = Response: Message is a query
        .000 0... .... .... = Opcode: Standard query (0)
        .... ..0. .... .... = Truncated: Message is not truncated
        .... ...1 .... .... = Recursion desired: Do query recursively
        .... .... .0.. .... = Z: reserved (0)
        .... .... ...0 .... = Non-authenticated data: Unacceptable
    Questions: 1
    Answer RRs: 0
    Authority RRs: 0
    Additional RRs: 1
    Queries
        <Unknown extended label>: type Unknown (40891), class Unknown (0)
            Name: <Unknown extended label>
            Type: Unknown (40891)
            Class: Unknown (0x0000)
    Additional records
        <Root>: type Unused, class Unknown (43378)
            Name: <Root>
            Type: Unused (unused)
            Class: Unknown (0xa972)
            Time to live: 19181 days, 4 hours, 20 minutes, 15 seconds
            Data length: 0


More information about the udns mailing list