{"action":"created","comment":{"url":"https://api.github.com/repos/letsencrypt/boulder/pulls/comments/35105184","id":35105184,"diff_hunk":"@@ -38,7 +38,7 @@ func main() {\n \t\tvai := va.NewValidationAuthorityImpl(c.CA.TestMode)\n \t\tdnsTimeout, err := time.ParseDuration(c.VA.DNSTimeout)\n \t\tcmd.FailOnError(err, \"Couldn't parse DNS timeout\")\n-\t\tvai.DNSResolver = core.NewDNSResolver(dnsTimeout, []string{c.VA.DNSResolver})\n+\t\tvai.DNSResolver = core.NewDNSResolverImpl(dnsTimeout, []string{c.VA.DNSResolver})","path":"cmd/boulder-va/main.go","position":5,"original_position":5,"commit_id":"d403a4224b6265364dcc0ff971b57c5af23e014b","original_commit_id":"d403a4224b6265364dcc0ff971b57c5af23e014b","user":{"login":"bifurcation","id":75597,"avatar_url":"https://avatars.githubusercontent.com/u/75597?v=3","gravatar_id":"","url":"https://api.github.com/users/bifurcation","html_url":"https://github.com/bifurcation","followers_url":"https://api.github.com/users/bifurcation/followers","following_url":"https://api.github.com/users/bifurcation/following{/other_user}","gists_url":"https://api.github.com/users/bifurcation/gists{/gist_id}","starred_url":"https://api.github.com/users/bifurcation/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bifurcation/subscriptions","organizations_url":"https://api.github.com/users/bifurcation/orgs","repos_url":"https://api.github.com/users/bifurcation/repos","events_url":"https://api.github.com/users/bifurcation/events{/privacy}","received_events_url":"https://api.github.com/users/bifurcation/received_events","type":"User","site_admin":false},"body":"This naming change is unnecessary and unhelpful.","created_at":"2015-07-21T14:07:13Z","updated_at":"2015-07-21T14:07:13Z","html_url":"https://github.com/letsencrypt/boulder/pull/413#discussion_r35105184","pull_request_url":"https://api.github.com/repos/letsencrypt/boulder/pulls/413","_links":{"self":{"href":"https://api.github.com/repos/letsencrypt/boulder/pulls/comments/35105184"},"html":{"href":"https://github.com/letsencrypt/boulder/pull/413#discussion_r35105184"},"pull_request":{"href":"https://api.github.com/repos/letsencrypt/boulder/pulls/413"}}},"pull_request":{"url":"https://api.github.com/repos/letsencrypt/boulder/pulls/413","id":38602536,"html_url":"https://github.com/letsencrypt/boulder/pull/413","diff_url":"https://github.com/letsencrypt/boulder/pull/413.diff","patch_url":"https://github.com/letsencrypt/boulder/pull/413.patch","issue_url":"https://api.github.com/repos/letsencrypt/boulder/issues/413","number":413,"state":"open","locked":false,"title":"Remove local DNSSEC checking","user":{"login":"rolandshoemaker","id":5080674,"avatar_url":"https://avatars.githubusercontent.com/u/5080674?v=3","gravatar_id":"","url":"https://api.github.com/users/rolandshoemaker","html_url":"https://github.com/rolandshoemaker","followers_url":"https://api.github.com/users/rolandshoemaker/followers","following_url":"https://api.github.com/users/rolandshoemaker/following{/other_user}","gists_url":"https://api.github.com/users/rolandshoemaker/gists{/gist_id}","starred_url":"https://api.github.com/users/rolandshoemaker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rolandshoemaker/subscriptions","organizations_url":"https://api.github.com/users/rolandshoemaker/orgs","repos_url":"https://api.github.com/users/rolandshoemaker/repos","events_url":"https://api.github.com/users/rolandshoemaker/events{/privacy}","received_events_url":"https://api.github.com/users/rolandshoemaker/received_events","type":"User","site_admin":false},"body":"This is a follow-up to #405 and #406 from yesterday. #406 only removed the `LookupHost` checks and didn't touch the underlying `LookupDNSSEC` usage that remained in use in `validateDNS` and `CheckCAARecords` (and the base DNS methods in `core/dns.go` these functions were calling).\r\n\r\nThis PR removes `LookupDNSSEC` and just fails on SERVFAIL from the upstream resolver. It also clears out the usage of `core.DNSSECError` and `core.DNSSECProblem`, and adds a method `parseDNSError` to retrieve slightly more useful information from the errors returned from `Lookup...` methods.\r\n\r\nI've added the `LookupHost` (without underlying `LookupDNSSEC` logic) checks back in so we can differentiate between SERVFAIL and unknown host before `client.Do(httpRequest)` and `tls.DialWithDialer` since these will only tell us if the DNS connection timed out. (Although I'll happily be convinced this isn't necessary)\r\n\r\nI've changed `LookupCAA` to return an empty list of CAA records on SERVFAIL after a conversation with @bifurcation, this will allow testing with DNS servers that don't support CAA queries (looking at you Cloudflare) for now but should probably be changed/reverted eventually... If we can configure the production resolver to return REFUSED for rejected queries and   SERVFAIL for validation/other resolver failures then we can change the behavior to return an empty list on the former and fail with a validation error on the latter to be cleaner. \r\n\r\nFinally I've also added timeout checks to all of the live DNS tests in `core/dns_test.go` and `va/validation-authority_test.go` until #401 is resolved as the timeout errors both locally and on travis have started getting kind of annoying recently when using `8.8.8.8`.\r\n\r\nPing @bifurcation @jcjones.","created_at":"2015-06-25T22:58:04Z","updated_at":"2015-07-21T14:07:13Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ce20b1c33a982854a04a538b360082b448813c7e","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/letsencrypt/boulder/pulls/413/commits","review_comments_url":"https://api.github.com/repos/letsencrypt/boulder/pulls/413/comments","review_comment_url":"https://api.github.com/repos/letsencrypt/boulder/pulls/comments{/number}","comments_url":"https://api.github.com/repos/letsencrypt/boulder/issues/413/comments","statuses_url":"https://api.github.com/repos/letsencrypt/boulder/statuses/d403a4224b6265364dcc0ff971b57c5af23e014b","head":{"label":"letsencrypt:dnssec-cleanup","ref":"dnssec-cleanup","sha":"d403a4224b6265364dcc0ff971b57c5af23e014b","user":{"login":"letsencrypt","id":9289019,"avatar_url":"https://avatars.githubusercontent.com/u/9289019?v=3","gravatar_id":"","url":"https://api.github.com/users/letsencrypt","html_url":"https://github.com/letsencrypt","followers_url":"https://api.github.com/users/letsencrypt/followers","following_url":"https://api.github.com/users/letsencrypt/following{/other_user}","gists_url":"https://api.github.com/users/letsencrypt/gists{/gist_id}","starred_url":"https://api.github.com/users/letsencrypt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/letsencrypt/subscriptions","organizations_url":"https://api.github.com/users/letsencrypt/orgs","repos_url":"https://api.github.com/users/letsencrypt/repos","events_url":"https://api.github.com/users/letsencrypt/events{/privacy}","received_events_url":"https://api.github.com/users/letsencrypt/received_events","type":"Organization","site_admin":false},"repo":{"id":28283593,"name":"boulder","full_name":"letsencrypt/boulder","owner":{"login":"letsencrypt","id":9289019,"avatar_url":"https://avatars.githubusercontent.com/u/9289019?v=3","gravatar_id":"","url":"https://api.github.com/users/letsencrypt","html_url":"https://github.com/letsencrypt","followers_url":"https://api.github.com/users/letsencrypt/followers","following_url":"https://api.github.com/users/letsencrypt/following{/other_user}","gists_url":"https://api.github.com/users/letsencrypt/gists{/gist_id}","starred_url":"https://api.github.com/users/letsencrypt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/letsencrypt/subscriptions","organizations_url":"https://api.github.com/users/letsencrypt/orgs","repos_url":"https://api.github.com/users/letsencrypt/repos","events_url":"https://api.github.com/users/letsencrypt/events{/privacy}","received_events_url":"https://api.github.com/users/letsencrypt/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/letsencrypt/boulder","description":"An ACME-based CA, written in Go.","fork":false,"url":"https://api.github.com/repos/letsencrypt/boulder","forks_url":"https://api.github.com/repos/letsencrypt/boulder/forks","keys_url":"https://api.github.com/repos/letsencrypt/boulder/keys{/key_id}","collaborators_url":"https://api.github.com/repos/letsencrypt/boulder/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/letsencrypt/boulder/teams","hooks_url":"https://api.github.com/repos/letsencrypt/boulder/hooks","issue_events_url":"https://api.github.com/repos/letsencrypt/boulder/issues/events{/number}","events_url":"https://api.github.com/repos/letsencrypt/boulder/events","assignees_url":"https://api.github.com/repos/letsencrypt/boulder/assignees{/user}","branches_url":"https://api.github.com/repos/letsencrypt/boulder/branches{/branch}","tags_url":"https://api.github.com/repos/letsencrypt/boulder/tags","blobs_url":"https://api.github.com/repos/letsencrypt/boulder/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/letsencrypt/boulder/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/letsencrypt/boulder/git/refs{/sha}","trees_url":"https://api.github.com/repos/letsencrypt/boulder/git/trees{/sha}","statuses_url":"https://api.github.com/repos/letsencrypt/boulder/statuses/{sha}","languages_url":"https://api.github.com/repos/letsencrypt/boulder/languages","stargazers_url":"https://api.github.com/repos/letsencrypt/boulder/stargazers","contributors_url":"https://api.github.com/repos/letsencrypt/boulder/contributors","subscribers_url":"https://api.github.com/repos/letsencrypt/boulder/subscribers","subscription_url":"https://api.github.com/repos/letsencrypt/boulder/subscription","commits_url":"https://api.github.com/repos/letsencrypt/boulder/commits{/sha}","git_commits_url":"https://api.github.com/repos/letsencrypt/boulder/git/commits{/sha}","comments_url":"https://api.github.com/repos/letsencrypt/boulder/comments{/number}","issue_comment_url":"https://api.github.com/repos/letsencrypt/boulder/issues/comments{/number}","contents_url":"https://api.github.com/repos/letsencrypt/boulder/contents/{+path}","compare_url":"https://api.github.com/repos/letsencrypt/boulder/compare/{base}...{head}","merges_url":"https://api.github.com/repos/letsencrypt/boulder/merges","archive_url":"https://api.github.com/repos/letsencrypt/boulder/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/letsencrypt/boulder/downloads","issues_url":"https://api.github.com/repos/letsencrypt/boulder/issues{/number}","pulls_url":"https://api.github.com/repos/letsencrypt/boulder/pulls{/number}","milestones_url":"https://api.github.com/repos/letsencrypt/boulder/milestones{/number}","notifications_url":"https://api.github.com/repos/letsencrypt/boulder/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/letsencrypt/boulder/labels{/name}","releases_url":"https://api.github.com/repos/letsencrypt/boulder/releases{/id}","created_at":"2014-12-21T00:29:54Z","updated_at":"2015-07-20T12:42:58Z","pushed_at":"2015-07-21T01:08:26Z","git_url":"git://github.com/letsencrypt/boulder.git","ssh_url":"git@github.com:letsencrypt/boulder.git","clone_url":"https://github.com/letsencrypt/boulder.git","svn_url":"https://github.com/letsencrypt/boulder","homepage":null,"size":14874,"stargazers_count":578,"watchers_count":578,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":45,"mirror_url":null,"open_issues_count":91,"forks":45,"open_issues":91,"watchers":578,"default_branch":"master"}},"base":{"label":"letsencrypt:master","ref":"master","sha":"8f475a049edf46654129810152daed174b661ae5","user":{"login":"letsencrypt","id":9289019,"avatar_url":"https://avatars.githubusercontent.com/u/9289019?v=3","gravatar_id":"","url":"https://api.github.com/users/letsencrypt","html_url":"https://github.com/letsencrypt","followers_url":"https://api.github.com/users/letsencrypt/followers","following_url":"https://api.github.com/users/letsencrypt/following{/other_user}","gists_url":"https://api.github.com/users/letsencrypt/gists{/gist_id}","starred_url":"https://api.github.com/users/letsencrypt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/letsencrypt/subscriptions","organizations_url":"https://api.github.com/users/letsencrypt/orgs","repos_url":"https://api.github.com/users/letsencrypt/repos","events_url":"https://api.github.com/users/letsencrypt/events{/privacy}","received_events_url":"https://api.github.com/users/letsencrypt/received_events","type":"Organization","site_admin":false},"repo":{"id":28283593,"name":"boulder","full_name":"letsencrypt/boulder","owner":{"login":"letsencrypt","id":9289019,"avatar_url":"https://avatars.githubusercontent.com/u/9289019?v=3","gravatar_id":"","url":"https://api.github.com/users/letsencrypt","html_url":"https://github.com/letsencrypt","followers_url":"https://api.github.com/users/letsencrypt/followers","following_url":"https://api.github.com/users/letsencrypt/following{/other_user}","gists_url":"https://api.github.com/users/letsencrypt/gists{/gist_id}","starred_url":"https://api.github.com/users/letsencrypt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/letsencrypt/subscriptions","organizations_url":"https://api.github.com/users/letsencrypt/orgs","repos_url":"https://api.github.com/users/letsencrypt/repos","events_url":"https://api.github.com/users/letsencrypt/events{/privacy}","received_events_url":"https://api.github.com/users/letsencrypt/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/letsencrypt/boulder","description":"An ACME-based CA, written in Go.","fork":false,"url":"https://api.github.com/repos/letsencrypt/boulder","forks_url":"https://api.github.com/repos/letsencrypt/boulder/forks","keys_url":"https://api.github.com/repos/letsencrypt/boulder/keys{/key_id}","collaborators_url":"https://api.github.com/repos/letsencrypt/boulder/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/letsencrypt/boulder/teams","hooks_url":"https://api.github.com/repos/letsencrypt/boulder/hooks","issue_events_url":"https://api.github.com/repos/letsencrypt/boulder/issues/events{/number}","events_url":"https://api.github.com/repos/letsencrypt/boulder/events","assignees_url":"https://api.github.com/repos/letsencrypt/boulder/assignees{/user}","branches_url":"https://api.github.com/repos/letsencrypt/boulder/branches{/branch}","tags_url":"https://api.github.com/repos/letsencrypt/boulder/tags","blobs_url":"https://api.github.com/repos/letsencrypt/boulder/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/letsencrypt/boulder/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/letsencrypt/boulder/git/refs{/sha}","trees_url":"https://api.github.com/repos/letsencrypt/boulder/git/trees{/sha}","statuses_url":"https://api.github.com/repos/letsencrypt/boulder/statuses/{sha}","languages_url":"https://api.github.com/repos/letsencrypt/boulder/languages","stargazers_url":"https://api.github.com/repos/letsencrypt/boulder/stargazers","contributors_url":"https://api.github.com/repos/letsencrypt/boulder/contributors","subscribers_url":"https://api.github.com/repos/letsencrypt/boulder/subscribers","subscription_url":"https://api.github.com/repos/letsencrypt/boulder/subscription","commits_url":"https://api.github.com/repos/letsencrypt/boulder/commits{/sha}","git_commits_url":"https://api.github.com/repos/letsencrypt/boulder/git/commits{/sha}","comments_url":"https://api.github.com/repos/letsencrypt/boulder/comments{/number}","issue_comment_url":"https://api.github.com/repos/letsencrypt/boulder/issues/comments{/number}","contents_url":"https://api.github.com/repos/letsencrypt/boulder/contents/{+path}","compare_url":"https://api.github.com/repos/letsencrypt/boulder/compare/{base}...{head}","merges_url":"https://api.github.com/repos/letsencrypt/boulder/merges","archive_url":"https://api.github.com/repos/letsencrypt/boulder/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/letsencrypt/boulder/downloads","issues_url":"https://api.github.com/repos/letsencrypt/boulder/issues{/number}","pulls_url":"https://api.github.com/repos/letsencrypt/boulder/pulls{/number}","milestones_url":"https://api.github.com/repos/letsencrypt/boulder/milestones{/number}","notifications_url":"https://api.github.com/repos/letsencrypt/boulder/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/letsencrypt/boulder/labels{/name}","releases_url":"https://api.github.com/repos/letsencrypt/boulder/releases{/id}","created_at":"2014-12-21T00:29:54Z","updated_at":"2015-07-20T12:42:58Z","pushed_at":"2015-07-21T01:08:26Z","git_url":"git://github.com/letsencrypt/boulder.git","ssh_url":"git@github.com:letsencrypt/boulder.git","clone_url":"https://github.com/letsencrypt/boulder.git","svn_url":"https://github.com/letsencrypt/boulder","homepage":null,"size":14874,"stargazers_count":578,"watchers_count":578,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":45,"mirror_url":null,"open_issues_count":91,"forks":45,"open_issues":91,"watchers":578,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/letsencrypt/boulder/pulls/413"},"html":{"href":"https://github.com/letsencrypt/boulder/pull/413"},"issue":{"href":"https://api.github.com/repos/letsencrypt/boulder/issues/413"},"comments":{"href":"https://api.github.com/repos/letsencrypt/boulder/issues/413/comments"},"review_comments":{"href":"https://api.github.com/repos/letsencrypt/boulder/pulls/413/comments"},"review_comment":{"href":"https://api.github.com/repos/letsencrypt/boulder/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/letsencrypt/boulder/pulls/413/commits"},"statuses":{"href":"https://api.github.com/repos/letsencrypt/boulder/statuses/d403a4224b6265364dcc0ff971b57c5af23e014b"}}}}