@@ -96,9 +96,6 @@ class Server implements ServerInterface{
9696 /** @var int */
9797 protected $ maxMtuSize ;
9898
99- /** @var InternetAddress */
100- protected $ reusableAddress ;
101-
10299 /** @var int */
103100 protected $ nextSessionId = 0 ;
104101
@@ -122,8 +119,6 @@ public function __construct(int $serverId, \Logger $logger, Socket $socket, int
122119 $ this ->startTimeMS = (int ) (microtime (true ) * 1000 );
123120
124121 $ this ->unconnectedMessageHandler = new UnconnectedMessageHandler ($ this , $ protocolAcceptor );
125-
126- $ this ->reusableAddress = clone $ this ->socket ->getBindAddress ();
127122 }
128123
129124 /**
@@ -134,7 +129,7 @@ public function getRakNetTimeMS() : int{
134129 }
135130
136131 public function getPort () : int {
137- return $ this ->socket ->getBindAddress ()->port ;
132+ return $ this ->socket ->getBindAddress ()->getPort () ;
138133 }
139134
140135 public function getMaxMtuSize () : int {
@@ -225,10 +220,8 @@ private function tick() : void{
225220
226221 /** @phpstan-impure */
227222 private function receivePacket () : bool {
228- $ address = $ this ->reusableAddress ;
229-
230223 try {
231- $ buffer = $ this ->socket ->readPacket ($ address -> ip , $ address -> port );
224+ $ buffer = $ this ->socket ->readPacket ($ addressIp , $ addressPort );
232225 }catch (SocketException $ e ){
233226 $ error = $ e ->getCode ();
234227 if ($ error === SOCKET_ECONNRESET ){ //client disconnected improperly, maybe crash or lost connection
@@ -244,23 +237,24 @@ private function receivePacket() : bool{
244237 $ len = strlen ($ buffer );
245238
246239 $ this ->receiveBytes += $ len ;
247- if (isset ($ this ->block [$ address -> ip ])){
240+ if (isset ($ this ->block [$ addressIp ])){
248241 return true ;
249242 }
250243
251- if (isset ($ this ->ipSec [$ address -> ip ])){
252- if (++$ this ->ipSec [$ address -> ip ] >= $ this ->packetLimit ){
253- $ this ->blockAddress ($ address -> ip );
244+ if (isset ($ this ->ipSec [$ addressIp ])){
245+ if (++$ this ->ipSec [$ addressIp ] >= $ this ->packetLimit ){
246+ $ this ->blockAddress ($ addressIp );
254247 return true ;
255248 }
256249 }else {
257- $ this ->ipSec [$ address -> ip ] = 1 ;
250+ $ this ->ipSec [$ addressIp ] = 1 ;
258251 }
259252
260253 if ($ len < 1 ){
261254 return true ;
262255 }
263256
257+ $ address = new InternetAddress ($ addressIp , $ addressPort , $ this ->socket ->getBindAddress ()->getVersion ());
264258 try {
265259 $ session = $ this ->getSessionByAddress ($ address );
266260 if ($ session !== null ){
@@ -283,7 +277,7 @@ private function receivePacket() : bool{
283277 foreach ($ this ->rawPacketFilters as $ pattern ){
284278 if (preg_match ($ pattern , $ buffer ) > 0 ){
285279 $ handled = true ;
286- $ this ->eventListener ->onRawPacketReceive ($ address ->ip , $ address ->port , $ buffer );
280+ $ this ->eventListener ->onRawPacketReceive ($ address ->getIp () , $ address ->getPort () , $ buffer );
287281 break ;
288282 }
289283 }
@@ -307,7 +301,7 @@ private function receivePacket() : bool{
307301 }else {
308302 $ logFn ();
309303 }
310- $ this ->blockAddress ($ address ->ip , 5 );
304+ $ this ->blockAddress ($ address ->getIp () , 5 );
311305 }
312306
313307 return true ;
@@ -317,7 +311,7 @@ public function sendPacket(Packet $packet, InternetAddress $address) : void{
317311 $ out = new PacketSerializer (); //TODO: reusable streams to reduce allocations
318312 $ packet ->encode ($ out );
319313 try {
320- $ this ->sendBytes += $ this ->socket ->writePacket ($ out ->getBuffer (), $ address ->ip , $ address ->port );
314+ $ this ->sendBytes += $ this ->socket ->writePacket ($ out ->getBuffer (), $ address ->getIp () , $ address ->getPort () );
321315 }catch (SocketException $ e ){
322316 $ this ->logger ->debug ($ e ->getMessage ());
323317 }
@@ -413,7 +407,7 @@ private function removeSessionInternal(Session $session) : void{
413407
414408 public function openSession (Session $ session ) : void {
415409 $ address = $ session ->getAddress ();
416- $ this ->eventListener ->onClientConnect ($ session ->getInternalId (), $ address ->ip , $ address ->port , $ session ->getID ());
410+ $ this ->eventListener ->onClientConnect ($ session ->getInternalId (), $ address ->getIp () , $ address ->getPort () , $ session ->getID ());
417411 }
418412
419413 private function checkSessions () : void {
0 commit comments