Investigate MAC generation / comparison
ThomasLeister opened this issue · 2 comments
There seems to be a bug in Prosody filer which leads to wrong MAC calculation and therefore blocks some uploads once in a while. Re-trying to upload the file solves the issue in most cases. Sometimes more that one retry is needed until successful upload.
I could not recreate the error case so far - it seems to be quite random to me.
Maybe this is related to any race conditions / parallel execution / comparison in the code.
MAC comp is fine, but fileStorePath is not valid if Path begins with "d" after upload/
See example:
package main
import (
"fmt"
"strings"
)
const UploadSubDir = "upload/"
func fileStorePath(path string) string {
fileStorePath := strings.TrimLeft(path, UploadSubDir)
return fileStorePath
}
func main() {
fmt.Println(fileStorePath("/upload/532545f-54b3-49b8-82ad-24495955ec95/zpFSnXqQRhi5w_s0EH6PVw.jpg?v=3fee04f56c3c6eeb3f901ed6c56"))
fmt.Println(fileStorePath("/upload/d808e7416-aa5f-4ba4-8485-c9fecedbef5f/zpFSnXqQRhi5w_s0EH6PVw.jpg?v=1c5eff17ec5c9112903a69beb"))
fmt.Println(fileStorePath("/upload/e808e7416-aa5f-4ba4-8485-c9fecedbef5f/zpFSnXqQRhi5w_s0EH6PVw.jpg?v=1c5eff17ec5c9112903a69beb"))
}
Output:
532545f-54b3-49b8-82ad-24495955ec95/zpFSnXqQRhi5w_s0EH6PVw.jpg?v=3fee04f56c3c6eeb3f901ed6c56
808e7416-aa5f-4ba4-8485-c9fecedbef5f/zpFSnXqQRhi5w_s0EH6PVw.jpg?v=1c5eff17ec5c9112903a69beb
e808e7416-aa5f-4ba4-8485-c9fecedbef5f/zpFSnXqQRhi5w_s0EH6PVw.jpg?v=1c5eff17ec5c9112903a69beb
(second example string is not same as output - "d" in the beginning is missing. the others are okay).
Investigating ...
Reason for bug: Misuse of TrimLeft() function. Use TrimPrefix() to archieve goal.