Commit 0e870c80 authored by Tsaiilin's avatar Tsaiilin

update

parent d134309b
......@@ -35,9 +35,10 @@ func NewCli(cfg *model.Configure) *Client {
}
}
client := &Client{
config: cfg,
localAddr: localAddr,
connStore: sync.Map{},
config: cfg,
localAddr: localAddr,
connStore: sync.Map{},
sessionStore: sync.Map{},
}
return client
......
......@@ -62,6 +62,15 @@ func (client *Client) handleConnect(packet *protocol.MajoraPacket, session getty
dialer := net.Dialer{
Timeout: common.UpstreamTimeout,
LocalAddr: client.localAddr,
//Resolver: &net.Resolver{
// PreferGo: true,
// Dial: func(ctx context.Context, network, address string) (net.Conn, error) {
// d := net.Dialer{
// Timeout: 10 * time.Second,
// }
// return d.DialContext(ctx, "udp", "8.8.8.8:53")
// },
//},
}
conn, err := dialer.Dial(common.TCP, packet.Extra)
......@@ -177,7 +186,7 @@ func (client *Client) handleUpStream(conn *net.TCPConn, packet *protocol.MajoraP
traceRecorder.RecordEvent(trace.UpStreamEvent, fmt.Sprintf("Ready read from upstream (sn:%d)", packet.SerialNumber))
log.Run().Debugf("[handleUpStream] %d-> handleUpStream start...", packet.SerialNumber)
for {
buf := make([]byte, common.BufSize) // 4k
buf := make([]byte, common.BufSize)
cnt, err := conn.Read(buf)
if err != nil {
opErr, ok := err.(*net.OpError)
......@@ -197,9 +206,9 @@ func (client *Client) handleUpStream(conn *net.TCPConn, packet *protocol.MajoraP
traceRecorder.RecordEvent(trace.UpStreamEvent, fmt.Sprintf("read count: %d (sn:%d)",
cnt, packet.SerialNumber))
traceRecorder.RecordEvent(trace.UpStreamEvent, fmt.Sprintf("Start transfer data to natServer (sn:%d)", packet.SerialNumber))
traceRecorder.RecordEvent(trace.UpStreamEvent, fmt.Sprintf("Start write to natServer (sn:%d)", packet.SerialNumber))
pack := protocol.TypeTransfer.CreatePacket()
pack.Data = buf[:cnt]
pack.Data = buf[0:cnt]
pack.SerialNumber = packet.SerialNumber
if _, _, err := session.WritePkg(pack, 0); err != nil {
log.Error().Errorf("[handleUpStream] %d-> write to server fail %+v", packet.SerialNumber, err.Error())
......@@ -222,7 +231,7 @@ func (client *Client) handleDisconnectMessage(session getty.Session, packet *pro
log.Run().Debugf("[handleDisconnectMessage] %d->session closed %v extra:%s", packet.SerialNumber, session.IsClosed())
if conn, ok := client.connStore.Load(packet.SerialNumber); ok {
upstreamConn := conn.(*net.TCPConn)
readDeadLine := time.Now().Add(3 * time.Second)
readDeadLine := time.Now().Add(10 * time.Millisecond)
traceRecorder.RecordEvent(trace.DisconnectEvent, fmt.Sprintf("Set upstream read deadline:%s (sn:%d)",
readDeadLine.Format("2006-01-02 15:04:05.000000"), packet.SerialNumber))
err := upstreamConn.SetReadDeadline(readDeadLine)
......@@ -231,6 +240,7 @@ func (client *Client) handleDisconnectMessage(session getty.Session, packet *pro
fmt.Sprintf("Set upstream read deadline failed (sn:%d)", packet.SerialNumber), err)
client.OnClose(session, upstreamConn, packet.SerialNumber)
}
} else {
traceRecorder.RecordEvent(trace.DisconnectEvent, fmt.Sprintf("The upstream connection is closed, do nothing (sn:%d)", packet.SerialNumber))
}
......@@ -256,7 +266,7 @@ func (client *Client) AddSession(packet *protocol.MajoraPacket, session *trace.S
func (client *Client) GetRecorderFromSession(sn int64) trace.Recorder {
session, ok := client.sessionStore.Load(sn)
if !ok {
log.Error().Errorf("[GetSession] get session failed, has one", sn)
log.Run().Warnf("[GetRecorderFromSession] get session failed, maybe already closed (%d)", sn)
session = trace.NewSession("")
}
traceSession := session.(*trace.Session)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment