summaryrefslogtreecommitdiffstats
path: root/ssllabs-scan.go
diff options
context:
space:
mode:
authorIvan Ristic <ivanr@webkreator.com>2015-02-09 17:01:02 +0000
committerIvan Ristic <ivanr@webkreator.com>2015-02-09 17:01:02 +0000
commitd9abbafe86330df708d081571eacb319dbcb2dbc (patch)
tree828a854591bd6f34b478b1d5a06b4226f0ad3629 /ssllabs-scan.go
parent8c49232ff549fa28d038838e3af9c8028392facb (diff)
downloadssllabs-scan-d9abbafe86330df708d081571eacb319dbcb2dbc.zip
ssllabs-scan-d9abbafe86330df708d081571eacb319dbcb2dbc.tar.gz
ssllabs-scan-d9abbafe86330df708d081571eacb319dbcb2dbc.tar.bz2
Update field names to match the API changes. Sleep for 30 seconds after a 429, not 5 minutes.
Diffstat (limited to 'ssllabs-scan.go')
-rw-r--r--ssllabs-scan.go25
1 files changed, 17 insertions, 8 deletions
diff --git a/ssllabs-scan.go b/ssllabs-scan.go
index 3ea3688..c8da7da 100644
--- a/ssllabs-scan.go
+++ b/ssllabs-scan.go
@@ -250,7 +250,8 @@ type LabsResults struct {
type LabsInfo struct {
EngineVersion string
CriteriaVersion string
- ClientMaxAssessments int
+ MaxAssessments int
+ CurrentAssessments int
Messages []string
}
@@ -297,7 +298,7 @@ func invokeGetRepeatedly(url string) (*http.Response, []byte, error) {
// Adjust maximum concurrent requests.
- headerValue := resp.Header.Get("X-ClientMaxAssessments")
+ headerValue := resp.Header.Get("X-Max-Assessments")
if headerValue != "" {
i, err := strconv.Atoi(headerValue)
if err == nil {
@@ -310,7 +311,7 @@ func invokeGetRepeatedly(url string) (*http.Response, []byte, error) {
}
} else {
if logLevel >= LOG_WARNING {
- log.Printf("[WARNING] Ignoring invalid X-ClientMaxAssessments value (%v): %v", headerValue, err)
+ log.Printf("[WARNING] Ignoring invalid X-Max-Assessments value (%v): %v", headerValue, err)
}
}
}
@@ -337,6 +338,10 @@ func invokeGetRepeatedly(url string) (*http.Response, []byte, error) {
if retryCount > 1 {
log.Fatalf("[ERROR] Too many HTTP requests failed with EOF")
}
+
+ if logLevel >= LOG_DEBUG {
+ log.Printf("[DEBUG] HTTP request failed with EOF")
+ }
} else {
log.Fatalf("[ERROR] HTTP request failed: %v", err)
}
@@ -357,13 +362,13 @@ func invokeApi(command string) (*http.Response, []byte, error) {
// Status codes 429, 503, and 529 essentially mean try later. Thus,
// if we encounter them, we sleep for a while and try again.
- if (resp.StatusCode == 429) || (resp.StatusCode == 503) {
+ if resp.StatusCode == 429 {
if logLevel >= LOG_NOTICE {
- log.Printf("[NOTICE] Sleeping for 5 minutes after a %v response", resp.StatusCode)
+ log.Printf("[NOTICE] Sleeping for 30 seconds after a %v response", resp.StatusCode)
}
- time.Sleep(5 * time.Minute)
- } else if resp.StatusCode == 529 {
+ time.Sleep(30 * time.Second)
+ } else if (resp.StatusCode == 503) || (resp.StatusCode == 529) {
// In case of the overloaded server, randomize the sleep time so
// that some clients reconnect earlier and some later.
@@ -556,7 +561,7 @@ func (manager *Manager) run() {
}
}
- maxAssessments = labsInfo.ClientMaxAssessments
+ maxAssessments = labsInfo.MaxAssessments
if maxAssessments <= 0 {
if logLevel >= LOG_WARNING {
@@ -606,6 +611,10 @@ func (manager *Manager) run() {
manager.results.reports = append(manager.results.reports, *e.report)
manager.results.responses = append(manager.results.responses, e.report.rawJSON)
+
+ if logLevel >= LOG_DEBUG {
+ log.Printf("[DEBUG] Active assessments: %v (more: %v)", activeAssessments, moreAssessments)
+ }
// Are we done?
if (activeAssessments == 0) && (moreAssessments == false) {