Minor fixes

This commit is contained in:
世界
2022-07-20 09:41:44 +08:00
parent 45643fbed1
commit 6327c4b40c
16 changed files with 79 additions and 84 deletions

View File

@@ -3,6 +3,7 @@ package clashapi
import (
"bytes"
"context"
"errors"
"net"
"net/http"
"strings"
@@ -85,7 +86,7 @@ func (s *Server) Start() error {
s.logger.Info("restful api listening at ", listener.Addr())
go func() {
err = s.httpServer.Serve(listener)
if err != nil && !E.IsClosed(err) {
if err != nil && !errors.Is(err, http.ErrServerClosed) {
s.logger.Error("external controller serve error: ", err)
}
}()
@@ -243,6 +244,13 @@ func getLogs(logFactory log.ObservableFactory) func(w http.ResponseWriter, r *ht
return
}
subscription, done, err := logFactory.Subscribe()
if err != nil {
render.Status(r, http.StatusNoContent)
return
}
defer logFactory.UnSubscribe(subscription)
var wsConn *websocket.Conn
if websocket.IsWebSocketUpgrade(r) {
var err error
@@ -257,14 +265,6 @@ func getLogs(logFactory log.ObservableFactory) func(w http.ResponseWriter, r *ht
render.Status(r, http.StatusOK)
}
subscription, done, err := logFactory.Subscribe()
if err != nil {
log.Warn(err)
render.Status(r, http.StatusInternalServerError)
return
}
defer logFactory.UnSubscribe(subscription)
buf := &bytes.Buffer{}
var logEntry log.Entry
for {

View File

@@ -54,17 +54,17 @@ func (tt *tcpTracker) ID() string {
func (tt *tcpTracker) Read(b []byte) (int, error) {
n, err := tt.Conn.Read(b)
download := int64(n)
tt.manager.PushDownloaded(download)
tt.DownloadTotal.Add(download)
upload := int64(n)
tt.manager.PushUploaded(upload)
tt.UploadTotal.Add(upload)
return n, err
}
func (tt *tcpTracker) Write(b []byte) (int, error) {
n, err := tt.Conn.Write(b)
upload := int64(n)
tt.manager.PushUploaded(upload)
tt.UploadTotal.Add(upload)
download := int64(n)
tt.manager.PushDownloaded(download)
tt.DownloadTotal.Add(download)
return n, err
}
@@ -112,21 +112,21 @@ func (ut *udpTracker) ID() string {
func (ut *udpTracker) ReadPacket(buffer *buf.Buffer) (destination M.Socksaddr, err error) {
destination, err = ut.PacketConn.ReadPacket(buffer)
if err == nil {
download := int64(buffer.Len())
ut.manager.PushDownloaded(download)
ut.DownloadTotal.Add(download)
upload := int64(buffer.Len())
ut.manager.PushUploaded(upload)
ut.UploadTotal.Add(upload)
}
return
}
func (ut *udpTracker) WritePacket(buffer *buf.Buffer, destination M.Socksaddr) error {
upload := int64(buffer.Len())
download := int64(buffer.Len())
err := ut.PacketConn.WritePacket(buffer, destination)
if err != nil {
return err
}
ut.manager.PushUploaded(upload)
ut.UploadTotal.Add(upload)
ut.manager.PushDownloaded(download)
ut.DownloadTotal.Add(download)
return nil
}