Remove juju/errors

This commit is contained in:
9seconds
2019-09-06 16:10:55 +03:00
parent 701f62ed4c
commit 2918ed11e5
19 changed files with 73 additions and 91 deletions
+4
View File
@@ -1,6 +1,9 @@
package antireplay
import (
"errors"
"fmt"
"github.com/allegro/bigcache"
"github.com/9seconds/mtg/config"
@@ -25,6 +28,7 @@ func Init() error {
HardMaxCacheSize: config.C.AntiReplay.MaxSize,
})
cache = c
err = fmt.Errorf("qqq: %w", errors.New("tt"))
return err
}
+4 -4
View File
@@ -41,7 +41,7 @@ func Proxy() error {
defer logger.Sync() // nolint: errcheck
if err := config.InitPublicAddress(ctx); err != nil {
Fatal(err.Error())
Fatal(err)
}
zap.S().Debugw("Configuration", "config", config.C)
@@ -62,14 +62,14 @@ func Proxy() error {
PrintJSONStdout(config.GetURLs())
if err := antireplay.Init(); err != nil {
Fatal(err.Error())
Fatal(err)
}
if err := stats.Init(ctx); err != nil {
Fatal(err.Error())
Fatal(err)
}
proxyListener, err := net.Listen("tcp", config.C.ListenAddr.String())
if err != nil {
Fatal(err.Error())
Fatal(err)
}
go func() {
<-ctx.Done()
+5 -2
View File
@@ -7,8 +7,11 @@ import (
"os"
)
func Fatal(args ...interface{}) {
PrintStderr(args...)
func Fatal(arg interface{}) {
if value, ok := arg.(error); ok {
arg = fmt.Errorf("fatal error: %+v", value)
}
PrintStderr(arg)
os.Exit(1)
}
+4 -3
View File
@@ -4,11 +4,12 @@ import (
"bytes"
"context"
"encoding/json"
"errors"
"fmt"
"net"
"strconv"
"time"
"github.com/juju/errors"
"go.uber.org/zap"
statsd "gopkg.in/alexcesaro/statsd.v2"
)
@@ -187,7 +188,7 @@ func Init(options ...Opt) error { // nolint: gocyclo
case "influxdb":
C.StatsdStats.TagsFormat = statsd.InfluxDB
default:
return errors.Errorf("Incorrect statsd tag %s", value)
return fmt.Errorf("Incorrect statsd tag %s", value)
}
case OptionTypeStatsdTags:
C.StatsdStats.Tags = opt.Value.(map[string]string)
@@ -206,7 +207,7 @@ func Init(options ...Opt) error { // nolint: gocyclo
case OptionTypeAdtag:
C.AdTag = opt.Value.([]byte)
default:
return errors.Errorf("Unknown tag %v", opt.Option)
return fmt.Errorf("Unknown tag %v", opt.Option)
}
}
+7 -8
View File
@@ -2,14 +2,13 @@ package config
import (
"context"
"fmt"
"io"
"io/ioutil"
"net"
"net/http"
"strings"
"time"
"github.com/juju/errors"
)
const (
@@ -20,7 +19,7 @@ const (
func getGlobalIPv4(ctx context.Context) (net.IP, error) {
ip, err := fetchIP(ctx, "tcp4")
if err != nil || ip.To4() == nil {
return nil, errors.Annotate(err, "Cannot find public ipv4 address")
return nil, fmt.Errorf("cannot find public ipv4 address: %w", err)
}
return ip, nil
}
@@ -28,7 +27,7 @@ func getGlobalIPv4(ctx context.Context) (net.IP, error) {
func getGlobalIPv6(ctx context.Context) (net.IP, error) {
ip, err := fetchIP(ctx, "tcp6")
if err != nil || ip.To4() != nil {
return nil, errors.Annotate(err, "Cannot find public ipv6 address")
return nil, fmt.Errorf("cannot find public ipv6 address: %w", err)
}
return ip, nil
}
@@ -47,7 +46,7 @@ func fetchIP(ctx context.Context, network string) (net.IP, error) {
req, err := http.NewRequest("GET", ifconfigAddress, nil)
if err != nil {
return nil, errors.Annotate(err, "Cannot create a request")
return nil, fmt.Errorf("cannot create a request: %w", err)
}
resp, err := client.Do(req.WithContext(ctx))
@@ -55,19 +54,19 @@ func fetchIP(ctx context.Context, network string) (net.IP, error) {
if resp != nil {
io.Copy(ioutil.Discard, resp.Body) // nolint: errcheck
}
return nil, errors.Annotate(err, "Cannot perform a request")
return nil, fmt.Errorf("cannot perform a request: %w", err)
}
defer resp.Body.Close() // nolint: errcheck
respDataBytes, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, errors.Annotate(err, "Cannot read response body")
return nil, fmt.Errorf("cannot read response body: %w", err)
}
respData := strings.TrimSpace(string(respDataBytes))
ip := net.ParseIP(respData)
if ip == nil {
return nil, errors.Errorf("ifconfig.co returns incorrect IP %s", respData)
return nil, fmt.Errorf("ifconfig.co returns incorrect IP %s", respData)
}
return ip, nil
+3 -9
View File
@@ -9,19 +9,12 @@ require (
github.com/allegro/bigcache v1.2.1
github.com/beevik/ntp v0.2.0
github.com/cespare/xxhash v1.1.0
github.com/dustin/go-humanize v1.0.0
github.com/gofrs/uuid v3.2.0+incompatible
github.com/juju/errors v0.0.0-20190806202954-0232dcc7464d
github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8 // indirect
github.com/juju/testing v0.0.0-20190723135506-ce30eb24acd2 // indirect
github.com/kr/pretty v0.1.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.1 // indirect
github.com/pkg/errors v0.8.1 // indirect
github.com/prometheus/client_golang v1.1.0
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 // indirect
github.com/spaolacci/murmur3 v1.1.0 // indirect
github.com/stretchr/testify v1.4.0
github.com/stretchr/testify v1.4.0 // indirect
go.uber.org/atomic v1.4.0 // indirect
go.uber.org/multierr v1.1.0 // indirect
go.uber.org/zap v1.10.0
@@ -30,5 +23,6 @@ require (
gopkg.in/alecthomas/kingpin.v2 v2.2.6
gopkg.in/alexcesaro/statsd.v2 v2.0.0
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect
gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 // indirect
)
go 1.13
-12
View File
@@ -24,14 +24,10 @@ github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghf
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/gofrs/uuid v3.2.0+incompatible h1:y12jRkkFxsd7GpqdSZ+/KCs/fJbqpEXSGd4+jfEaewE=
github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
github.com/gogo/protobuf v1.1.1 h1:72R+M5VuhED/KujmZVcIquuo8mBgX4oVda//DQb3PXo=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
@@ -44,12 +40,6 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/juju/errors v0.0.0-20190806202954-0232dcc7464d h1:hJXjZMxj0SWlMoQkzeZDLi2cmeiWKa7y1B8Rg+qaoEc=
github.com/juju/errors v0.0.0-20190806202954-0232dcc7464d/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q=
github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8 h1:UUHMLvzt/31azWTN/ifGWef4WUqvXk0iRqdhdy/2uzI=
github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U=
github.com/juju/testing v0.0.0-20190723135506-ce30eb24acd2 h1:Pp8RxiF4rSoXP9SED26WCfNB28/dwTDpPXS8XMJR8rc=
github.com/juju/testing v0.0.0-20190723135506-ce30eb24acd2/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA=
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
@@ -132,8 +122,6 @@ gopkg.in/alexcesaro/statsd.v2 v2.0.0/go.mod h1:i0ubccKGzBVNBpdGV5MocxyA/XlLUJzA7
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 h1:VpOs+IwYnYBaFnrNAeB8UUWtL3vEUnzSCL1nVjPhqrw=
gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
gopkg.in/yaml.v2 v2.2.1 h1:mUhvW9EsL+naU5Q3cakzfE91YhliOondGd6ZrsDBHQE=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
+3 -3
View File
@@ -143,7 +143,7 @@ func main() {
app.HelpFlag.Short('h')
if err := utils.SetLimits(); err != nil {
cli.Fatal(err.Error())
cli.Fatal(err)
}
switch kingpin.MustParse(app.Parse(os.Args[1:])) {
@@ -177,11 +177,11 @@ func main() {
config.Opt{Option: config.OptionTypeAdtag, Value: *proxyAdtag},
)
if err != nil {
cli.Fatal(err.Error())
cli.Fatal(err)
}
if err := cli.Proxy(); err != nil {
cli.Fatal(err.Error())
cli.Fatal(err)
}
}
}
+2 -2
View File
@@ -1,11 +1,11 @@
package ntp
import (
"fmt"
"math/rand"
"time"
"github.com/beevik/ntp"
"github.com/juju/errors"
"go.uber.org/zap"
)
@@ -23,7 +23,7 @@ func Fetch() (time.Duration, error) {
url := ntpEndpoints[rand.Intn(len(ntpEndpoints))]
resp, err := ntp.Query(url)
if err != nil {
return 0, errors.Annotatef(err, "Cannot fetch NTP server %s", url)
return 0, fmt.Errorf("Cannot fetch NTP server %s: %w", url, err)
}
offsetInt := int64(resp.ClockOffset)
+4 -4
View File
@@ -4,11 +4,11 @@ import (
"bytes"
"crypto/sha256"
"encoding/binary"
"errors"
"fmt"
"io"
"time"
"github.com/juju/errors"
"github.com/9seconds/mtg/antireplay"
"github.com/9seconds/mtg/config"
"github.com/9seconds/mtg/conntypes"
@@ -26,7 +26,7 @@ type ClientProtocol struct {
func (c *ClientProtocol) Handshake(socket wrappers.StreamReadWriteCloser) (wrappers.StreamReadWriteCloser, error) {
fm, err := c.ReadFrame(socket)
if err != nil {
return nil, errors.Annotate(err, "Cannot make client handshake")
return nil, fmt.Errorf("cannot make a client handshake: %w", err)
}
decHasher := sha256.New()
@@ -76,7 +76,7 @@ func (c *ClientProtocol) Handshake(socket wrappers.StreamReadWriteCloser) (wrapp
func (c *ClientProtocol) ReadFrame(socket wrappers.StreamReader) (fm Frame, err error) {
if _, err = io.ReadFull(handshakeReader{socket}, fm.Bytes()); err != nil {
err = errors.Annotate(err, "Cannot extract obfuscated2 frame")
err = fmt.Errorf("cannot extract obfuscated2 frame: %w", err)
}
return
}
+3 -4
View File
@@ -2,8 +2,7 @@ package obfuscated2
import (
"crypto/rand"
"github.com/juju/errors"
"fmt"
"github.com/9seconds/mtg/protocol"
"github.com/9seconds/mtg/telegram"
@@ -23,7 +22,7 @@ func (t *TelegramProtocol) Handshake(req *protocol.TelegramRequest) (wrappers.Wr
req.ClientProtocol.GetDC(),
req.ClientProtocol.GetConnectionProtocol())
if err != nil {
return nil, errors.Annotate(err, "Cannot dial to Telegram")
return nil, fmt.Errorf("cannot dial to telegram: %w", err)
}
fm := generateFrame(req.ClientProtocol)
data := fm.Bytes()
@@ -38,7 +37,7 @@ func (t *TelegramProtocol) Handshake(req *protocol.TelegramRequest) (wrappers.Wr
copy(data[:frameOffsetIV], copyFrame[:frameOffsetIV])
if _, err := socket.Write(data); err != nil {
return nil, errors.Annotate(err, "Cannot write handshate frame to Telegram")
return nil, fmt.Errorf("cannot write handshake frame to telegram: %w", err)
}
return wrappers.NewObfuscated2(socket, encryptor, decryptor), nil
+4 -5
View File
@@ -2,11 +2,10 @@ package stats
import (
"context"
"fmt"
"net"
"net/http"
"github.com/juju/errors"
"github.com/9seconds/mtg/config"
"github.com/9seconds/mtg/conntypes"
)
@@ -66,21 +65,21 @@ func Init(ctx context.Context) error {
instanceJSON := newStatsJSON(mux)
instancePrometheus, err := newStatsPrometheus(mux)
if err != nil {
return errors.Annotate(err, "Cannot initialize Prometheus")
return fmt.Errorf("cannot initialize prometheus: %w", err)
}
stats := []Stats{instanceJSON, instancePrometheus}
if config.C.StatsdStats.Addr.IP != nil {
instanceStatsd, err := newStatsStatsd()
if err != nil {
return errors.Annotate(err, "Cannot initialize StatsD")
return fmt.Errorf("cannot inialize statsd: %w", err)
}
stats = append(stats, instanceStatsd)
}
listener, err := net.Listen("tcp", config.C.StatsAddr.String())
if err != nil {
return errors.Annotate(err, "Cannot initialize stats server")
return fmt.Errorf("cannot initialize stats server: %w", err)
}
srv := http.Server{
+5 -5
View File
@@ -1,10 +1,10 @@
package stats
import (
"fmt"
"net"
"net/http"
"github.com/juju/errors"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promhttp"
@@ -91,16 +91,16 @@ func newStatsPrometheus(mux *http.ServeMux) (Stats, error) {
}
if err := registry.Register(instance.connections); err != nil {
return nil, errors.Annotate(err, "Cannot register metrics for connections")
return nil, fmt.Errorf("cannot register metrics for connections: %w", err)
}
if err := registry.Register(instance.traffic); err != nil {
return nil, errors.Annotate(err, "Cannot register metrics for traffic")
return nil, fmt.Errorf("cannot register metrics for traffic: %w", err)
}
if err := registry.Register(instance.crashes); err != nil {
return nil, errors.Annotate(err, "Cannot register metrics for crashes")
return nil, fmt.Errorf("cannot register metrics for crashes: %w", err)
}
if err := registry.Register(instance.antiReplays); err != nil {
return nil, errors.Annotate(err, "Cannot register metrics for anti replays")
return nil, fmt.Errorf("cannot register metrics for anti replays: %w", err)
}
handler := promhttp.HandlerFor(registry, promhttp.HandlerOpts{})
+2 -2
View File
@@ -1,10 +1,10 @@
package stats
import (
"fmt"
"net"
"strings"
"github.com/juju/errors"
"gopkg.in/alexcesaro/statsd.v2"
"github.com/9seconds/mtg/config"
@@ -78,7 +78,7 @@ func newStatsStatsd() (Stats, error) {
client, err := statsd.New(options...)
if err != nil {
return nil, errors.Annotate(err, "Cannot initialize a client")
return nil, fmt.Errorf("cannot initialize a client: %w", err)
}
return &statsStatsd{
+3 -4
View File
@@ -2,12 +2,11 @@ package telegram
import (
"context"
"fmt"
"math/rand"
"net"
"time"
"github.com/juju/errors"
"github.com/9seconds/mtg/conntypes"
"github.com/9seconds/mtg/utils"
"github.com/9seconds/mtg/wrappers"
@@ -29,11 +28,11 @@ func (b *baseTelegram) dialToAddress(ctx context.Context,
addr string) (wrappers.StreamReadWriteCloser, error) {
conn, err := b.dialer.Dial("tcp", addr)
if err != nil {
return nil, errors.Annotate(err, "Dial has failed")
return nil, fmt.Errorf("dial has failed: %w", err)
}
if err := utils.InitTCP(conn); err != nil {
return nil, errors.Annotate(err, "Cannot initialize TCP socket")
return nil, fmt.Errorf("cannot initialize tcp socket: %w", err)
}
return wrappers.NewTelegramConn(ctx, cancel, conn), nil
+4 -5
View File
@@ -1,10 +1,9 @@
package utils
import (
"fmt"
"net"
"github.com/juju/errors"
"github.com/9seconds/mtg/config"
)
@@ -12,13 +11,13 @@ func InitTCP(conn net.Conn) error {
tcpConn := conn.(*net.TCPConn)
if err := tcpConn.SetNoDelay(true); err != nil {
return errors.Annotate(err, "Cannot set NO_DELAY")
return fmt.Errorf("cannot set TCP_NO_DELAY: %w", err)
}
if err := tcpConn.SetReadBuffer(config.C.BufferSize.Read); err != nil {
return errors.Annotate(err, "Cannot set read buffer size")
return fmt.Errorf("cannot set read buffer size: %w", err)
}
if err := tcpConn.SetWriteBuffer(config.C.BufferSize.Write); err != nil {
return errors.Annotate(err, "Cannot set write buffer size")
return fmt.Errorf("cannot set write buffer size: %w", err)
}
return nil
+8 -11
View File
@@ -3,24 +3,21 @@
package utils
import (
"golang.org/x/sys/unix"
"fmt"
"github.com/juju/errors"
"golang.org/x/sys/unix"
)
func SetLimits() (err error) {
func SetLimits() error {
rLimit := unix.Rlimit{}
err = unix.Getrlimit(unix.RLIMIT_NOFILE, &rLimit)
if err != nil {
err = errors.Annotate(err, "Cannot get rlimit")
return
if err := unix.Getrlimit(unix.RLIMIT_NOFILE, &rLimit); err != nil {
return fmt.Errorf("cannot get rlimit: %w", err)
}
rLimit.Cur = rLimit.Max
err = unix.Setrlimit(unix.RLIMIT_NOFILE, &rLimit)
if err != nil {
err = errors.Annotate(err, "Cannot set rlimit")
if err := unix.Setrlimit(unix.RLIMIT_NOFILE, &rLimit); err != nil {
return fmt.Errorf("cannot set rlimit: %w", err)
}
return
return nil
}
+5 -5
View File
@@ -4,10 +4,10 @@ import (
"context"
"crypto/rand"
"encoding/hex"
"fmt"
"net"
"time"
"github.com/juju/errors"
"go.uber.org/zap"
"github.com/9seconds/mtg/config"
@@ -47,12 +47,12 @@ func (w *wrapperConn) WriteTimeout(p []byte, timeout time.Duration) (int, error)
select {
case <-w.ctx.Done():
w.Close()
return 0, errors.Annotate(w.ctx.Err(), "Cannot write because context was closed")
return 0, fmt.Errorf("cannot write because context was closed: %w", w.ctx.Err())
default:
if err := w.parent.SetWriteDeadline(time.Now().Add(timeout)); err != nil {
w.Close() // nolint: gosec
return 0, errors.Annotate(err, "Cannot set write deadline to the socket")
return 0, fmt.Errorf("cannot set write deadline to the socket: %w", err)
}
n, err := w.parent.Write(p)
@@ -73,12 +73,12 @@ func (w *wrapperConn) ReadTimeout(p []byte, timeout time.Duration) (int, error)
select {
case <-w.ctx.Done():
w.Close()
return 0, errors.Annotate(w.ctx.Err(), "Cannot read because context was closed")
return 0, fmt.Errorf("cannot read because context was closed: %w", w.ctx.Err())
default:
if err := w.parent.SetReadDeadline(time.Now().Add(timeout)); err != nil {
w.Close()
return 0, errors.Annotate(err, "Cannot set read deadline to the socket")
return 0, fmt.Errorf("cannot set read deadline to the socket: %w", err)
}
n, err := w.parent.Read(p)
+3 -3
View File
@@ -2,10 +2,10 @@ package wrappers
import (
"crypto/cipher"
"fmt"
"net"
"time"
"github.com/juju/errors"
"go.uber.org/zap"
)
@@ -18,7 +18,7 @@ type wrapperObfuscated2 struct {
func (w *wrapperObfuscated2) ReadTimeout(p []byte, timeout time.Duration) (int, error) {
n, err := w.parent.ReadTimeout(p, timeout)
if err != nil {
return 0, errors.Annotate(err, "Cannot read stream ciphered data")
return 0, fmt.Errorf("cannot read stream ciphered data: %w", err)
}
w.decryptor.XORKeyStream(p, p[:n])
@@ -28,7 +28,7 @@ func (w *wrapperObfuscated2) ReadTimeout(p []byte, timeout time.Duration) (int,
func (w *wrapperObfuscated2) Read(p []byte) (int, error) {
n, err := w.parent.Read(p)
if err != nil {
return 0, errors.Annotate(err, "Cannot read stream ciphered data")
return n, err
}
w.decryptor.XORKeyStream(p, p[:n])