use two more bytes for xid, but don't bother looking for dupes.

102 bits ought to be enough for anyone
master
Ted Unangst 5 years ago
parent b5249fd53d
commit f5cbf4cadc

@ -18,7 +18,6 @@ package main
import ( import (
"crypto/rand" "crypto/rand"
"crypto/rsa" "crypto/rsa"
"database/sql"
"fmt" "fmt"
"html" "html"
"html/template" "html/template"
@ -77,31 +76,13 @@ func reverbolate(honks []*Honk) {
func xfiltrate() string { func xfiltrate() string {
letters := "BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwxyz1234567891234567891234" letters := "BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwxyz1234567891234567891234"
db := opendatabase()
for { for {
var x int64 var b [18]byte
var b [16]byte
rand.Read(b[:]) rand.Read(b[:])
for i, c := range b { for i, c := range b {
b[i] = letters[c&63] b[i] = letters[c&63]
} }
s := string(b[:]) s := string(b[:])
r := db.QueryRow("select honkid from honks where xid = ?", s)
err := r.Scan(&x)
if err == nil {
continue
}
if err != sql.ErrNoRows {
log.Panicf("err picking xid: %s", err)
}
r = db.QueryRow("select fileid from files where xid = ?", s)
err = r.Scan(&x)
if err == nil {
continue
}
if err != sql.ErrNoRows {
log.Panicf("err picking xid: %s", err)
}
return s return s
} }
} }

Loading…
Cancel
Save