Fix files not being editable correctly in the panel; closes pterodactyl/panel#2679
This commit is contained in:
parent
de0c67d066
commit
20ece60a72
|
@ -1,5 +1,9 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## v1.1.1
|
||||||
|
### Fixed
|
||||||
|
* Fixes certain files returning invalid data in the request due to a bad header set after sending data down the line.
|
||||||
|
|
||||||
## v1.1.0
|
## v1.1.0
|
||||||
This release **requires** `Panel@1.1.0` or later to run due to API changes.
|
This release **requires** `Panel@1.1.0` or later to run due to API changes.
|
||||||
|
|
||||||
|
|
|
@ -35,10 +35,6 @@ func getServerFileContents(c *gin.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := s.Filesystem().Readfile(p, c.Writer); err != nil {
|
|
||||||
TrackedServerError(err, s).AbortFilesystemError(c)
|
|
||||||
return
|
|
||||||
} else {
|
|
||||||
c.Header("X-Mime-Type", st.Mimetype)
|
c.Header("X-Mime-Type", st.Mimetype)
|
||||||
c.Header("Content-Length", strconv.Itoa(int(st.Info.Size())))
|
c.Header("Content-Length", strconv.Itoa(int(st.Info.Size())))
|
||||||
|
|
||||||
|
@ -48,6 +44,19 @@ func getServerFileContents(c *gin.Context) {
|
||||||
c.Header("Content-Disposition", "attachment; filename="+st.Info.Name())
|
c.Header("Content-Disposition", "attachment; filename="+st.Info.Name())
|
||||||
c.Header("Content-Type", "application/octet-stream")
|
c.Header("Content-Type", "application/octet-stream")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO(dane): should probably come up with a different approach here. If an error is encountered
|
||||||
|
// by this Readfile call you'll end up causing a (recovered) panic in the program because so many
|
||||||
|
// headers have already been set. We should probably add a RawReadfile that just returns the file
|
||||||
|
// to be read and then we can stream from that safely without error.
|
||||||
|
//
|
||||||
|
// Until that becomes a problem though I'm just going to leave this how it is. The panic is recovered
|
||||||
|
// and a normal 500 error is returned to the client to my knowledge. It is also very unlikely to
|
||||||
|
// happen since we're doing so much before this point that would normally throw an error if there
|
||||||
|
// was a problem with the file.
|
||||||
|
if err := s.Filesystem().Readfile(p, c.Writer); err != nil {
|
||||||
|
TrackedServerError(err, s).AbortFilesystemError(c)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user