Skip to content

Commit aff8fc8

Browse files
committed
Display better error messages.
1 parent afd6eba commit aff8fc8

File tree

1 file changed

+22
-13
lines changed

1 file changed

+22
-13
lines changed

services/lfs/server.go

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,10 @@ func BatchHandler(ctx *context.Context) {
203203

204204
for _, p := range br.Objects {
205205
if !p.IsValid() {
206-
responseObjects = append(responseObjects, buildObjectResponse(rc, p, false, false, http.StatusUnprocessableEntity))
206+
responseObjects = append(responseObjects, buildObjectResponse(rc, p, false, false, &lfs_module.ObjectError{
207+
Code: http.StatusUnprocessableEntity,
208+
Message: "Oid or size are invalid",
209+
}))
207210
continue
208211
}
209212

@@ -221,6 +224,14 @@ func BatchHandler(ctx *context.Context) {
221224
return
222225
}
223226

227+
if meta != nil && p.Size != meta.Size {
228+
responseObjects = append(responseObjects, buildObjectResponse(rc, p, false, false, &lfs_module.ObjectError{
229+
Code: http.StatusUnprocessableEntity,
230+
Message: fmt.Sprintf("Object %s is not %d bytes", p.Oid, p.Size),
231+
}))
232+
continue
233+
}
234+
224235
var responseObject *lfs_module.ObjectResponse
225236
if isUpload {
226237
if !exists && setting.LFS.MaxFileSize > 0 && p.Size > setting.LFS.MaxFileSize {
@@ -240,16 +251,17 @@ func BatchHandler(ctx *context.Context) {
240251
}
241252
}
242253

243-
responseObject = buildObjectResponse(rc, p, false, !exists, 0)
254+
responseObject = buildObjectResponse(rc, p, false, !exists, nil)
244255
} else {
245-
errorCode := 0
256+
var err *lfs_module.ObjectError
246257
if !exists || meta == nil {
247-
errorCode = http.StatusNotFound
248-
} else if meta.Size != p.Size {
249-
errorCode = http.StatusUnprocessableEntity
258+
err = &lfs_module.ObjectError{
259+
Code: http.StatusNotFound,
260+
Message: http.StatusText(http.StatusNotFound),
261+
}
250262
}
251263

252-
responseObject = buildObjectResponse(rc, p, true, false, errorCode)
264+
responseObject = buildObjectResponse(rc, p, true, false, err)
253265
}
254266
responseObjects = append(responseObjects, responseObject)
255267
}
@@ -333,13 +345,10 @@ func getRequestContext(ctx *context.Context) *requestContext {
333345
}
334346
}
335347

336-
func buildObjectResponse(rc *requestContext, pointer lfs_module.Pointer, download, upload bool, errorCode int) *lfs_module.ObjectResponse {
348+
func buildObjectResponse(rc *requestContext, pointer lfs_module.Pointer, download, upload bool, err *lfs_module.ObjectError) *lfs_module.ObjectResponse {
337349
rep := &lfs_module.ObjectResponse{Pointer: pointer}
338-
if errorCode > 0 {
339-
rep.Error = &lfs_module.ObjectError{
340-
Code: errorCode,
341-
Message: http.StatusText(errorCode),
342-
}
350+
if err != nil {
351+
rep.Error = err
343352
} else {
344353
rep.Actions = make(map[string]*lfs_module.Link)
345354

0 commit comments

Comments
 (0)