From: Julian Mehnle Date: 2010-09-19T05:54:53+09:00 Subject: [ruby-core:32472] [Ruby 1.9-Feature#3835] Resolv::DNS: Retry via TCP on truncated UDP response --mimepart_4c95265f9617b_eedced5be6110d6 Content-Type: text/plain Content-Transfer-Encoding: Quoted-printable Content-Disposition: inline Issue #3835 has been updated by Julian Mehnle. File resolv-1.9.2-tcp-fallback2.diff added File resolv-1.8.7-tcp-fallback2.diff added I've discovered a bug in my patch: Resolv::DNS::Message#tc returns a nume= rical value (0 or 1), not a boolean. Also, let's play it safe and #close= the UDP requester before replacing it with the TCP requester. I've successfully tested these revised patches in a heavy-load production= environment that does hundreds of thousands of DNS lookups every day. ---------------------------------------- http://redmine.ruby-lang.org/issues/show/3835 ---------------------------------------- http://redmine.ruby-lang.org --mimepart_4c95265f9617b_eedced5be6110d6 Content-Type: text/x-diff; name=resolv-1.9.2-tcp-fallback2.diff Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=resolv-1.9.2-tcp-fallback2.diff LS0tIC91c3IvbGliL3J1YnkvMS45LjEvcmVzb2x2LnJiCTIwMTAtMDktMTIg MTQ6NDc6NDcuMDAwMDAwMDAwICswMDAwCisrKyByZXNvbHYtMS45LjIucmIJ MjAxMC0wOS0xNyAxNjo1MzoyMS4yODM5NDU3MzUgKzAwMDAKQEAgLTQ5Miw3 ICs0OTIsNyBAQAogCiAgICAgZGVmIGVhY2hfcmVzb3VyY2UobmFtZSwgdHlw ZWNsYXNzLCAmcHJvYykKICAgICAgIGxhenlfaW5pdGlhbGl6ZQotICAgICAg cmVxdWVzdGVyID0gbWFrZV9yZXF1ZXN0ZXIKKyAgICAgIHJlcXVlc3RlciA9 IG1ha2VfdWRwX3JlcXVlc3RlcgogICAgICAgc2VuZGVycyA9IHt9CiAgICAg ICBiZWdpbgogICAgICAgICBAY29uZmlnLnJlc29sdihuYW1lKSB7fGNhbmRp ZGF0ZSwgdG91dCwgbmFtZXNlcnZlciwgcG9ydHwKQEAgLTUwNiw3ICs1MDYs MTkgQEAKICAgICAgICAgICByZXBseSwgcmVwbHlfbmFtZSA9IHJlcXVlc3Rl ci5yZXF1ZXN0KHNlbmRlciwgdG91dCkKICAgICAgICAgICBjYXNlIHJlcGx5 LnJjb2RlCiAgICAgICAgICAgd2hlbiBSQ29kZTo6Tm9FcnJvcgotICAgICAg ICAgICAgZXh0cmFjdF9yZXNvdXJjZXMocmVwbHksIHJlcGx5X25hbWUsIHR5 cGVjbGFzcywgJnByb2MpCisgICAgICAgICAgICBpZiByZXBseS50YyA9PSAx IGFuZCBub3QgUmVxdWVzdGVyOjpUQ1AgPT09IHJlcXVlc3RlcgorICAgICAg ICAgICAgICByZXF1ZXN0ZXIuY2xvc2UKKyAgICAgICAgICAgICAgIyBSZXRy eSB2aWEgVENQOgorICAgICAgICAgICAgICByZXF1ZXN0ZXIgPSBtYWtlX3Rj cF9yZXF1ZXN0ZXIKKyAgICAgICAgICAgICAgc2VuZGVycyA9IHt9CisgICAg ICAgICAgICAgICMgVGhpcyB3aWxsIHVzZSBUQ1AgZm9yIGFsbCByZW1haW5p bmcgY2FuZGlkYXRlcyAoYXNzdW1pbmcgdGhlCisgICAgICAgICAgICAgICMg Y3VycmVudCBjYW5kaWRhdGUgZG9lcyBub3QgYWxyZWFkeSByZXNwb25kIHN1 Y2Nlc3NmdWxseSB2aWEKKyAgICAgICAgICAgICAgIyBUQ1ApLiAgVGhpcyBt YWtlcyBzZW5zZSBiZWNhdXNlIHdlIGFscmVhZHkga25vdyB0aGUgZnVsbAor ICAgICAgICAgICAgICAjIHJlc3BvbnNlIHdpbGwgbm90IGZpdCBpbiBhbiB1 bnRydW5jYXRlZCBVRFAgcGFja2V0LgorICAgICAgICAgICAgICByZWRvCisg ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIGV4dHJhY3RfcmVzb3Vy Y2VzKHJlcGx5LCByZXBseV9uYW1lLCB0eXBlY2xhc3MsICZwcm9jKQorICAg ICAgICAgICAgZW5kCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICB3 aGVuIFJDb2RlOjpOWERvbWFpbgogICAgICAgICAgICAgcmFpc2UgQ29uZmln OjpOWERvbWFpbi5uZXcocmVwbHlfbmFtZS50b19zKQpAQCAtNTE5LDcgKzUz MSw3IEBACiAgICAgICBlbmQKICAgICBlbmQKIAotICAgIGRlZiBtYWtlX3Jl cXVlc3RlciAjIDpub2RvYzoKKyAgICBkZWYgbWFrZV91ZHBfcmVxdWVzdGVy ICMgOm5vZG9jOgogICAgICAgbmFtZXNlcnZlcl9wb3J0ID0gQGNvbmZpZy5u YW1lc2VydmVyX3BvcnQKICAgICAgIGlmIG5hbWVzZXJ2ZXJfcG9ydC5sZW5n dGggPT0gMQogICAgICAgICBSZXF1ZXN0ZXI6OkNvbm5lY3RlZFVEUC5uZXco Km5hbWVzZXJ2ZXJfcG9ydFswXSkKQEAgLTUyOCw2ICs1NDAsMTEgQEAKICAg ICAgIGVuZAogICAgIGVuZAogCisgICAgZGVmIG1ha2VfdGNwX3JlcXVlc3Rl ciAjIDpub2RvYzoKKyAgICAgIG5hbWVzZXJ2ZXJfcG9ydCA9IEBjb25maWcu bmFtZXNlcnZlcl9wb3J0CisgICAgICByZXR1cm4gUmVxdWVzdGVyOjpUQ1Au bmV3KCpuYW1lc2VydmVyX3BvcnRbMF0pCisgICAgZW5kCisKICAgICBkZWYg ZXh0cmFjdF9yZXNvdXJjZXMobXNnLCBuYW1lLCB0eXBlY2xhc3MpICMgOm5v ZG9jOgogICAgICAgaWYgdHlwZWNsYXNzIDwgUmVzb3VyY2U6OkFOWQogICAg ICAgICBuMCA9IE5hbWUuY3JlYXRlKG5hbWUpCg== --mimepart_4c95265f9617b_eedced5be6110d6 Content-Type: text/x-diff; name=resolv-1.8.7-tcp-fallback2.diff Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=resolv-1.8.7-tcp-fallback2.diff LS0tIC91c3IvbGliL3J1YnkvMS44L3Jlc29sdi5yYgkyMDEwLTA1LTIyIDEz OjMxOjUyLjAwMDAwMDAwMCArMDAwMAorKysgcmVzb2x2LTEuOC43LnJiCTIw MTAtMDktMTcgMTY6NTM6MTIuNzQ3OTQ1Njk4ICswMDAwCkBAIC00NzUsNyAr NDc1LDcgQEAKICAgCiAgICAgZGVmIGVhY2hfcmVzb3VyY2UobmFtZSwgdHlw ZWNsYXNzLCAmcHJvYykKICAgICAgIGxhenlfaW5pdGlhbGl6ZQotICAgICAg cmVxdWVzdGVyID0gbWFrZV9yZXF1ZXN0ZXIKKyAgICAgIHJlcXVlc3RlciA9 IG1ha2VfdWRwX3JlcXVlc3RlcgogICAgICAgc2VuZGVycyA9IHt9CiAgICAg ICBiZWdpbgogICAgICAgICBAY29uZmlnLnJlc29sdihuYW1lKSB7fGNhbmRp ZGF0ZSwgdG91dCwgbmFtZXNlcnZlcnwKQEAgLTQ4OSw3ICs0ODksMTkgQEAK ICAgICAgICAgICByZXBseSwgcmVwbHlfbmFtZSA9IHJlcXVlc3Rlci5yZXF1 ZXN0KHNlbmRlciwgdG91dCkKICAgICAgICAgICBjYXNlIHJlcGx5LnJjb2Rl CiAgICAgICAgICAgd2hlbiBSQ29kZTo6Tm9FcnJvcgotICAgICAgICAgICAg ZXh0cmFjdF9yZXNvdXJjZXMocmVwbHksIHJlcGx5X25hbWUsIHR5cGVjbGFz cywgJnByb2MpCisgICAgICAgICAgICBpZiByZXBseS50YyA9PSAxIGFuZCBu b3QgUmVxdWVzdGVyOjpUQ1AgPT09IHJlcXVlc3RlcgorICAgICAgICAgICAg ICByZXF1ZXN0ZXIuY2xvc2UKKyAgICAgICAgICAgICAgIyBSZXRyeSB2aWEg VENQOgorICAgICAgICAgICAgICByZXF1ZXN0ZXIgPSBtYWtlX3RjcF9yZXF1 ZXN0ZXIKKyAgICAgICAgICAgICAgc2VuZGVycyA9IHt9CisgICAgICAgICAg ICAgICMgVGhpcyB3aWxsIHVzZSBUQ1AgZm9yIGFsbCByZW1haW5pbmcgY2Fu ZGlkYXRlcyAoYXNzdW1pbmcgdGhlCisgICAgICAgICAgICAgICMgY3VycmVu dCBjYW5kaWRhdGUgZG9lcyBub3QgYWxyZWFkeSByZXNwb25kIHN1Y2Nlc3Nm dWxseSB2aWEKKyAgICAgICAgICAgICAgIyBUQ1ApLiAgVGhpcyBtYWtlcyBz ZW5zZSBiZWNhdXNlIHdlIGFscmVhZHkga25vdyB0aGUgZnVsbAorICAgICAg ICAgICAgICAjIHJlc3BvbnNlIHdpbGwgbm90IGZpdCBpbiBhbiB1bnRydW5j YXRlZCBVRFAgcGFja2V0LgorICAgICAgICAgICAgICByZWRvCisgICAgICAg ICAgICBlbHNlCisgICAgICAgICAgICAgIGV4dHJhY3RfcmVzb3VyY2VzKHJl cGx5LCByZXBseV9uYW1lLCB0eXBlY2xhc3MsICZwcm9jKQorICAgICAgICAg ICAgZW5kCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICB3aGVuIFJD b2RlOjpOWERvbWFpbgogICAgICAgICAgICAgcmFpc2UgQ29uZmlnOjpOWERv bWFpbi5uZXcocmVwbHlfbmFtZS50b19zKQpAQCAtNTAyLDcgKzUxNCw3IEBA CiAgICAgICBlbmQKICAgICBlbmQKIAotICAgIGRlZiBtYWtlX3JlcXVlc3Rl ciAjIDpub2RvYzoKKyAgICBkZWYgbWFrZV91ZHBfcmVxdWVzdGVyICMgOm5v ZG9jOgogICAgICAgbmFtZXNlcnZlcl9wb3J0ID0gQGNvbmZpZy5uYW1lc2Vy dmVyX3BvcnQKICAgICAgIGlmIG5hbWVzZXJ2ZXJfcG9ydC5sZW5ndGggPT0g MQogICAgICAgICBSZXF1ZXN0ZXI6OkNvbm5lY3RlZFVEUC5uZXcoKm5hbWVz ZXJ2ZXJfcG9ydFswXSkKQEAgLTUxMSw2ICs1MjMsMTEgQEAKICAgICAgIGVu ZAogICAgIGVuZAogCisgICAgZGVmIG1ha2VfdGNwX3JlcXVlc3RlciAjIDpu b2RvYzoKKyAgICAgIG5hbWVzZXJ2ZXJfcG9ydCA9IEBjb25maWcubmFtZXNl cnZlcl9wb3J0CisgICAgICByZXR1cm4gUmVxdWVzdGVyOjpUQ1AubmV3KCpu YW1lc2VydmVyX3BvcnRbMF0pCisgICAgZW5kCisKICAgICBkZWYgZXh0cmFj dF9yZXNvdXJjZXMobXNnLCBuYW1lLCB0eXBlY2xhc3MpICMgOm5vZG9jOgog ICAgICAgaWYgdHlwZWNsYXNzIDwgUmVzb3VyY2U6OkFOWQogICAgICAgICBu MCA9IE5hbWUuY3JlYXRlKG5hbWUpCg== --mimepart_4c95265f9617b_eedced5be6110d6--