From 5696f177e2098abf080930e874fc499e54079047 Mon Sep 17 00:00:00 2001 From: mountain Date: Wed, 7 Jun 2023 11:16:53 +0900 Subject: [PATCH] =?UTF-8?q?=EC=84=9C=EB=B9=84=EC=8A=A4=20=EB=94=94?= =?UTF-8?q?=ED=85=8C=EC=9D=BC=EA=B3=BC=20=EC=84=9C=EB=B9=84=EC=8A=A4=20?= =?UTF-8?q?=EC=84=9C=EB=A8=B8=EB=A6=AC=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/api.go | 2 +- core/service.go | 12 ++++++++---- core/watch.go | 1 + 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/core/api.go b/core/api.go index a975c13..3694615 100644 --- a/core/api.go +++ b/core/api.go @@ -106,7 +106,7 @@ func (caller apiCaller) writeAccessableServices(w http.ResponseWriter) { w.Write([]byte(",")) } w.Write([]byte(fmt.Sprintf(`"%s":`, v.ServiceName))) - serptr := atomic.LoadPointer(&v.serviceSerialized) + serptr := atomic.LoadPointer(&v.serviceSummarySerialized) w.Write(*(*[]byte)(serptr)) start = false } diff --git a/core/service.go b/core/service.go index c3dfca4..dc83c0e 100644 --- a/core/service.go +++ b/core/service.go @@ -197,9 +197,10 @@ type serviceDescription struct { updateUserinfo func(info usertokeninfo) (bool, string, string) getProviderInfo func(platform string, uid string) (string, string, error) - apiUsers unsafe.Pointer - divisionsSerialized unsafe.Pointer - serviceSerialized unsafe.Pointer + apiUsers unsafe.Pointer + divisionsSerialized unsafe.Pointer + serviceSerialized unsafe.Pointer + serviceSummarySerialized unsafe.Pointer } func (sh *serviceDescription) readProfile(authtype string, id string, binfo string) (email string, err error) { @@ -330,9 +331,12 @@ func (sh *serviceDescription) prepare(mg *Maingate) error { mg.apiTokenToService.add(keyid.Hex(), sh.ServiceCode) } - bt, _ := json.Marshal(sh.ServiceDescriptionSummary) + bt, _ := json.Marshal(sh) atomic.StorePointer(&sh.serviceSerialized, unsafe.Pointer(&bt)) + btsum, _ := json.Marshal(sh.ServiceDescriptionSummary) + atomic.StorePointer(&sh.serviceSummarySerialized, unsafe.Pointer(&btsum)) + logger.Println("service is ready :", sh.ServiceName, sh.ServiceCode, sh.UseWhitelist, sh.ApiUsers, string(divmarshaled)) return nil diff --git a/core/watch.go b/core/watch.go index 705e02c..99c9c83 100644 --- a/core/watch.go +++ b/core/watch.go @@ -286,6 +286,7 @@ func (mg *Maingate) watchServiceCollection(parentctx context.Context, serveMux * atomic.SwapPointer(&old.divisionsSerialized, data.Service.divisionsSerialized) atomic.SwapPointer(&old.apiUsers, data.Service.apiUsers) atomic.SwapPointer(&old.serviceSerialized, data.Service.serviceSerialized) + atomic.SwapPointer(&old.serviceSummarySerialized, data.Service.serviceSummarySerialized) for _, token := range old.ServerApiTokens { mg.apiTokenToService.remove(token.Hex())