mirror of
https://github.com/soypat/lneto.git
synced 2026-08-22 15:39:06 +00:00
add tcpclient to aid debugging
This commit is contained in:
@@ -49,7 +49,11 @@ func main() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
// h := &handler.H
|
||||||
|
// _ = h.AwaitingSynAck()
|
||||||
|
// _ = h.AwaitingSynResponse()
|
||||||
|
// _ = h.AwaitingSynSend()
|
||||||
|
// _ = h
|
||||||
err = handler.OpenListen(addrPort.Port(), iss)
|
err = handler.OpenListen(addrPort.Port(), iss)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -57,7 +61,7 @@ func main() {
|
|||||||
|
|
||||||
tap := ltesto.NewHTTPTapClient("http://127.0.0.1:7070")
|
tap := ltesto.NewHTTPTapClient("http://127.0.0.1:7070")
|
||||||
defer tap.Close()
|
defer tap.Close()
|
||||||
|
tap.ReadDiscard() // Discard all unread content.
|
||||||
fmt.Println("hosting server at ", addrPort.String())
|
fmt.Println("hosting server at ", addrPort.String())
|
||||||
var buf [mtu]byte
|
var buf [mtu]byte
|
||||||
var hdr httpraw.Header
|
var hdr httpraw.Header
|
||||||
@@ -68,6 +72,7 @@ func main() {
|
|||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
} else if nread > 0 {
|
} else if nread > 0 {
|
||||||
debugEthPacket(nil, "IN ", buf[:nread])
|
debugEthPacket(nil, "IN ", buf[:nread])
|
||||||
|
fmt.Println("INHEX ", debugHex(buf[:nread]))
|
||||||
err = lStack.RecvEth(buf[:nread])
|
err = lStack.RecvEth(buf[:nread])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
slogger.error("recv", slog.String("err", err.Error()), slog.Int("plen", nread))
|
slogger.error("recv", slog.String("err", err.Error()), slog.Int("plen", nread))
|
||||||
@@ -78,6 +83,7 @@ func main() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
slogger.error("handle", slog.String("err", err.Error()))
|
slogger.error("handle", slog.String("err", err.Error()))
|
||||||
} else if nw > 0 {
|
} else if nw > 0 {
|
||||||
|
fmt.Println("OUTHEX ", debugHex(buf[:nread]))
|
||||||
_, err = tap.Write(buf[:nw])
|
_, err = tap.Write(buf[:nw])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -326,3 +332,15 @@ func debugEthPacket(logger *slog.Logger, prefix string, b []byte) {
|
|||||||
fmt.Println("PAYLOAD:", string(payload))
|
fmt.Println("PAYLOAD:", string(payload))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func debugHex(b []byte) string {
|
||||||
|
var d []byte
|
||||||
|
for i := 0; i < len(b); i++ {
|
||||||
|
c1 := tblhex[b[i]&0xf]
|
||||||
|
c2 := tblhex[b[i]>>4]
|
||||||
|
d = append(d, c2, c1, ' ')
|
||||||
|
}
|
||||||
|
return string(d)
|
||||||
|
}
|
||||||
|
|
||||||
|
const tblhex = "0123456789abcdef"
|
||||||
|
|||||||
@@ -0,0 +1,43 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/soypat/lneto/http/httpraw"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
if err := run(); err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
fmt.Println("DONE")
|
||||||
|
}
|
||||||
|
|
||||||
|
func run() error {
|
||||||
|
fmt.Println("dialing...")
|
||||||
|
conn, err := net.DialTCP("tcp4", &net.TCPAddr{IP: []byte{192, 168, 10, 1}, Port: 1337}, &net.TCPAddr{IP: []byte{192, 168, 10, 2}, Port: 80})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
fmt.Println("reading...")
|
||||||
|
var hdr httpraw.Header
|
||||||
|
for {
|
||||||
|
_, err = hdr.ReadFromLimited(conn, 1024)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
const asRequest = false
|
||||||
|
var ok bool
|
||||||
|
ok, err = hdr.TryParse(asRequest)
|
||||||
|
if ok {
|
||||||
|
break
|
||||||
|
} else if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fmt.Println("got HTTP:\n", hdr.String())
|
||||||
|
return nil
|
||||||
|
}
|
||||||
@@ -21,6 +21,7 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type TCPConn struct {
|
type TCPConn struct {
|
||||||
|
// deprecated: here for debugging purposes only.
|
||||||
h tcp.Handler
|
h tcp.Handler
|
||||||
remoteAddr []byte
|
remoteAddr []byte
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user