attempt to drain the sockets
This commit is contained in:
parent
24962f3524
commit
b96f3ce26d
6
Makefile
6
Makefile
|
@ -3,9 +3,9 @@
|
||||||
VERSION = $(shell git describe --tags)
|
VERSION = $(shell git describe --tags)
|
||||||
BUILDTIME = $(shell date +%Y.%m.%d_%H%M)
|
BUILDTIME = $(shell date +%Y.%m.%d_%H%M)
|
||||||
|
|
||||||
all: proto build
|
all: proto install
|
||||||
@#./gus --config /etc/gus/gus.text
|
@#./gus --config /etc/gus/gus.text
|
||||||
./gus --me
|
gus --me
|
||||||
|
|
||||||
gocui: build
|
gocui: build
|
||||||
./gus --gui gocui --config /etc/gus/gus.text >/tmp/gocui.log 2>&1
|
./gus --gui gocui --config /etc/gus/gus.text >/tmp/gocui.log 2>&1
|
||||||
|
@ -14,7 +14,7 @@ build: goimports vet
|
||||||
GO111MODULE=off go build -v -x \
|
GO111MODULE=off go build -v -x \
|
||||||
-ldflags "-X main.VERSION=${VERSION} -X main.BUILDTIME=${BUILDTIME} -X gui.GUIVERSION=${VERSION}"
|
-ldflags "-X main.VERSION=${VERSION} -X main.BUILDTIME=${BUILDTIME} -X gui.GUIVERSION=${VERSION}"
|
||||||
|
|
||||||
install:
|
install: goimports vet
|
||||||
GO111MODULE=off go install -v -x \
|
GO111MODULE=off go install -v -x \
|
||||||
-ldflags "-X main.VERSION=${VERSION} -X main.BUILDTIME=${BUILDTIME} -X gui.GUIVERSION=${VERSION}"
|
-ldflags "-X main.VERSION=${VERSION} -X main.BUILDTIME=${BUILDTIME} -X gui.GUIVERSION=${VERSION}"
|
||||||
|
|
||||||
|
|
47
main.go
47
main.go
|
@ -14,6 +14,8 @@ import (
|
||||||
sync "sync"
|
sync "sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/svent/go-nbreader"
|
||||||
|
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
"go.wit.com/dev/alexflint/arg"
|
"go.wit.com/dev/alexflint/arg"
|
||||||
"go.wit.com/gui"
|
"go.wit.com/gui"
|
||||||
|
@ -254,6 +256,14 @@ func ioCopy(clientConn, targetConn net.Conn) {
|
||||||
defer clientConn.Close()
|
defer clientConn.Close()
|
||||||
defer targetConn.Close()
|
defer targetConn.Close()
|
||||||
|
|
||||||
|
/*
|
||||||
|
if !argv.UseME {
|
||||||
|
// Drain existing data
|
||||||
|
drainConnection(clientConn)
|
||||||
|
drainConnection(targetConn)
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
wg.Add(2)
|
wg.Add(2)
|
||||||
|
|
||||||
|
@ -287,8 +297,7 @@ func connectME() {
|
||||||
}
|
}
|
||||||
|
|
||||||
localport := "25910"
|
localport := "25910"
|
||||||
// where := "104.48.38.253:25910"
|
where := argv.URL
|
||||||
where := "104.48.38.253:8081"
|
|
||||||
dest, err := net.Dial("tcp", where)
|
dest, err := net.Dial("tcp", where)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Failed to connect to %s %v\n", where, err)
|
log.Printf("Failed to connect to %s %v\n", where, err)
|
||||||
|
@ -356,3 +365,37 @@ func getFQDN(hostname string) (string, error) {
|
||||||
|
|
||||||
return "", fmt.Errorf("no FQDN found for hostname: %s", hostname)
|
return "", fmt.Errorf("no FQDN found for hostname: %s", hostname)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// drainConnection reads and discards any pending data before copying
|
||||||
|
func drainConnection(conn net.Conn) {
|
||||||
|
// Create a non-blocking reader with a timeout of 1 second
|
||||||
|
reader := nbreader.NewNBReader(conn, 1024, nbreader.Timeout(time.Second))
|
||||||
|
|
||||||
|
buffer := make([]byte, 1024)
|
||||||
|
|
||||||
|
var count int
|
||||||
|
|
||||||
|
for {
|
||||||
|
// Attempt to read data from the reader
|
||||||
|
n, err := reader.Read(buffer)
|
||||||
|
if err != nil {
|
||||||
|
log.Info("error was:", err)
|
||||||
|
// Handle error, such as timeout or end of stream
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
if n > 0 {
|
||||||
|
log.Info("chunk size was", n, "buffer =", string(buffer))
|
||||||
|
count = 0
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
count += 1
|
||||||
|
if count > 3 {
|
||||||
|
log.Info("buffer is drained")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Process the read data (buffer[:n])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue