WIP: prepare for testing
This commit is contained in:
@@ -119,7 +119,7 @@ func (b *backendUDP) createRelSend(clientAddr string, buf []byte) (udpRel, error
|
||||
return rel, fmt.Errorf("create udp relation and send message: dial udp: %w", err)
|
||||
}
|
||||
|
||||
if n, err = udpConn.Write(buf); err != nil && n == 0 {
|
||||
if n, err = udpConn.WriteTo(buf, b.cfg.BackendAddr()); err != nil && n == 0 {
|
||||
_ = udpConn.Close()
|
||||
return rel, fmt.Errorf("create udp relation and send message: write udp: %w", err)
|
||||
}
|
||||
@@ -130,6 +130,23 @@ func (b *backendUDP) createRelSend(clientAddr string, buf []byte) (udpRel, error
|
||||
return rel, nil
|
||||
}
|
||||
|
||||
func (b *backendUDP) relSend(rel udpRel, buf []byte) error {
|
||||
var (
|
||||
n int
|
||||
err error
|
||||
)
|
||||
|
||||
if n, err = rel.backend.WriteTo(buf, b.cfg.BackendAddr()); err != nil && n == 0 {
|
||||
return fmt.Errorf("relSend: %w", err)
|
||||
}
|
||||
|
||||
if len(buf) != n {
|
||||
log.Error().Msg("relSend mismatch size")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (b *backendUDP) handle(wg *sync.WaitGroup, ctx context.Context, msg udpMessage) {
|
||||
var (
|
||||
rel udpRel
|
||||
@@ -139,9 +156,15 @@ func (b *backendUDP) handle(wg *sync.WaitGroup, ctx context.Context, msg udpMess
|
||||
|
||||
if rel, ok = b.findRel(msg.addr); !ok {
|
||||
if rel, err = b.createRelSend(msg.addr, msg.buf.Bytes()); err != nil {
|
||||
msg.buf.Reset()
|
||||
b.bufPool.Put(msg.buf)
|
||||
log.Error().Err(err).Str(DIRECTION, CLIENT_TO_BACKEND).Msg("establish relation with udp backend")
|
||||
return
|
||||
}
|
||||
|
||||
msg.buf.Reset()
|
||||
b.bufPool.Put(msg.buf)
|
||||
|
||||
rel.ctx, rel.ctxCancel = context.WithCancel(ctx)
|
||||
b.addUpdateRel(msg.addr, rel)
|
||||
|
||||
@@ -150,9 +173,18 @@ func (b *backendUDP) handle(wg *sync.WaitGroup, ctx context.Context, msg udpMess
|
||||
return
|
||||
}
|
||||
|
||||
_ = rel
|
||||
//TODO: handle existing valid client
|
||||
if err = b.relSend(rel, msg.buf.Bytes()); err != nil {
|
||||
msg.buf.Reset()
|
||||
b.bufPool.Put(msg.buf)
|
||||
log.Error().Err(err).Msg("handle: send for existing relation")
|
||||
return
|
||||
}
|
||||
|
||||
msg.buf.Reset()
|
||||
b.bufPool.Put(msg.buf)
|
||||
|
||||
rel.expiry = time.Now().Add(b.cfg.Timeout())
|
||||
b.addUpdateRel(rel.clientAddr, rel)
|
||||
}
|
||||
|
||||
func (b *backendUDP) Send(ctx context.Context, addr string, p []byte) error {
|
||||
|
||||
Reference in New Issue
Block a user