Vow, uncensorable PDS written in Go

fix: resolve local handle first

+12 -2
+12 -2
server/handle_server_resolve_handle.go
··· 3 3 import ( 4 4 "context" 5 5 "net/http" 6 + 6 7 "pkg.rbrt.fr/vow/identity" 7 8 8 9 "github.com/bluesky-social/indigo/atproto/syntax" ··· 10 11 ) 11 12 12 13 func (s *Server) handleResolveHandle(w http.ResponseWriter, r *http.Request) { 14 + ctx := r.Context() 13 15 logger := s.logger.With("name", "handleServerResolveHandle") 14 16 15 17 type Resp struct { ··· 29 31 return 30 32 } 31 33 32 - ctx := context.WithValue(r.Context(), identity.SkipCacheKey, true) 33 - did, err := s.passport.ResolveHandle(ctx, parsed.String()) 34 + // Check local accounts first before hitting DNS / well-known. 35 + if actor, err := s.getActorByHandle(ctx, parsed.String()); err == nil { 36 + s.writeJSON(w, 200, Resp{Did: actor.Did}) 37 + return 38 + } 39 + 40 + did, err := s.passport.ResolveHandle( 41 + context.WithValue(ctx, identity.SkipCacheKey, true), 42 + parsed.String(), 43 + ) 34 44 if err != nil { 35 45 logger.Error("error resolving handle", "error", err) 36 46 helpers.ServerError(w, nil)