Compare commits
4 Commits
d745119615
...
60241736c6
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
60241736c6 | ||
|
|
8b8fafca21 | ||
|
|
03b2d35cd3 | ||
|
|
0f52de4204 |
12
src/adapt.go
12
src/adapt.go
@@ -72,6 +72,16 @@ func readMessage(reader *bufio.Reader) ([]byte, []any, error) {
|
||||
}
|
||||
|
||||
func readMessageTo(w io.Writer, reader *bufio.Reader) ([]any, error) {
|
||||
w2 := bufio.NewWriter(w)
|
||||
defer w2.Flush()
|
||||
arr, err := _readMessageTo(w2, reader)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return arr, w2.Flush()
|
||||
}
|
||||
|
||||
func _readMessageTo(w io.Writer, reader *bufio.Reader) ([]any, error) {
|
||||
firstLine, _, err := reader.ReadLine()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -124,7 +134,7 @@ func readMessageTo(w io.Writer, reader *bufio.Reader) ([]any, error) {
|
||||
}
|
||||
var result []any
|
||||
for i := 0; i < n; i++ {
|
||||
more, err := readMessageTo(w, reader)
|
||||
more, err := _readMessageTo(w, reader)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -92,13 +92,14 @@ func (c Config) Close() {
|
||||
for i := range c.forwards {
|
||||
if c.forwards[i] != nil {
|
||||
i := i
|
||||
go func() {
|
||||
func() {
|
||||
c.forwards[i].New = nil
|
||||
for {
|
||||
got := c.forwards[i].Get()
|
||||
if got != nil {
|
||||
go got.(net.Conn).Close()
|
||||
if got == nil {
|
||||
break
|
||||
}
|
||||
got.(net.Conn).Close()
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
@@ -31,7 +31,6 @@ func listen(ctx context.Context, config Config) error {
|
||||
} else {
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
defer log.Println("/handle()")
|
||||
defer wg.Done()
|
||||
handle(ctx, config, conn)
|
||||
}()
|
||||
@@ -50,5 +49,12 @@ func handle(ctx context.Context, config Config, conn net.Conn) {
|
||||
func _handle(ctx context.Context, config Config, conn net.Conn) error {
|
||||
defer conn.Close()
|
||||
|
||||
ctx, can := context.WithCancel(ctx)
|
||||
defer can()
|
||||
go func() {
|
||||
<-ctx.Done()
|
||||
conn.Close()
|
||||
}()
|
||||
|
||||
return adapt(ctx, config, conn)
|
||||
}
|
||||
|
||||
9
src/testdata/redises.sh
vendored
9
src/testdata/redises.sh
vendored
@@ -1,9 +1,14 @@
|
||||
#! /usr/bin/bash
|
||||
|
||||
bin=valkey-server
|
||||
if ! which valkey-server; then
|
||||
bin=redis-server
|
||||
fi
|
||||
|
||||
d=$(mktemp -d)
|
||||
mkdir -p $d/1
|
||||
mkdir -p $d/2
|
||||
valkey-server --dir $d/1 --port 60113 --logfile $d/1.log &
|
||||
$bin --dir $d/1 --port 60113 --logfile $d/1.log &
|
||||
bg=${!}
|
||||
cleanup() {
|
||||
kill $bg
|
||||
@@ -13,5 +18,5 @@ trap cleanup EXIT
|
||||
sleep 5
|
||||
echo FORWARDS=127.0.0.1:60113,127.0.0.1:60114
|
||||
) &
|
||||
valkey-server --dir $d/2 --port 60114 --logfile $d/2.log
|
||||
$bin --dir $d/2 --port 60114 --logfile $d/2.log
|
||||
|
||||
|
||||
Reference in New Issue
Block a user