[Pkg-privacy-commits] [obfs4proxy] 14/151: Fix logging again.
Ximin Luo
infinity0 at moszumanska.debian.org
Sat Aug 22 12:59:34 UTC 2015
This is an automated email from the git hooks/post-receive script.
infinity0 pushed a commit to branch master
in repository obfs4proxy.
commit 51a8dd5a86eeca744e0add680b1f4796c4babe2b
Author: Yawning Angel <yawning at schwanenlied.me>
Date: Mon May 12 23:04:39 2014 +0000
Fix logging again.
On second thought instead of using log.Panicf(), panic() and do the
logging with recover(). This somewhat centralizes logging in
obfs4proxy, which will be easier to change when I invariably decide to
do logging differently in the future.
---
framing/framing.go | 13 ++++++-------
ntor/ntor.go | 5 ++---
obfs4.go | 10 +++++-----
obfs4proxy/obfs4proxy.go | 17 ++++++++++++++---
packet.go | 6 ++----
utils.go | 4 ++--
6 files changed, 31 insertions(+), 24 deletions(-)
diff --git a/framing/framing.go b/framing/framing.go
index 75b9a73..62170ae 100644
--- a/framing/framing.go
+++ b/framing/framing.go
@@ -61,7 +61,6 @@ import (
"errors"
"fmt"
"hash"
- "log"
"code.google.com/p/go.crypto/nacl/secretbox"
@@ -127,7 +126,7 @@ type boxNonce struct {
func (nonce *boxNonce) init(prefix []byte) {
if noncePrefixLength != len(prefix) {
- log.Panicf("BUG: Nonce prefix length invalid: %d", len(prefix))
+ panic(fmt.Sprintf("BUG: Nonce prefix length invalid: %d", len(prefix)))
}
copy(nonce.prefix[:], prefix)
@@ -161,7 +160,7 @@ type Encoder struct {
// containing exactly KeyLength bytes of keying material.
func NewEncoder(key []byte) *Encoder {
if len(key) != KeyLength {
- log.Panicf("BUG: Invalid encoder key length: %d", len(key))
+ panic(fmt.Sprintf("BUG: Invalid encoder key length: %d", len(key)))
}
encoder := new(Encoder)
@@ -223,7 +222,7 @@ type Decoder struct {
// containing exactly KeyLength bytes of keying material.
func NewDecoder(key []byte) *Decoder {
if len(key) != KeyLength {
- log.Panicf("BUG: Invalid decoder key length: %d", len(key))
+ panic(fmt.Sprintf("BUG: Invalid decoder key length: %d", len(key)))
}
decoder := new(Decoder)
@@ -253,7 +252,7 @@ func (decoder *Decoder) Decode(data *bytes.Buffer) (int, []byte, error) {
return 0, nil, err
} else if n != lengthLength {
// Should *NEVER* happen, since at least 2 bytes exist.
- log.Panicf("BUG: Failed to read obfuscated length: %d", n)
+ panic(fmt.Sprintf("BUG: Failed to read obfuscated length: %d", n))
}
// Derive the nonce the peer used.
@@ -285,8 +284,8 @@ func (decoder *Decoder) Decode(data *bytes.Buffer) (int, []byte, error) {
return 0, nil, err
} else if n != int(decoder.nextLength) {
// Should *NEVER* happen, since at least 2 bytes exist.
- log.Panicf("BUG: Failed to read secretbox, got %d, should have %d", n,
- decoder.nextLength)
+ panic(fmt.Sprintf("BUG: Failed to read secretbox, got %d, should have %d",
+ n, decoder.nextLength))
}
out, ok := secretbox.Open(nil, box, &decoder.nextNonce, &decoder.key)
if !ok {
diff --git a/ntor/ntor.go b/ntor/ntor.go
index b19c4a1..9dbed7f 100644
--- a/ntor/ntor.go
+++ b/ntor/ntor.go
@@ -45,7 +45,6 @@ import (
"encoding/base64"
"fmt"
"io"
- "log"
"code.google.com/p/go.crypto/curve25519"
"code.google.com/p/go.crypto/hkdf"
@@ -422,9 +421,9 @@ func Kdf(keySeed []byte, okmLen int) []byte {
okm := make([]byte, okmLen)
n, err := io.ReadFull(kdf, okm)
if err != nil {
- log.Panicf("BUG: Failed HKDF: %s", err.Error())
+ panic(fmt.Sprintf("BUG: Failed HKDF: %s", err.Error()))
} else if n != len(okm) {
- log.Panicf("BUG: Got truncated HKDF output: %d", n)
+ panic(fmt.Sprintf("BUG: Got truncated HKDF output: %d", n))
}
return okm
diff --git a/obfs4.go b/obfs4.go
index dae40bd..e69c7b7 100644
--- a/obfs4.go
+++ b/obfs4.go
@@ -30,7 +30,7 @@ package obfs4
import (
"bytes"
- "log"
+ "fmt"
"net"
"syscall"
"time"
@@ -98,7 +98,7 @@ func (c *Obfs4Conn) closeAfterDelay() {
func (c *Obfs4Conn) clientHandshake(nodeID *ntor.NodeID, publicKey *ntor.PublicKey) error {
if c.isServer {
- log.Panicf("BUG: clientHandshake() called for server connection")
+ panic(fmt.Sprintf("BUG: clientHandshake() called for server connection"))
}
// Generate/send the client handshake.
@@ -156,7 +156,7 @@ func (c *Obfs4Conn) clientHandshake(nodeID *ntor.NodeID, publicKey *ntor.PublicK
func (c *Obfs4Conn) serverHandshake(nodeID *ntor.NodeID, keypair *ntor.Keypair) error {
if !c.isServer {
- log.Panicf("BUG: serverHandshake() called for client connection")
+ panic(fmt.Sprintf("BUG: serverHandshake() called for client connection"))
}
hs := newServerHandshake(nodeID, keypair)
@@ -220,7 +220,7 @@ func (c *Obfs4Conn) ServerHandshake() error {
// Clients handshake as part of Dial.
if !c.isServer {
- log.Panicf("BUG: ServerHandshake() called for client connection")
+ panic(fmt.Sprintf("BUG: ServerHandshake() called for client connection"))
}
// Regardless of what happens, don't need the listener past returning from
@@ -297,7 +297,7 @@ func (c *Obfs4Conn) Write(b []byte) (int, error) {
c.isOk = false
return nSent, err
} else if n == 0 {
- log.Panicf("BUG: Write(), chopping length was 0")
+ panic(fmt.Sprintf("BUG: Write(), chopping length was 0"))
}
nSent += n
diff --git a/obfs4proxy/obfs4proxy.go b/obfs4proxy/obfs4proxy.go
index 34027fc..42a6740 100644
--- a/obfs4proxy/obfs4proxy.go
+++ b/obfs4proxy/obfs4proxy.go
@@ -75,28 +75,37 @@ var ptListeners []net.Listener
// ends, -1 is written.
var handlerChan = make(chan int)
+func logAndRecover() {
+ if err := recover(); err != nil {
+ log.Println("[ERROR] Panic:", err)
+ }
+}
+
func copyLoop(a, b net.Conn) {
var wg sync.WaitGroup
wg.Add(2)
- // XXX: Log/propagate errors.
go func() {
+ defer logAndRecover()
+ defer wg.Done()
+
_, err := io.Copy(b, a)
if err != nil {
b.Close()
a.Close()
log.Printf("[WARN] Connection closed: %s", err)
}
- wg.Done()
}()
go func() {
+ defer logAndRecover()
+ defer wg.Done()
+
_, err := io.Copy(a, b)
if err != nil {
a.Close()
b.Close()
log.Printf("[WARN] Connection closed: %s", err)
}
- wg.Done()
}()
wg.Wait()
@@ -104,6 +113,7 @@ func copyLoop(a, b net.Conn) {
func serverHandler(conn net.Conn, info *pt.ServerInfo) error {
defer conn.Close()
+ defer logAndRecover()
handlerChan <- 1
defer func() {
@@ -216,6 +226,7 @@ func clientHandler(conn *pt.SocksConn) error {
handlerChan <- -1
}()
+ defer logAndRecover()
remote, err := obfs4.Dial("tcp", conn.Req.Target, nodeID, publicKey)
if err != nil {
log.Printf("[ERROR] client: Handshake failed: %s", err)
diff --git a/packet.go b/packet.go
index 98ce426..afccc47 100644
--- a/packet.go
+++ b/packet.go
@@ -30,7 +30,6 @@ package obfs4
import (
"encoding/binary"
"fmt"
- "log"
"github.com/yawning/obfs4/framing"
)
@@ -68,8 +67,8 @@ func makePacket(pkt []byte, pktType uint8, data []byte, padLen uint16) int {
pktLen := packetOverhead + len(data) + int(padLen)
if len(data)+int(padLen) > maxPacketPayloadLength {
- log.Panicf("BUG: makePacket() len(data) + padLen > maxPacketPayloadLength: %d + %d > %d",
- len(data), padLen, maxPacketPayloadLength)
+ panic(fmt.Sprintf("BUG: makePacket() len(data) + padLen > maxPacketPayloadLength: %d + %d > %d",
+ len(data), padLen, maxPacketPayloadLength))
}
// Packets are:
@@ -104,7 +103,6 @@ func (c *Obfs4Conn) decodePacket(pkt []byte) error {
c.receiveDecodedBuffer.Write(payload)
default:
// Ignore unrecognised packet types.
- log.Printf("[INFO] - Ignoring packet type: %d", pktType)
}
return nil
diff --git a/utils.go b/utils.go
index f8a394a..ae7bc41 100644
--- a/utils.go
+++ b/utils.go
@@ -29,13 +29,13 @@ package obfs4
import (
"crypto/rand"
- "log"
+ "fmt"
"math/big"
)
func randRange(min, max int64) (int64, error) {
if max < min {
- log.Panicf("randRange: min > max (%d, %d)", min, max)
+ panic(fmt.Sprintf("randRange: min > max (%d, %d)", min, max))
}
r := (max + 1) - min
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-privacy/packages/obfs4proxy.git
More information about the Pkg-privacy-commits
mailing list