X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Fcypherpunks.ru%2Fgovpn%2Fegd.go;h=5933a2ad240fe50467e013a30ccdf32c4a123f49;hb=572cac17bde738055312f7a468a0bde0e760a262;hp=04ec87b9678cf2dfa10c576c84bfc66bbe4ef493;hpb=cecb63f12f4a9f523276a0c19c7feb7437c7f53a;p=govpn.git diff --git a/src/cypherpunks.ru/govpn/egd.go b/src/cypherpunks.ru/govpn/egd.go index 04ec87b..5933a2a 100644 --- a/src/cypherpunks.ru/govpn/egd.go +++ b/src/cypherpunks.ru/govpn/egd.go @@ -1,6 +1,6 @@ /* GoVPN -- simple secure free software virtual private network daemon -Copyright (C) 2014-2016 Sergey Matveev +Copyright (C) 2014-2017 Sergey Matveev This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,7 +20,6 @@ package govpn import ( "crypto/rand" - "errors" "io" "net" ) @@ -37,18 +36,9 @@ func (egdPath EGDRand) Read(b []byte) (int, error) { if err != nil { return 0, err } + defer conn.Close() conn.Write([]byte{0x02, byte(len(b))}) - read, err := conn.Read(b) - if err != nil { - conn.Close() - return read, err - } - if read != len(b) { - conn.Close() - return read, errors.New("Got less bytes than expected from EGD") - } - conn.Close() - return read, nil + return io.ReadFull(conn, b) } func EGDInit(path string) {