skygear-server icon indicating copy to clipboard operation
skygear-server copied to clipboard

Panic when uploading a asset

Open limouren opened this issue 7 years ago • 1 comments

An panic is raised when a file is uploaded without Content-Type header. User would generally expect a error message instead of a panic occurred while handling request: runtime error: index out of range.

A panic is raised when I try to upload a file...

Here is an output when using httpie. I can provide CURL equivalence if needed.

➜  client git:(master) ✗ http --form -p HhBb POST http://localhost:3000/files/640c9d3e-1400-4055-8788-c2eccb295336-IMG-20171112-WA0004.jpg X-Skygear-API-Key:FAKE_API_KEY file@/Users/limouren/Downloads/IMG-20171112-WA0004.jpg
POST /files/640c9d3e-1400-4055-8788-c2eccb295336-IMG-20171112-WA0004.jpg HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 251872
Content-Type: multipart/form-data; boundary=dda7fa180c1e4434a70126edfb8a6018
Host: localhost:3000
User-Agent: HTTPie/0.9.3
X-Skygear-API-Key: FAKE_API_KEY



+-----------------------------------------+
| NOTE: binary data not shown in terminal |
+-----------------------------------------+

HTTP/1.1 500 Internal Server Error
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Content-Length: 135
Content-Type: application/json
Date: Tue, 14 Nov 2017 07:36:24 GMT
Server: Skygear Server/1.1.2

{
    "error": {
        "code": 10000, 
        "message": "panic occurred while handling request: runtime error: index out of range", 
        "name": "UnexpectedError"
    }
}

Here is skygear-server's log:

DEBU[0006] POST /files/640c9d3e-1400-4055-8788-c2eccb295336-IMG-20171112-WA0004.jpg  logger=router
DEBU[0006] ------ Header: ------                         logger=router
DEBU[0006] X-Skygear-Api-Key: [FAKE_API_KEY]             logger=router
DEBU[0006] Accept: [*/*]                                 logger=router
DEBU[0006] Content-Type: [multipart/form-data; boundary=7304365069044c6ea58be96aeb015edf]  logger=router
DEBU[0006] Content-Length: [251872]                      logger=router
DEBU[0006] Accept-Encoding: [gzip, deflate]              logger=router
DEBU[0006] User-Agent: [HTTPie/0.9.3]                    logger=router
DEBU[0006] Connection: [keep-alive]                      logger=router
DEBU[0006] ------ Request: ------                        logger=router
DEBU[0006] 251872 bytes of request body                  logger=router
DEBU[0006] Matched params: [640c9d3e-1400-4055-8788-c2eccb295336-IMG-20171112-WA0004.jpg]  logger=router
DEBU[0006] Opening DBConn: {pq [CENSORED] postgresql://localhost/cms?sslmode=disable}  logger=preprocessor
DEBU[0006] Get DB OK                                     logger=preprocessor
ERRO[0006] panic occurred while handling request         logger=router recovered="runtime error: index out of range"
ERRO[0006] goroutine 58 [running]:
runtime/debug.Stack(0x4741120, 0x47363a0, 0x4cd2e80)
	/usr/local/Cellar/go/1.9/libexec/src/runtime/debug/stack.go:24 +0xa7
github.com/skygeario/skygear-server/pkg/server/router.errorFromRecoveringPanic(0x47363a0, 0x4cd2e80, 0x1, 0x1)
	/Users/limouren/go/src/github.com/skygeario/skygear-server/pkg/server/router/errors.go:64 +0x1ad
github.com/skygeario/skygear-server/pkg/server/router.(*commonRouter).callHandler.func1(0xc4201d1200, 0xc420155f78)
	/Users/limouren/go/src/github.com/skygeario/skygear-server/pkg/server/router/common.go:134 +0xed
panic(0x47363a0, 0x4cd2e80)
	/usr/local/Cellar/go/1.9/libexec/src/runtime/panic.go:491 +0x283
github.com/skygeario/skygear-server/pkg/server/handler.parseUploadFileRequest(0xc4202b62c0, 0x48159e9, 0x4, 0xc42001840d)
	/Users/limouren/go/src/github.com/skygeario/skygear-server/pkg/server/handler/file.go:293 +0x6ee
github.com/skygeario/skygear-server/pkg/server/handler.(*UploadFileHandler).Handle(0xc42007f720, 0xc4202b62c0, 0xc4201d1200)
	/Users/limouren/go/src/github.com/skygeario/skygear-server/pkg/server/handler/file.go:192 +0x56
github.com/skygeario/skygear-server/pkg/server/router.(*commonRouter).callHandler(0xc42044f650, 0x4ca1760, 0xc42007f720, 0xc4201eb200, 0x2, 0x2, 0xc4202b62c0, 0xc4201d1200, 0xc8)
	/Users/limouren/go/src/github.com/skygeario/skygear-server/pkg/server/router/common.go:149 +0x13b
github.com/skygeario/skygear-server/pkg/server/router.(*commonRouter).HandlePayload.func2(0xc4202a68f8, 0xc42044f650, 0x4ca1760, 0xc42007f720, 0xc4201eb200, 0x2, 0x2, 0xc4202b62c0, 0xc4201d1200, 0xc4201894a0)
	/Users/limouren/go/src/github.com/skygeario/skygear-server/pkg/server/router/common.go:113 +0x81
created by github.com/skygeario/skygear-server/pkg/server/router.(*commonRouter).HandlePayload
	/Users/limouren/go/src/github.com/skygeario/skygear-server/pkg/server/router/common.go:112 +0x1f6
  logger=router
DEBU[0006] ------ Response: ------                       logger=router
DEBU[0006] 135 bytes of response body                    logger=router
  • Skygear Server Date/Version: v1.1.2
  • Application Platform: MacOS 10.13.1 (17B48)
  • [ ] Is this a regression?
  • [x] Attached logs, screenshots

Expected Results

Either success or failure with reason.

Actual Results

See issue description.

Steps to reproduce

See issue description.

limouren avatar Nov 14 '17 07:11 limouren

Added server log.

limouren avatar Nov 14 '17 07:11 limouren