Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make modules/context.Context a context.Context #16031

Merged
merged 4 commits into from
May 31, 2021
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 21 additions & 1 deletion modules/context/context.go
Original file line number Diff line number Diff line change
Expand Up @@ -509,7 +509,7 @@ func (ctx *Context) ParamsInt64(p string) int64 {

// SetParams set params into routes
func (ctx *Context) SetParams(k, v string) {
chiCtx := chi.RouteContext(ctx.Req.Context())
chiCtx := chi.RouteContext(ctx)
chiCtx.URLParams.Add(strings.TrimPrefix(k, ":"), url.PathEscape(v))
}

Expand All @@ -528,6 +528,26 @@ func (ctx *Context) Status(status int) {
ctx.Resp.WriteHeader(status)
}

// Deadline is part of the interface for context.Context and we pass this to the request context
func (ctx *Context) Deadline() (deadline time.Time, ok bool) {
return ctx.Req.Context().Deadline()
}

// Done is part of the interface for context.Context and we pass this to the request context
func (ctx *Context) Done() <-chan struct{} {
return ctx.Req.Context().Done()
}

// Err is part of the interface for context.Context and we pass this to the request context
func (ctx *Context) Err() error {
return ctx.Req.Context().Err()
}

// Value is part of the interface for context.Context and we pass this to the request context
func (ctx *Context) Value(key interface{}) interface{} {
return ctx.Req.Context().Value(key)
}

// Handler represents a custom handler
type Handler func(*Context)

Expand Down
3 changes: 3 additions & 0 deletions modules/graceful/server_http.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
package graceful

import (
"context"
"crypto/tls"
"net"
"net/http"
)

Expand All @@ -16,6 +18,7 @@ func newHTTPServer(network, address, name string, handler http.Handler) (*Server
WriteTimeout: DefaultWriteTimeOut,
MaxHeaderBytes: DefaultMaxHeaderBytes,
Handler: handler,
BaseContext: func(net.Listener) context.Context { return GetManager().HammerContext() },
}
server.OnShutdown = func() {
httpServer.SetKeepAlivesEnabled(false)
Expand Down
4 changes: 2 additions & 2 deletions routers/admin/users.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ func NewUserPost(ctx *context.Context) {
ctx.RenderWithErr(password.BuildComplexityError(ctx), tplUserNew, &form)
return
}
pwned, err := password.IsPwned(ctx.Req.Context(), form.Password)
pwned, err := password.IsPwned(ctx, form.Password)
if pwned {
ctx.Data["Err_Password"] = true
errMsg := ctx.Tr("auth.password_pwned")
Expand Down Expand Up @@ -256,7 +256,7 @@ func EditUserPost(ctx *context.Context) {
ctx.RenderWithErr(password.BuildComplexityError(ctx), tplUserEdit, &form)
return
}
pwned, err := password.IsPwned(ctx.Req.Context(), form.Password)
pwned, err := password.IsPwned(ctx, form.Password)
if pwned {
ctx.Data["Err_Password"] = true
errMsg := ctx.Tr("auth.password_pwned")
Expand Down
4 changes: 2 additions & 2 deletions routers/api/v1/admin/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ func CreateUser(ctx *context.APIContext) {
ctx.Error(http.StatusBadRequest, "PasswordComplexity", err)
return
}
pwned, err := password.IsPwned(ctx.Req.Context(), form.Password)
pwned, err := password.IsPwned(ctx, form.Password)
if pwned {
if err != nil {
log.Error(err.Error())
Expand Down Expand Up @@ -162,7 +162,7 @@ func EditUser(ctx *context.APIContext) {
ctx.Error(http.StatusBadRequest, "PasswordComplexity", err)
return
}
pwned, err := password.IsPwned(ctx.Req.Context(), form.Password)
pwned, err := password.IsPwned(ctx, form.Password)
if pwned {
if err != nil {
log.Error(err.Error())
Expand Down
2 changes: 1 addition & 1 deletion routers/events/events.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ func Events(ctx *context.Context) {
}

// Listen to connection close and un-register messageChan
notify := ctx.Req.Context().Done()
notify := ctx.Done()
ctx.Resp.Flush()

shutdownCtx := graceful.GetManager().ShutdownContext()
Expand Down
4 changes: 2 additions & 2 deletions routers/install.go
Original file line number Diff line number Diff line change
Expand Up @@ -400,7 +400,7 @@ func InstallPost(ctx *context.Context) {
}

// Re-read settings
PostInstallInit(ctx.Req.Context())
PostInstallInit(ctx)

// Create admin account
if len(form.AdminName) > 0 {
Expand Down Expand Up @@ -454,7 +454,7 @@ func InstallPost(ctx *context.Context) {

// Now get the http.Server from this request and shut it down
// NB: This is not our hammerable graceful shutdown this is http.Server.Shutdown
srv := ctx.Req.Context().Value(http.ServerContextKey).(*http.Server)
srv := ctx.Value(http.ServerContextKey).(*http.Server)
go func() {
if err := srv.Shutdown(graceful.GetManager().HammerContext()); err != nil {
log.Error("Unable to shutdown the install server! Error: %v", err)
Expand Down
2 changes: 1 addition & 1 deletion routers/private/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ func FlushQueues(ctx *context.PrivateContext) {
})
return
}
err := queue.GetManager().FlushAll(ctx.Req.Context(), opts.Timeout)
err := queue.GetManager().FlushAll(ctx, opts.Timeout)
if err != nil {
ctx.JSON(http.StatusRequestTimeout, map[string]interface{}{
"err": fmt.Sprintf("%v", err),
Expand Down
2 changes: 1 addition & 1 deletion routers/private/restore_repo.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ func RestoreRepo(ctx *myCtx.PrivateContext) {
}

if err := migrations.RestoreRepository(
ctx.Req.Context(),
ctx,
params.RepoDir,
params.OwnerName,
params.RepoName,
Expand Down
2 changes: 1 addition & 1 deletion routers/repo/blame.go
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ func RefBlame(ctx *context.Context) {
return
}

blameReader, err := git.CreateBlameReader(ctx.Req.Context(), models.RepoPath(userName, repoName), commitID, fileName)
blameReader, err := git.CreateBlameReader(ctx, models.RepoPath(userName, repoName), commitID, fileName)
if err != nil {
ctx.NotFound("CreateBlameReader", err)
return
Expand Down
2 changes: 1 addition & 1 deletion routers/repo/lfs.go
Original file line number Diff line number Diff line change
Expand Up @@ -414,7 +414,7 @@ func LFSPointerFiles(ctx *context.Context) {
err = func() error {
pointerChan := make(chan lfs.PointerBlob)
errChan := make(chan error, 1)
go lfs.SearchPointerBlobs(ctx.Req.Context(), ctx.Repo.GitRepo, pointerChan, errChan)
go lfs.SearchPointerBlobs(ctx, ctx.Repo.GitRepo, pointerChan, errChan)

numPointers := 0
var numAssociated, numNoExist, numAssociatable int
Expand Down
12 changes: 6 additions & 6 deletions routers/user/auth.go
Original file line number Diff line number Diff line change
Expand Up @@ -1011,9 +1011,9 @@ func LinkAccountPostRegister(ctx *context.Context) {
case setting.ImageCaptcha:
valid = context.GetImageCaptcha().VerifyReq(ctx.Req)
case setting.ReCaptcha:
valid, err = recaptcha.Verify(ctx.Req.Context(), form.GRecaptchaResponse)
valid, err = recaptcha.Verify(ctx, form.GRecaptchaResponse)
case setting.HCaptcha:
valid, err = hcaptcha.Verify(ctx.Req.Context(), form.HcaptchaResponse)
valid, err = hcaptcha.Verify(ctx, form.HcaptchaResponse)
default:
ctx.ServerError("Unknown Captcha Type", fmt.Errorf("Unknown Captcha Type: %s", setting.Service.CaptchaType))
return
Expand Down Expand Up @@ -1153,9 +1153,9 @@ func SignUpPost(ctx *context.Context) {
case setting.ImageCaptcha:
valid = context.GetImageCaptcha().VerifyReq(ctx.Req)
case setting.ReCaptcha:
valid, err = recaptcha.Verify(ctx.Req.Context(), form.GRecaptchaResponse)
valid, err = recaptcha.Verify(ctx, form.GRecaptchaResponse)
case setting.HCaptcha:
valid, err = hcaptcha.Verify(ctx.Req.Context(), form.HcaptchaResponse)
valid, err = hcaptcha.Verify(ctx, form.HcaptchaResponse)
default:
ctx.ServerError("Unknown Captcha Type", fmt.Errorf("Unknown Captcha Type: %s", setting.Service.CaptchaType))
return
Expand Down Expand Up @@ -1191,7 +1191,7 @@ func SignUpPost(ctx *context.Context) {
ctx.RenderWithErr(password.BuildComplexityError(ctx), tplSignUp, &form)
return
}
pwned, err := password.IsPwned(ctx.Req.Context(), form.Password)
pwned, err := password.IsPwned(ctx, form.Password)
if pwned {
errMsg := ctx.Tr("auth.password_pwned")
if err != nil {
Expand Down Expand Up @@ -1620,7 +1620,7 @@ func ResetPasswdPost(ctx *context.Context) {
ctx.Data["Err_Password"] = true
ctx.RenderWithErr(password.BuildComplexityError(ctx), tplResetPassword, nil)
return
} else if pwned, err := password.IsPwned(ctx.Req.Context(), passwd); pwned || err != nil {
} else if pwned, err := password.IsPwned(ctx, passwd); pwned || err != nil {
errMsg := ctx.Tr("auth.password_pwned")
if err != nil {
log.Error(err.Error())
Expand Down
4 changes: 2 additions & 2 deletions routers/user/auth_openid.go
Original file line number Diff line number Diff line change
Expand Up @@ -385,13 +385,13 @@ func RegisterOpenIDPost(ctx *context.Context) {
ctx.ServerError("", err)
return
}
valid, err = recaptcha.Verify(ctx.Req.Context(), form.GRecaptchaResponse)
valid, err = recaptcha.Verify(ctx, form.GRecaptchaResponse)
case setting.HCaptcha:
if err := ctx.Req.ParseForm(); err != nil {
ctx.ServerError("", err)
return
}
valid, err = hcaptcha.Verify(ctx.Req.Context(), form.HcaptchaResponse)
valid, err = hcaptcha.Verify(ctx, form.HcaptchaResponse)
default:
ctx.ServerError("Unknown Captcha Type", fmt.Errorf("Unknown Captcha Type: %s", setting.Service.CaptchaType))
return
Expand Down
2 changes: 1 addition & 1 deletion routers/user/setting/account.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ func AccountPost(ctx *context.Context) {
ctx.Flash.Error(ctx.Tr("form.password_not_match"))
} else if !password.IsComplexEnough(form.Password) {
ctx.Flash.Error(password.BuildComplexityError(ctx))
} else if pwned, err := password.IsPwned(ctx.Req.Context(), form.Password); pwned || err != nil {
} else if pwned, err := password.IsPwned(ctx, form.Password); pwned || err != nil {
errMsg := ctx.Tr("auth.password_pwned")
if err != nil {
log.Error(err.Error())
Expand Down
4 changes: 2 additions & 2 deletions services/archiver/archiver.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ func (aReq *ArchiveRequest) IsComplete() bool {
func (aReq *ArchiveRequest) WaitForCompletion(ctx *context.Context) bool {
select {
case <-aReq.cchan:
case <-ctx.Req.Context().Done():
case <-ctx.Done():
}

return aReq.IsComplete()
Expand All @@ -92,7 +92,7 @@ func (aReq *ArchiveRequest) TimedWaitForCompletion(ctx *context.Context, dur tim
case <-time.After(dur):
timeout = true
case <-aReq.cchan:
case <-ctx.Req.Context().Done():
case <-ctx.Done():
}

return aReq.IsComplete(), timeout
Expand Down