Метод «procedure TDSTCPChannel.Open» в DSTCPServerTransport.pas использует частный IP-адрес подключенного пользователя при назначении «FChannelInfo». Когда я отслеживал транспорт HTTP, он использовал общедоступный IP-адрес пользователя. Если DSTCPServerTransport.pas был обновлен так, что
FChannelInfo := TDBXSocketChannelInfo.Create(Integer(FContext.Connection), FContext.Connection.Socket.Binding.IP);
был изменен на
FChannelInfo := TDBXSocketChannelInfo.Create(Integer(FContext.Connection), FContext.Connection.Socket.Binding.PeerIP);
тогда DSTCPServerTransport.pas будет соответствовать реализации HTTP-транспорта, а общедоступный IP-адрес подключенного пользователя будет доступен в событии TDSServer.OnConnect через «DSConnectEventObject.ChannelInfo.Info» и для TCP-соединений. Несколько разработчиков обсуждали это в следующих двух обсуждениях EBT: Обсуждение №1, Обсуждение №2. QC# для этого — #91030.
Я попытался внести изменения самостоятельно, но узнал, что не могу повторно скомпилировать DataSnap Framework (см. здесь).
Будет ли это исправлено в XE2 и/или смогут ли конечные пользователи перекомпилировать DataSnap Framework в XE2? Будет ли патч для DataSnap до XE2, который будет включать это исправление?
Спасибо, Джеймс