Browse Source

avoid infinite loop in next uuid generation

v2ray 10 years ago
parent
commit
ca71c0300f
2 changed files with 10 additions and 0 deletions
  1. 1 0
      common/uuid/uuid.go
  2. 9 0
      common/uuid/uuid_test.go

+ 1 - 0
common/uuid/uuid.go

@@ -47,6 +47,7 @@ func (this *UUID) Next() *UUID {
 		if !newid.Equals(this) {
 			return newid
 		}
+		md5hash.Write([]byte("533eff8a-4113-4b10-b5ce-0f5d76b98cd2"))
 	}
 }
 

+ 9 - 0
common/uuid/uuid_test.go

@@ -50,3 +50,12 @@ func TestRandom(t *testing.T) {
 	assert.StringLiteral(uuid.String()).NotEquals(uuid2.String())
 	assert.Bytes(uuid.Bytes()).NotEquals(uuid2.Bytes())
 }
+
+func TestEquals(t *testing.T) {
+	v2testing.Current(t)
+
+	var uuid *UUID = nil
+	var uuid2 *UUID = nil
+	assert.Bool(uuid.Equals(uuid2)).IsTrue()
+	assert.Bool(uuid.Equals(New())).IsFalse()
+}