forked from Mxmilu666/frp
feat: use binary codec for SUDP packets (#5461)
This commit is contained in:
+12
-4
@@ -885,14 +885,22 @@ func (svr *Service) RegisterWorkConn(
|
||||
}
|
||||
|
||||
func (svr *Service) RegisterVisitorConn(visitorConn net.Conn, newMsg *msg.NewVisitorConn, wireProtocol string) error {
|
||||
admit := func(visitorUser string) error {
|
||||
admit := func(visitorUser, visitorWireProtocol, visitorUDPPacketCodec string) error {
|
||||
if visitorWireProtocol == "" {
|
||||
visitorWireProtocol = wireProtocol
|
||||
}
|
||||
return svr.rc.VisitorManager.NewConn(newMsg.ProxyName, visitorConn, newMsg.Timestamp, newMsg.SignKey,
|
||||
newMsg.UseEncryption, newMsg.UseCompression, visitorUser, wireProtocol)
|
||||
newMsg.UseEncryption, newMsg.UseCompression, visitorUser, visitorWireProtocol, visitorUDPPacketCodec)
|
||||
}
|
||||
// TODO(deprecation): Compatible with old versions, can be without runID, user is empty. In later versions, it will be mandatory to include runID.
|
||||
// If runID is required, it is not compatible with versions prior to v0.50.0.
|
||||
if newMsg.RunID != "" {
|
||||
admitted, err := svr.ctlManager.admitVisitorByRunID(newMsg.RunID, admit)
|
||||
admitted, err := svr.ctlManager.admitVisitorByRunID(newMsg.RunID, func(visitorUser, controlWireProtocol, controlUDPPacketCodec string) error {
|
||||
if wireProtocol != controlWireProtocol {
|
||||
return fmt.Errorf("visitor connection wire protocol mismatch: got %s want %s", wireProtocol, controlWireProtocol)
|
||||
}
|
||||
return admit(visitorUser, controlWireProtocol, controlUDPPacketCodec)
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -901,5 +909,5 @@ func (svr *Service) RegisterVisitorConn(visitorConn net.Conn, newMsg *msg.NewVis
|
||||
}
|
||||
return nil
|
||||
}
|
||||
return admit("")
|
||||
return admit("", wireProtocol, "")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user