From: David Symonds Date: Tue, 1 May 2012 01:33:25 +0000 (+1000) Subject: misc/dashboard/codereview: send mail immediately, and fill in time.Time fields. X-Git-Tag: go1.1rc2~3276 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=dae2992c98bff181b023f27889c513d89714f5ac;p=gostls13.git misc/dashboard/codereview: send mail immediately, and fill in time.Time fields. If we delay the mail sending, we can't send as the current user. If we don't fill in the time.Time fields, datastore.Put will fail because the zero time.Time value is out of its range. R=golang-dev, r CC=golang-dev https://golang.org/cl/6136053 --- diff --git a/misc/dashboard/codereview/dashboard/cl.go b/misc/dashboard/codereview/dashboard/cl.go index a77028994c..bafef439bd 100644 --- a/misc/dashboard/codereview/dashboard/cl.go +++ b/misc/dashboard/codereview/dashboard/cl.go @@ -16,7 +16,6 @@ import ( "appengine" "appengine/datastore" - "appengine/delay" "appengine/mail" "appengine/taskqueue" "appengine/urlfetch" @@ -105,8 +104,6 @@ func (cl *CL) ModifiedAgo() string { return "just now" } -var sendMailLater = delay.Func("send-mail", mail.Send) - func handleAssign(w http.ResponseWriter, r *http.Request) { c := appengine.NewContext(r) @@ -196,7 +193,9 @@ func handleAssign(w http.ResponseWriter, r *http.Request) { } // TODO(dsymonds): Use cl.LastMessageID as the In-Reply-To header // when the appengine/mail package supports that. - sendMailLater.Call(c, msg) + if err := mail.Send(c, msg); err != nil { + c.Errorf("mail.Send: %v", err) + } } } } diff --git a/misc/dashboard/codereview/dashboard/mail.go b/misc/dashboard/codereview/dashboard/mail.go index a4bf1ac3e2..7d91078443 100644 --- a/misc/dashboard/codereview/dashboard/mail.go +++ b/misc/dashboard/codereview/dashboard/mail.go @@ -45,6 +45,12 @@ func handleMail(w http.ResponseWriter, r *http.Request) { if err != nil && err != datastore.ErrNoSuchEntity { return err } + if err == datastore.ErrNoSuchEntity { + // Must set sentinel values for time.Time fields + // if this is a new entity. + cl.Created = time.Unix(0, 0) + cl.Modified = time.Unix(0, 0) + } cl.LastMessageID = msg.Header.Get("Message-ID") _, err = datastore.Put(c, key, cl) return err