From: "Roy J. Milican" Date: 2002-04-18T00:35:00+09:00 Subject: odd problem ------------6B201A22DC6484E Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Greetings, I am a ruby newbie and have been going through the 21 days book and I decided to write my fist complex class. This may not be the best way to go about it or the pretties code so beware hehe Basically here is my problem. I'm using this email class to dertmine the validity of an email address. More later but for now thats what it does. It checks sytax, the tld and then looks to make sure the domain has a mx record. Thats about as thorough as I can think of. My problem arries when I take a list in a database of about 300 domains, iterate through them checking to see if each is valid. The program works flawlessly up till email 256. After that all emails return false. This may have something to do with the resolv library as I didn't have much to go on with using it. Any help would be appriated. I've attached what I'm using. require 'mysql' require 'email' myconn = Mysql::new('host','user','password','database') sql_query = "select distinct email from emails" checkemail = myconn.query(sql_query) checkemail.each do |row| email = Email::new(row[0]) if (not email.valid) puts row[0] end end -- Roy Milican roy@milican.com ------------6B201A22DC6484E Content-Type: application/octet-stream; name="email.rb" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="email.rb" IwojRGVzY3JpcHRpb246IEVtYWlsIGNsYXNzIGRlc2lnbmVkIHRvIGdpdmUgZWFzeSBhbmQgYWNj dXJhdGUgdmFsaWRhdGlvbgojICAgICAgICAgICAgIG9mIGVtYWlsIGFkZHJlc3Nlcy4KIwojQXV0 aG9yOiBSb3kgTWlsaWNhbiA8cm95QG1pbGljYW4uY29tPgojCgpyZXF1aXJlICdyZXNvbHYnCgpj bGFzcyBFbWFpbAoKICBkZWYgaW5pdGlhbGl6ZSggZW1haWxfYWRkciApCiAgICBAZW1haWxhZGRy ZXNzID0gZW1haWxfYWRkcgogICAgQGVtYWlsZGF0YSA9IEBlbWFpbGFkZHJlc3Muc3BsaXQoL0Av KQogICAgQHVzZXIgPSBAZW1haWxkYXRhWzBdCiAgICBAZG9tYWluID0gQGVtYWlsZGF0YVsxXQog ICAgZW1haWxkb21haW4gPSBAZG9tYWluLnNjYW4oLy4qXC4oLipcLlthLXpBLVpdezIsNH0pJC8p CiAgICBAcm9vdGRvbWFpbiA9ICIje2VtYWlsZG9tYWlufSIKICBlbmQKCiAgYXR0cl9yZWFkZXIg OnVzZXIgI1JldHVybiB0aGUgdXNlciBwb3J0aW9uIG9mIHRoZSBlbWFpbAogIGF0dHJfcmVhZGVy IDpkb21haW4gI1JldHVybiB0aGUgZG9tYWluIHBvcnRpb24gb2YgdGhlIGVtYWlsCiAgYXR0cl9y ZWFkZXIgOnJvb3Rkb21haW4gI1JldHVybiB0aGUgcm9vdCBkb21haW4gcG9ydCBvZiB0aGUgZG9t YWlucwoKICBkZWYgdmFsaWQoKQogICAgI0RldGVybWluZSBpZiB0aGUgZW1haWwgaXMgdmFsaWQg YW5kIHJldHVybiB0cnVlIG9yIGZhbHNlCiAgICB2YWxpZHJlID0gL15bX2EtekEtWjAtOS1dKyhc LltfYS16QS1aMC05LV0rKSpAW2EtekEtWjAtOS1dKyhcLlthLXpBLVowLTktXSspKihcLihbYS16 QS1aXSl7Miw0fSkkLwogICAgaWYoQGVtYWlsYWRkcmVzcy5zaXplID4gMCkgI01ha2Ugc3VyZSB0 aGUgZW1haWwgaXMgbm90IGVtdHB5CiAgICAgIHRsZCA9IEBkb21haW4uc2NhbigvXC5bYS16QS1a XXsyLDR9JC8pICNHcmFiIHRoZSBUb3AgTGV2ZWwgRG9tYWluCiAgICAgICNEZWZpbmVkIHRoZSBh cnJheSBvZiB2YWxpZCBUb3AgTGV2ZWwgRG9tYWlucwogICAgICB0bGRzID0gJXcoIC5hZXJvIC5i aXogLmNvbSAuY29vcCAuZWR1IC5nb3YgLmluZm8gLmludCAubWlsIC5tdXNldW0gLm5hbWUKICAg ICAgICAgICAubmV0IC5vcmcgLmFjIC5hZCAuYWUgLmFmIC5hZyAuYWkgLmFsIC5hbSAuYW4gLmFv IC5hcSAuYXIgLmFzCiAgICAgICAgICAgLmF0IC5hdSAuYXcgLmF6IC5iYSAuYmIgLmJkIC5iZSAu YmYgLmJnIC5iaCAuYmkgLmJqIC5ibSAuYm4KICAgICAgICAgICAuYm8gLmJyIC5icyAuYnQgLmJ2 IC5idyAuYnkgLmJ6IC5jYSAuY2MgLmNkIC5jZiAuY2cgLmNoIC5jaQogICAgICAgICAgIC5jayAu Y2wgLmNtIC5jbiAuY28gLmNyIC5jcyAuY3UgLmN2IC5jeCAuY3kgLmN6IC5kZSAuZGogLmRrCiAg ICAgICAgICAgLmRtIC5kbyAuZHogLmVjIC5lZSAuZWcgLmVoIC5lciAuZXMgLmV0IC5maSAuZmog LmZrIC5mbSAuZm8KICAgICAgICAgICAuZnIgLmdhIC5nYiAuZ2QgLmdlIC5nZiAuZ2cgLmdoIC5n aSAuZ20gLmduIC5ncCAuZ3EgLmdyIC5ncwogICAgICAgICAgIC5ndCAuZ3UgLmd3IC5neSAuaGsg LmhtIC5obiAuaHIgLmh0IC5odSAuaWQgLmllIC5pbCAuaW0gLmluCiAgICAgICAgICAgLmlvIC5p cSAuaXIgLmlzIC5pdCAuamUgLmptIC5qbyAuanAgLmtlIC5rZyAua2ggLmtpIC5rbSAua24KICAg ICAgICAgICAua3AgLmtyIC5rdyAua3kgLmt6IC5sYSAubGIgLmxjIC5saSAubGsgLmxyIC5scyAu bHQgLmx1IC5sdgogICAgICAgICAgIC5seSAubWEgLm1jIC5tZCAubWcgLm1oIC5tayAubWwgLm1t IC5tbiAubW8gLm1wIC5tcSAubXIgLm1zCiAgICAgICAgICAgLm10IC5tdSAubXYgLm13IC5teCAu bXkgLm16IC5uYSAubmMgLm5lIC5uZiAubmcgLm5pIC5ubCAubm8KICAgICAgICAgICAubnAgLm5y IC5udSAubnogLm9tIC5wYSAucGUgLnBmIC5wZyAucGggLnBrIC5wbCAucG0gLnBuIC5wcgogICAg ICAgICAgIC5wcyAucHQgLnB3IC5weSAucWEgLnJlIC5ybyAucnUgLnJ3IC5zYSAuc2IgLnNjIC5z ZCAuc2UgLnNnCiAgICAgICAgICAgLnNoIC5zaSAuc2ogLnNrIC5zbCAuc20gLnNuIC5zbyAuc3Ig LnN0IC5zdSAuc3YgLnN5IC5zeiAudGMKICAgICAgICAgICAudGQgLnRmIC50ZyAudGggLnRqIC50 ayAudG0gLnRuIC50byAudHAgLnRyIC50dCAudHYgLnR3IC50egogICAgICAgICAgIC51YSAudWcg LnVrIC51bSAudXMgLnV5IC51eiAudmEgLnZjIC52ZSAudmcgLnZpIC52biAudnUgLndmCiAgICAg ICAgICAgLndzIC55ZSAueXQgLnl1IC56YSAuem0gLnpyIC56dykKICAgIAogICAgICBpZiggQGVt YWlsYWRkcmVzcyA9fiB2YWxpZHJlICkgI0RvIGEgcXVpY2sgc3ludGF4IGFuYWx5c2lzCiAgICAg ICAgaWYgKCB0bGRzLmluY2x1ZGU/KHRsZC50b19zLmRvd25jYXNlKSApICNJZiBzeW50YXggaXMg cmlnaHQgY2hlY2sgVExECiAgICAgICAgICAjcmV0dXJuIHRydWUgI1JldHVybiBUcnVlIGlmIFRM RCBjaGVja3Mgb3V0CgkgICAgICBiZWdpbgoJCSNHZXQgdGhlIG1haWwgc2VydmVycwoJCSNHcmFi IHRoZSB3aG9sZSBlbWFpbCBkb21haW4gYW5kIHRyeSB0aGF0CgkgICAgICAgIGRvbWFpbnJlY29y ZCA9IFJlc29sdjo6RE5TLm5ldy5nZXRyZXNvdXJjZXMoQGRvbWFpbiwgUmVzb2x2OjpETlM6OlJl c291cmNlOjpJTjo6TVgpLmNvbGxlY3Qge3xyfCBbci5leGNoYW5nZS50b19zXX0KICAgICAgIAkg ICAgICByZXNjdWUKCQkjcmV0dXJuIGFuIGVtcHR5IGFycmF3IGkuZS4gZmFsc2UKCQlkb21haW5y ZWNvcmQgPSBBcnJheTo6bmV3KCkKCSAgICAgIGVuZAoJICAgICAgYmVnaW4KCQkjSnVzdCBpbiBj YXNlIHRoYXQgZG9lc24ndCB3b3JrIGdldCB0aGUgcm9vdCBkb21haW5zIG14IHJlY29yZAoJCXJv b3Rkb21haW5yZWNvcmQgPSAgUmVzb2x2OjpETlMubmV3LmdldHJlc291cmNlcyhAcm9vdGRvbWFp biwgUmVzb2x2OjpETlM6OlJlc291cmNlOjpJTjo6TVgpLmNvbGxlY3Qge3xyfCBbci5leGNoYW5n ZS50b19zXX0KCSAgICAgIHJlc2N1ZQoJICAgICAgICAjcmV0dXJuIGFuIGVtcHR5IGFycmF3IGku ZS4gZmFsc2UKCQlyb290ZG9tYWlucmVjb3JkID0gQXJyYXk6Om5ldygpCgkgICAgICBlbmQKICAg ICAgICAgIGlmICggKGRvbWFpbnJlY29yZC5zaXplID4gMCkgb3IgKHJvb3Rkb21haW5yZWNvcmQu c2l6ZSA+IDApICkKCQkJCQkJI1RoZXJlIHdlcmUgbXhyZWNvcmRzIHNvIHRoZSBkb21haW4gd2Fz IHZhbGlkCiAgICAgICAgICAgIHJldHVybiB0cnVlCiAgICAgICAgICBlbHNlCgkJCQkJCSNUaGVy ZSB3ZXJlIG5vIG14cmVjb3JkcyBzbyB0aGUgZG9tYWluIHdhcyBub3QgdmFsaWQKICAgICAgICAg ICAgcmV0dXJuIGZhbHNlCiAgICAgICAgICBlbmQKICAgICAgICBlbHNlCiAgICAgICAgICByZXR1 cm4gZmFsc2UgI1JldHVybiBGYWxzZSBpZiBUTEQgZG9lc24ndCBjaGVjayBvdXQKICAgICAgICBl bmQKICAgICAgZWxzZQogICAgICAgIHJldHVybiBmYWxzZSAjUmV0dXJuIEZhbHNlIGlmIGVtYWls IHN5bnRheCBkb2Vzbid0IGNoZWNrIG91dAogICAgICBlbmQKICAgIGVsc2UKCXJldHVybiBmYWxz ZSAjUmV0dXJuIEZhbHNlIGlmIGVtYWlsIGlzIGFuIGVtcHR5IHN0cmluZwogICAgZW5kCiAgZW5k CgplbmQK ------------6B201A22DC6484E--