Compare commits

...

1 Commits

Author SHA1 Message Date
Lea Anthony
77e9dfd412 [linux] Attempt to handle 404 2021-12-05 19:41:51 +11:00
2 changed files with 16 additions and 4 deletions

View File

@@ -8,7 +8,7 @@ func TranslateUriToFile(uri string, expectedScheme string, expectedHost string)
return "", false, err
}
if url.Scheme != expectedScheme || url.Host != expectedHost {
if url.Scheme != expectedScheme || (len(expectedHost) > 0 && url.Host != expectedHost) {
return "", false, nil
}

View File

@@ -24,6 +24,7 @@ import "C"
import (
"context"
"encoding/json"
"fmt"
"log"
"os"
"strconv"
@@ -342,11 +343,22 @@ func (f *Frontend) processRequest(request unsafe.Pointer) {
// Load file from asset store
content, mimeType, err := f.assets.Load(file)
if err != nil {
return
}
// TODO How to return 404/500 errors to webkit?
if err != nil {
if os.IsNotExist(err) {
message := C.CString("not found")
defer C.free(unsafe.Pointer(message))
C.webkit_uri_scheme_request_finish_error(req, C.g_error_new_literal(C.G_FILE_ERROR_NOENT, C.int(404), message))
} else {
err = fmt.Errorf("Error processing request %s: %w", uri, err)
f.logger.Error(err.Error())
message := C.CString("internal server error")
defer C.free(unsafe.Pointer(message))
C.webkit_uri_scheme_request_finish_error(req, C.g_error_new_literal(C.G_FILE_ERROR_NOENT, C.int(500), message))
}
return
}
cContent := C.CString(string(content))
defer C.free(unsafe.Pointer(cContent))