-3
.golangci.yml
-3
.golangci.yml
+12
-3
pkg/appview/handlers/device.go
+12
-3
pkg/appview/handlers/device.go
···
362
}
363
364
w.Header().Set("Content-Type", "text/html; charset=utf-8")
365
-
tmpl.Execute(w, data)
366
}
367
368
func (h *DeviceApprovalPageHandler) renderSuccess(w http.ResponseWriter, deviceName string) {
···
374
}
375
376
w.Header().Set("Content-Type", "text/html; charset=utf-8")
377
-
tmpl.Execute(w, data)
378
}
379
380
func (h *DeviceApprovalPageHandler) renderError(w http.ResponseWriter, message string) {
···
387
388
w.Header().Set("Content-Type", "text/html; charset=utf-8")
389
w.WriteHeader(http.StatusBadRequest)
390
-
tmpl.Execute(w, data)
391
}
392
393
func getClientIP(r *http.Request) string {
···
362
}
363
364
w.Header().Set("Content-Type", "text/html; charset=utf-8")
365
+
if err := tmpl.Execute(w, data); err != nil {
366
+
http.Error(w, "failed to render template", http.StatusInternalServerError)
367
+
return
368
+
}
369
}
370
371
func (h *DeviceApprovalPageHandler) renderSuccess(w http.ResponseWriter, deviceName string) {
···
377
}
378
379
w.Header().Set("Content-Type", "text/html; charset=utf-8")
380
+
if err := tmpl.Execute(w, data); err != nil {
381
+
http.Error(w, "failed to render template", http.StatusInternalServerError)
382
+
return
383
+
}
384
}
385
386
func (h *DeviceApprovalPageHandler) renderError(w http.ResponseWriter, message string) {
···
393
394
w.Header().Set("Content-Type", "text/html; charset=utf-8")
395
w.WriteHeader(http.StatusBadRequest)
396
+
if err := tmpl.Execute(w, data); err != nil {
397
+
http.Error(w, "failed to render template", http.StatusInternalServerError)
398
+
return
399
+
}
400
}
401
402
func getClientIP(r *http.Request) string {
+8
-2
pkg/appview/jetstream/worker.go
+8
-2
pkg/appview/jetstream/worker.go
···
132
})
133
134
// Set initial read deadline
135
-
conn.SetReadDeadline(time.Now().Add(90 * time.Second))
136
137
// Create zstd decoder for decompressing messages
138
decoder, err := zstd.NewReader(nil)
···
178
}
179
180
// Send ping with write deadline
181
-
conn.SetWriteDeadline(time.Now().Add(10 * time.Second))
182
if err := conn.WriteMessage(websocket.PingMessage, nil); err != nil {
183
slog.Warn("Jetstream failed to send ping", "error", err)
184
conn.Close()
···
132
})
133
134
// Set initial read deadline
135
+
if err := conn.SetReadDeadline(time.Now().Add(90 * time.Second)); err != nil {
136
+
return fmt.Errorf("failed to set read deadline: %w", err)
137
+
}
138
139
// Create zstd decoder for decompressing messages
140
decoder, err := zstd.NewReader(nil)
···
180
}
181
182
// Send ping with write deadline
183
+
if err := conn.SetWriteDeadline(time.Now().Add(10 * time.Second)); err != nil {
184
+
slog.Warn("Jetstream failed to set write deadline", "error", err)
185
+
conn.Close()
186
+
return
187
+
}
188
if err := conn.WriteMessage(websocket.PingMessage, nil); err != nil {
189
slog.Warn("Jetstream failed to send ping", "error", err)
190
conn.Close()
+3
-1
pkg/appview/middleware/registry.go
+3
-1
pkg/appview/middleware/registry.go
···
204
205
func init() {
206
// Register the name resolution middleware
207
+
if err := registrymw.Register("atproto-resolver", initATProtoResolver); err != nil {
208
+
panic("failed to register atproto-resolver middleware: " + err.Error())
209
+
}
210
}
211
212
// NamespaceResolver wraps a namespace and resolves names
+4
-1
pkg/appview/storage/proxy_blob_store.go
+4
-1
pkg/appview/storage/proxy_blob_store.go
···
8
"io"
9
"log/slog"
10
"net/http"
11
"sync"
12
"time"
13
···
170
// Return a minimal descriptor with size from Content-Length if available
171
size := int64(0)
172
if contentLength := resp.Header.Get("Content-Length"); contentLength != "" {
173
-
fmt.Sscanf(contentLength, "%d", &size)
174
}
175
176
return distribution.Descriptor{
···
8
"io"
9
"log/slog"
10
"net/http"
11
+
"strconv"
12
"sync"
13
"time"
14
···
171
// Return a minimal descriptor with size from Content-Length if available
172
size := int64(0)
173
if contentLength := resp.Header.Get("Content-Length"); contentLength != "" {
174
+
if parsed, err := strconv.ParseInt(contentLength, 10, 64); err == nil {
175
+
size = parsed
176
+
}
177
}
178
179
return distribution.Descriptor{