clear remaining retries after a final delivery failure

master
Ted Unangst 4 years ago
parent c600581c90
commit 0e1ec60422

@ -16,6 +16,7 @@
package main
import (
"fmt"
"log"
notrand "math/rand"
"time"
@ -43,6 +44,7 @@ func sayitagain(goarounds int64, userid int64, rcpt string, msg []byte) {
drift = 24 * time.Hour
default:
log.Printf("he's dead jim: %s", rcpt)
clearoutbound(rcpt)
return
}
drift += time.Duration(notrand.Int63n(int64(drift / 10)))
@ -57,6 +59,17 @@ func sayitagain(goarounds int64, userid int64, rcpt string, msg []byte) {
}
}
func clearoutbound(rcpt string) {
hostname := originate(rcpt)
if hostname == "" {
return
}
xid := fmt.Sprintf("%%https://%s/%%", hostname)
log.Printf("clearing outbound for %s", xid)
db := opendatabase()
db.Exec("delete from doovers where rcpt like ?", xid)
}
var garage = gate.NewLimiter(40)
func deliverate(goarounds int64, userid int64, rcpt string, msg []byte) {

Loading…
Cancel
Save