mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-03 06:01:52 +08:00
[linux] 404 handling
This commit is contained in:
parent
5c24f8bf83
commit
7ede3ed08a
@ -16,7 +16,7 @@ static inline void processDispatchID(gpointer id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void gtkDispatch(int id) {
|
static void gtkDispatch(int id) {
|
||||||
gdk_threads_add_idle((GSourceFunc)processDispatchID, GINT_TO_POINTER(id));
|
g_idle_add((GSourceFunc)processDispatchID, GINT_TO_POINTER(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
*/
|
*/
|
||||||
@ -24,6 +24,7 @@ import "C"
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
@ -304,7 +305,7 @@ func callDispatchedMethod(cid C.int) {
|
|||||||
id := int(cid)
|
id := int(cid)
|
||||||
fn := dispatchCallbacks[id]
|
fn := dispatchCallbacks[id]
|
||||||
if fn != nil {
|
if fn != nil {
|
||||||
go fn()
|
fn()
|
||||||
dispatchCallbackLock.Lock()
|
dispatchCallbackLock.Lock()
|
||||||
delete(dispatchCallbacks, id)
|
delete(dispatchCallbacks, id)
|
||||||
dispatchCallbackLock.Unlock()
|
dispatchCallbackLock.Unlock()
|
||||||
@ -342,11 +343,26 @@ func (f *Frontend) processRequest(request unsafe.Pointer) {
|
|||||||
|
|
||||||
// Load file from asset store
|
// Load file from asset store
|
||||||
content, mimeType, err := f.assets.Load(file)
|
content, mimeType, err := f.assets.Load(file)
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO How to return 404/500 errors to webkit?
|
// TODO How to return 404/500 errors to webkit?
|
||||||
|
if err != nil {
|
||||||
|
var gerr *C.GError
|
||||||
|
if os.IsNotExist(err) {
|
||||||
|
message := C.CString("not found")
|
||||||
|
defer C.free(unsafe.Pointer(message))
|
||||||
|
gerr = C.g_error_new_literal(C.G_FILE_ERROR_NOENT, C.int(404), message)
|
||||||
|
C.webkit_uri_scheme_request_finish_error(req, gerr)
|
||||||
|
} 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))
|
||||||
|
gerr = C.g_error_new_literal(C.G_FILE_ERROR_NOENT, C.int(500), message)
|
||||||
|
C.webkit_uri_scheme_request_finish_error(req, gerr)
|
||||||
|
}
|
||||||
|
C.g_error_free(gerr)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
cContent := C.CString(string(content))
|
cContent := C.CString(string(content))
|
||||||
defer C.free(unsafe.Pointer(cContent))
|
defer C.free(unsafe.Pointer(cContent))
|
||||||
|
Loading…
Reference in New Issue
Block a user