REPOSITORY / ScuroNeko/mtg

Compare commits

DIFF REPOSITORY

Compare commits

...
18 Commits
Author SHA1 Message Date
9seconds 28fe63dbdb Merge remote-tracking branch 'origin/master' into stable 2021-03-03 17:55:00 +03:00
Sergey ArkhipovandGitHub 7718f62477 Merge pull request #179 from 9seconds/golang1.16
Update dockerfile to golang 1.16
2021-03-03 17:54:13 +03:00
9seconds df0994dad3 Update dockerfile to golang 1.16 2021-03-03 17:43:38 +03:00
Sergey ArkhipovandGitHub dca43853fb Merge pull request #178 from 9seconds/ci-arm32
Build for arm 32 platforms
2021-03-03 17:42:59 +03:00
9seconds ea8e31346c Build for arm 32 platforms 2021-03-03 17:30:47 +03:00
9seconds 4aab3b686c Merge remote-tracking branch 'origin/master' into stable 2021-03-03 17:25:34 +03:00
Sergey ArkhipovandGitHub ed495b3800 Merge pull request #177 from 9seconds/faketls-hotfix
Correct rewinding for faketls
2021-03-03 17:24:38 +03:00
9seconds 4025f223c4 Correct rewinding for faketls 2021-03-03 17:18:16 +03:00
9seconds 121200cfad Merge remote-tracking branch 'origin/master' into stable 2021-02-26 08:27:25 +03:00
9seconds a8c4d0a9c4 Merge remote-tracking branch 'origin/master' into stable 2020-09-21 12:03:19 +03:00
9seconds 790bf21166 Merge remote-tracking branch 'origin/master' into stable 2020-08-11 13:32:01 +03:00
9seconds e5b9c841cd Merge remote-tracking branch 'origin/master' into stable 2020-03-31 10:09:47 +03:00
9seconds 8ccf61c23e Merge remote-tracking branch 'origin/master' into stable 2020-03-25 10:24:31 +03:00
9seconds 0e033b59b3 Merge remote-tracking branch 'origin/master' into stable 2020-03-20 14:39:45 +03:00
9seconds cdd93bd25f Merge remote-tracking branch 'origin/master' into stable 2020-02-04 11:23:40 +03:00
9seconds cac476901d Merge remote-tracking branch 'origin/master' into stable 2019-11-19 18:13:43 +03:00
9seconds bb21bf814f Merge remote-tracking branch 'origin/master' into stable 2019-11-19 17:58:10 +03:00
9seconds 68e1d66017 Merge remote-tracking branch 'origin/master' into stable 2019-11-18 12:56:21 +03:00
3 changed files with 14 additions and 36 deletions
+1 -1
View File
@@ -125,7 +125,7 @@ jobs:
with: with:
pull: true pull: true
context: . context: .
platforms: linux/amd64,linux/arm64,linux/386 platforms: linux/amd64,linux/arm64,linux/386,linux/arm/v7,linux/arm/v6
push: ${{ github.event_name != 'pull_request' }} push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.docker_meta.outputs.tags }} tags: ${{ steps.docker_meta.outputs.tags }}
labels: ${{ steps.docker_meta.outputs.labels }} labels: ${{ steps.docker_meta.outputs.labels }}
+1 -1
View File
@@ -1,7 +1,7 @@
############################################################################### ###############################################################################
# BUILD STAGE # BUILD STAGE
FROM golang:1.15-alpine AS build FROM golang:1.16-alpine AS build
RUN set -x \ RUN set -x \
&& apk --no-cache --update add \ && apk --no-cache --update add \
+12 -34
View File
@@ -2,7 +2,6 @@ package stream
import ( import (
"bytes" "bytes"
"errors"
"io" "io"
"net" "net"
"sync" "sync"
@@ -18,10 +17,10 @@ type ReadWriteCloseRewinder interface {
} }
type wrapperRewind struct { type wrapperRewind struct {
parent conntypes.StreamReadWriteCloser parent conntypes.StreamReadWriteCloser
buf bytes.Buffer activeReader io.Reader
mutex sync.Mutex buf bytes.Buffer
rewinded bool mutex sync.Mutex
} }
func (w *wrapperRewind) Write(p []byte) (int, error) { func (w *wrapperRewind) Write(p []byte) (int, error) {
@@ -36,38 +35,14 @@ func (w *wrapperRewind) Read(p []byte) (int, error) {
w.mutex.Lock() w.mutex.Lock()
defer w.mutex.Unlock() defer w.mutex.Unlock()
if w.rewinded { return w.activeReader.Read(p)
if n, err := w.buf.Read(p); errors.Is(err, io.EOF) {
return n, err // nolint: wrapcheck
}
}
n, err := w.parent.Read(p)
if !w.rewinded {
w.buf.Write(p[:n])
}
return n, err // nolint: wrapcheck
} }
func (w *wrapperRewind) ReadTimeout(p []byte, timeout time.Duration) (int, error) { func (w *wrapperRewind) ReadTimeout(p []byte, _ time.Duration) (int, error) {
w.mutex.Lock() w.mutex.Lock()
defer w.mutex.Unlock() defer w.mutex.Unlock()
if w.rewinded { return w.activeReader.Read(p)
if n, err := w.buf.Read(p); errors.Is(err, io.EOF) {
return n, err // nolint: wrapcheck
}
}
n, err := w.parent.ReadTimeout(p, timeout)
if !w.rewinded {
w.buf.Write(p[:n])
}
return n, err // nolint: wrapcheck
} }
func (w *wrapperRewind) Conn() net.Conn { func (w *wrapperRewind) Conn() net.Conn {
@@ -94,12 +69,15 @@ func (w *wrapperRewind) Close() error {
func (w *wrapperRewind) Rewind() { func (w *wrapperRewind) Rewind() {
w.mutex.Lock() w.mutex.Lock()
w.rewinded = true w.activeReader = io.MultiReader(&w.buf, w.parent)
w.mutex.Unlock() w.mutex.Unlock()
} }
func NewRewind(parent conntypes.StreamReadWriteCloser) ReadWriteCloseRewinder { func NewRewind(parent conntypes.StreamReadWriteCloser) ReadWriteCloseRewinder {
return &wrapperRewind{ rv := &wrapperRewind{
parent: parent, parent: parent,
} }
rv.activeReader = io.TeeReader(parent, &rv.buf)
return rv
} }