mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-05-11 05:55:12 +00:00
@@ -7,10 +7,10 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
var nowFunc func() time.Time = time.Now
|
||||
var nowFunc = time.Now
|
||||
|
||||
// generate_serial takes an old SOA serial number and increments it.
|
||||
func generate_serial(old_serial uint32) uint32 {
|
||||
// generateSerial takes an old SOA serial number and increments it.
|
||||
func generateSerial(oldSerial uint32) uint32 {
|
||||
// Serial numbers are in the format yyyymmddvv
|
||||
// where vv is a version count that starts at 01 each day.
|
||||
// Multiple serial numbers generated on the same day increase vv.
|
||||
@@ -19,9 +19,9 @@ func generate_serial(old_serial uint32) uint32 {
|
||||
// that is smaller than the old one, we punt and increment the old number.
|
||||
// At no time will a serial number == 0 be returned.
|
||||
|
||||
original := old_serial
|
||||
old_serialStr := strconv.FormatUint(uint64(old_serial), 10)
|
||||
var new_serial uint32
|
||||
original := oldSerial
|
||||
oldSerialStr := strconv.FormatUint(uint64(oldSerial), 10)
|
||||
var newSerial uint32
|
||||
|
||||
// Make draft new serial number:
|
||||
today := nowFunc().UTC()
|
||||
@@ -34,38 +34,38 @@ func generate_serial(old_serial uint32) uint32 {
|
||||
draft := uint32(todayNum)*100 + version
|
||||
|
||||
method := "none" // Used only in debugging.
|
||||
if old_serial > draft {
|
||||
if oldSerial > draft {
|
||||
// If old_serial was really slow, upgrade to new yyyymmddvv standard:
|
||||
method = "o>d"
|
||||
new_serial = old_serial + 1
|
||||
new_serial = old_serial + 1
|
||||
} else if old_serial == draft {
|
||||
newSerial = oldSerial + 1
|
||||
newSerial = oldSerial + 1
|
||||
} else if oldSerial == draft {
|
||||
// Edge case: increment old serial:
|
||||
method = "o=d"
|
||||
new_serial = draft + 1
|
||||
} else if len(old_serialStr) != 10 {
|
||||
newSerial = draft + 1
|
||||
} else if len(oldSerialStr) != 10 {
|
||||
// If old_serial is wrong number of digits, upgrade to yyyymmddvv standard:
|
||||
method = "len!=10"
|
||||
new_serial = draft
|
||||
} else if strings.HasPrefix(old_serialStr, todayStr) {
|
||||
newSerial = draft
|
||||
} else if strings.HasPrefix(oldSerialStr, todayStr) {
|
||||
// If old_serial just needs to be incremented:
|
||||
method = "prefix"
|
||||
new_serial = old_serial + 1
|
||||
newSerial = oldSerial + 1
|
||||
} else {
|
||||
// First serial number to be requested today:
|
||||
method = "default"
|
||||
new_serial = draft
|
||||
newSerial = draft
|
||||
}
|
||||
|
||||
if new_serial == 0 {
|
||||
if newSerial == 0 {
|
||||
// We never return 0 as the serial number.
|
||||
new_serial = 1
|
||||
newSerial = 1
|
||||
}
|
||||
if old_serial == new_serial {
|
||||
log.Fatalf("%v: old_serial == new_serial (%v == %v) draft=%v method=%v", original, old_serial, new_serial, draft, method)
|
||||
if oldSerial == newSerial {
|
||||
log.Fatalf("%v: old_serial == new_serial (%v == %v) draft=%v method=%v", original, oldSerial, newSerial, draft, method)
|
||||
}
|
||||
if old_serial > new_serial {
|
||||
log.Fatalf("%v: old_serial > new_serial (%v > %v) draft=%v method=%v", original, old_serial, new_serial, draft, method)
|
||||
if oldSerial > newSerial {
|
||||
log.Fatalf("%v: old_serial > new_serial (%v > %v) draft=%v method=%v", original, oldSerial, newSerial, draft, method)
|
||||
}
|
||||
return new_serial
|
||||
return newSerial
|
||||
}
|
||||
|
Reference in New Issue
Block a user