[enet-cvs] CVS: enet host.c, 1.13, 1.14 peer.c, 1.12, 1.13 protocol.c, 1.20, 1.21

Lee Salzman enet at sferik.cubik.org
Sun Nov 16 10:18:27 PST 2003


Update of /home/enet/cvsroot/enet
In directory sferik:/tmp/cvs-serv16003

Modified Files:
	host.c peer.c protocol.c 
Log Message:
sane window size handling


Index: host.c
===================================================================
RCS file: /home/enet/cvsroot/enet/host.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- host.c	2003/11/16 17:36:37	1.13
+++ host.c	2003/11/16 18:18:24	1.14
@@ -135,6 +135,19 @@
     currentPeer -> channels = (ENetChannel *) enet_malloc (channelCount * sizeof (ENetChannel));
     currentPeer -> channelCount = channelCount;
     currentPeer -> challenge = (enet_uint32) rand ();
+
+    if (host -> outgoingBandwidth == 0)
+      currentPeer -> windowSize = ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE;
+    else
+      currentPeer -> windowSize = (host -> outgoingBandwidth /
+                                    ENET_PEER_WINDOW_SIZE_SCALE) * 
+                                      ENET_PROTOCOL_MINIMUM_WINDOW_SIZE;
+
+    if (currentPeer -> windowSize < ENET_PROTOCOL_MINIMUM_WINDOW_SIZE)
+      currentPeer -> windowSize = ENET_PROTOCOL_MINIMUM_WINDOW_SIZE;
+    else
+    if (currentPeer -> windowSize > ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE)
+      currentPeer -> windowSize = ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE;
          
     for (channel = currentPeer -> channels;
          channel < & currentPeer -> channels [channelCount];
@@ -325,19 +338,6 @@
                 peer < & host -> peers [host -> peerCount];
                 ++ peer)
            {
-                if (host -> outgoingBandwidth == 0)
-                  peer -> windowSize = ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE;
-                else
-                  peer -> windowSize = (bandwidthLimit /
-                                         ENET_PEER_WINDOW_SIZE_SCALE) 
-                                           * ENET_PROTOCOL_MINIMUM_WINDOW_SIZE;
-
-                if (peer -> windowSize < ENET_PROTOCOL_MINIMUM_WINDOW_SIZE)
-                  peer -> windowSize = ENET_PROTOCOL_MINIMUM_WINDOW_SIZE;
-                else
-                if (peer -> windowSize > ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE)
-                  peer -> windowSize = ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE;
-
                if (peer -> state != ENET_PEER_STATE_CONNECTED ||
                    peer -> incomingBandwidthThrottleEpoch == timeCurrent)
                  continue;

Index: peer.c
===================================================================
RCS file: /home/enet/cvsroot/enet/peer.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- peer.c	2003/10/30 15:55:31	1.12
+++ peer.c	2003/11/16 18:18:24	1.13
@@ -330,19 +330,8 @@
     peer -> mtu = peer -> host -> mtu;
     peer -> reliableDataInTransit = 0;
     peer -> outgoingReliableSequenceNumber = 0;
+    peer -> windowSize = ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE;
 
-    if (peer -> host -> outgoingBandwidth == 0)
-      peer -> windowSize = ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE;
-    else
-      peer -> windowSize = (peer -> host -> outgoingBandwidth / 
-                             ENET_PEER_WINDOW_SIZE_SCALE) * ENET_PROTOCOL_MINIMUM_WINDOW_SIZE;
-
-    if (peer -> windowSize < ENET_PROTOCOL_MINIMUM_WINDOW_SIZE)
-      peer -> windowSize = ENET_PROTOCOL_MINIMUM_WINDOW_SIZE;
-    else
-    if (peer -> windowSize > ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE)
-      peer -> windowSize = ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE;
-    
     while (enet_list_empty (& peer -> acknowledgements) == 0)
       enet_free (enet_list_remove (enet_list_begin (& peer -> acknowledgements)));
 

Index: protocol.c
===================================================================
RCS file: /home/enet/cvsroot/enet/protocol.c,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- protocol.c	2003/10/30 15:55:31	1.20
+++ protocol.c	2003/11/16 18:18:24	1.21
@@ -205,24 +205,42 @@
 
     currentPeer -> mtu = mtu;
 
-    windowSize = ENET_NET_TO_HOST_32 (command -> connect.windowSize);
-   
+    if (host -> outgoingBandwidth == 0 &&
+        currentPeer -> incomingBandwidth == 0)
+      currentPeer -> windowSize = ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE;
+    else
+      currentPeer -> windowSize = (ENET_MIN (host -> outgoingBandwidth, currentPeer -> incomingBandwidth) /
+                                    ENET_PEER_WINDOW_SIZE_SCALE) * 
+                                      ENET_PROTOCOL_MINIMUM_WINDOW_SIZE;
+
+    if (currentPeer -> windowSize < ENET_PROTOCOL_MINIMUM_WINDOW_SIZE)
+      currentPeer -> windowSize = ENET_PROTOCOL_MINIMUM_WINDOW_SIZE;
+    else
+    if (currentPeer -> windowSize > ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE)
+      currentPeer -> windowSize = ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE;
+
+    if (host -> incomingBandwidth == 0)
+      windowSize = ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE;
+    else
+      windowSize = (host -> incomingBandwidth / ENET_PEER_WINDOW_SIZE_SCALE) *
+                     ENET_PROTOCOL_MINIMUM_WINDOW_SIZE;
+
+    if (windowSize > ENET_NET_TO_HOST_32 (command.connect.windowSize))
+      windowSize = ENET_NET_TO_HOST_32 (command.connect.windowSize);
+
     if (windowSize < ENET_PROTOCOL_MINIMUM_WINDOW_SIZE)
       windowSize = ENET_PROTOCOL_MINIMUM_WINDOW_SIZE;
-    else
+
     if (windowSize > ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE)
       windowSize = ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE;
 
-    if (windowSize < currentPeer -> windowSize)
-      currentPeer -> windowSize = windowSize;
-
     verifyCommand.header.command = ENET_PROTOCOL_COMMAND_VERIFY_CONNECT;
     verifyCommand.header.channelID = 0xFF;
     verifyCommand.header.flags = ENET_PROTOCOL_FLAG_ACKNOWLEDGE;
     verifyCommand.header.commandLength = sizeof (ENetProtocolVerifyConnect);
     verifyCommand.verifyConnect.outgoingPeerID = ENET_HOST_TO_NET_16 (currentPeer -> incomingPeerID);
     verifyCommand.verifyConnect.mtu = ENET_HOST_TO_NET_16 (currentPeer -> mtu);
-    verifyCommand.verifyConnect.windowSize = ENET_HOST_TO_NET_32 (currentPeer -> windowSize);
+    verifyCommand.verifyConnect.windowSize = ENET_HOST_TO_NET_32 (windowSize);
     verifyCommand.verifyConnect.channelCount = ENET_HOST_TO_NET_32 (channelCount);
     verifyCommand.verifyConnect.incomingBandwidth = ENET_HOST_TO_NET_32 (host -> incomingBandwidth);
     verifyCommand.verifyConnect.outgoingBandwidth = ENET_HOST_TO_NET_32 (host -> outgoingBandwidth);
@@ -357,6 +375,19 @@
 
     peer -> incomingBandwidth = ENET_NET_TO_HOST_32 (command -> bandwidthLimit.incomingBandwidth);
     peer -> outgoingBandwidth = ENET_NET_TO_HOST_32 (command -> bandwidthLimit.outgoingBandwidth);
+
+    if (peer -> incomingBandwidth == 0 &&
+        host -> outgoingBandwidth == 0)
+      peer -> windowSize = ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE;
+    else
+      peer -> windowSize = (ENET_MIN (peer -> incomingBandwidth, host -> outgoingBandwidth) /
+                             ENET_PEER_WINDOW_SIZE_SCALE) * ENET_PROTOCOL_MINIMUM_WINDOW_SIZE;
+
+    if (peer -> windowSize < ENET_PROTOCOL_MINIMUM_WINDOW_SIZE)
+      peer -> windowSize = ENET_PROTOCOL_MINIMUM_WINDOW_SIZE;
+    else
+    if (peer -> windowSize > ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE)
+      peer -> windowSize = ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE;
 }
 
 static void



More information about the enet-cvs mailing list