From 96c674cfab2218fb67bed45131a449fc28ecb30a Mon Sep 17 00:00:00 2001 From: Lee Salzman Date: Fri, 14 May 2010 18:12:52 +0000 Subject: [PATCH] enet updates git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@4857 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- source/enet/host.c | 17 +++++++++++++++++ source/enet/include/enet/enet.h | 3 +++ source/enet/protocol.c | 10 +++++++++- source/lib/enet.lib | Bin 33536 -> 33718 bytes 4 files changed, 29 insertions(+), 1 deletion(-) diff --git a/source/enet/host.c b/source/enet/host.c index 8d07e804..9edceb23 100755 --- a/source/enet/host.c +++ b/source/enet/host.c @@ -66,6 +66,7 @@ enet_host_create (const ENetAddress * address, size_t peerCount, enet_uint32 inc if (address != NULL) host -> address = * address; + host -> channelLimit = ENET_PROTOCOL_MAXIMUM_CHANNEL_COUNT; host -> incomingBandwidth = incomingBandwidth; host -> outgoingBandwidth = outgoingBandwidth; host -> bandwidthThrottleEpoch = 0; @@ -208,6 +209,22 @@ enet_host_connect (ENetHost * host, const ENetAddress * address, size_t channelC return currentPeer; } +/** Limits the maximum allowed channels of future incoming connections. + @param host host to limit + @param channelLimit the maximum number of channels allowed; if 0, then this is equivalent to ENET_PROTOCOL_MAXIMUM_CHANNEL_COUNT +*/ +void +enet_host_channel_limit (ENetHost * host, size_t channelLimit) +{ + if (! channelLimit || channelLimit > ENET_PROTOCOL_MAXIMUM_CHANNEL_COUNT) + channelLimit = ENET_PROTOCOL_MAXIMUM_CHANNEL_COUNT; + else + if (channelLimit < ENET_PROTOCOL_MINIMUM_CHANNEL_COUNT) + channelLimit = ENET_PROTOCOL_MINIMUM_CHANNEL_COUNT; + + host -> channelLimit = channelLimit; +} + /** Queues a packet to be sent to all peers associated with the host. @param host host on which to broadcast the packet @param channelID channel on which to broadcast diff --git a/source/enet/include/enet/enet.h b/source/enet/include/enet/enet.h index 2ffcb3f7..04b416ec 100755 --- a/source/enet/include/enet/enet.h +++ b/source/enet/include/enet/enet.h @@ -294,6 +294,7 @@ typedef struct _ENetPeer @sa enet_host_service() @sa enet_host_flush() @sa enet_host_broadcast() + @sa enet_host_channel_limit() @sa enet_host_bandwidth_limit() @sa enet_host_bandwidth_throttle() */ @@ -308,6 +309,7 @@ typedef struct _ENetHost int recalculateBandwidthLimits; ENetPeer * peers; /**< array of peers allocated for this host */ size_t peerCount; /**< number of peers allocated for this host */ + size_t channelLimit; /**< maximum number of channels allowed for connected peers */ enet_uint32 serviceTime; ENetList dispatchQueue; int continueSending; @@ -471,6 +473,7 @@ ENET_API int enet_host_check_events (ENetHost *, ENetEvent *); ENET_API int enet_host_service (ENetHost *, ENetEvent *, enet_uint32); ENET_API void enet_host_flush (ENetHost *); ENET_API void enet_host_broadcast (ENetHost *, enet_uint8, ENetPacket *); +ENET_API void enet_host_channel_limit (ENetHost *, size_t); ENET_API void enet_host_bandwidth_limit (ENetHost *, enet_uint32, enet_uint32); extern void enet_host_bandwidth_throttle (ENetHost *); diff --git a/source/enet/protocol.c b/source/enet/protocol.c index 544feb2d..1362179d 100755 --- a/source/enet/protocol.c +++ b/source/enet/protocol.c @@ -292,6 +292,8 @@ enet_protocol_handle_connect (ENetHost * host, ENetProtocolHeader * header, ENet if (currentPeer >= & host -> peers [host -> peerCount]) return NULL; + if (channelCount > host -> channelLimit) + channelCount = host -> channelLimit; currentPeer -> channels = (ENetChannel *) enet_malloc (channelCount * sizeof (ENetChannel)); if (currentPeer -> channels == NULL) return NULL; @@ -745,11 +747,14 @@ enet_protocol_handle_verify_connect (ENetHost * host, ENetEvent * event, ENetPee { enet_uint16 mtu; enet_uint32 windowSize; + size_t channelCount; if (peer -> state != ENET_PEER_STATE_CONNECTING) return 0; - if (ENET_NET_TO_HOST_32 (command -> verifyConnect.channelCount) != peer -> channelCount || + channelCount = ENET_NET_TO_HOST_32 (command -> verifyConnect.channelCount); + + if (channelCount < ENET_PROTOCOL_MINIMUM_CHANNEL_COUNT || channelCount > ENET_PROTOCOL_MAXIMUM_CHANNEL_COUNT || ENET_NET_TO_HOST_32 (command -> verifyConnect.packetThrottleInterval) != peer -> packetThrottleInterval || ENET_NET_TO_HOST_32 (command -> verifyConnect.packetThrottleAcceleration) != peer -> packetThrottleAcceleration || ENET_NET_TO_HOST_32 (command -> verifyConnect.packetThrottleDeceleration) != peer -> packetThrottleDeceleration) @@ -761,6 +766,9 @@ enet_protocol_handle_verify_connect (ENetHost * host, ENetEvent * event, ENetPee enet_protocol_remove_sent_reliable_command (peer, 1, 0xFF); + if (channelCount < peer -> channelCount) + peer -> channelCount = channelCount; + peer -> outgoingPeerID = ENET_NET_TO_HOST_16 (command -> verifyConnect.outgoingPeerID); mtu = ENET_NET_TO_HOST_16 (command -> verifyConnect.mtu); diff --git a/source/lib/enet.lib b/source/lib/enet.lib index b932c2f43021240e197198a18f7619e5304ecb33..b6f745f5849a7120ff98ae21b0c9e884b1cc5eb8 100644 GIT binary patch delta 6040 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 delta 5816 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 D>iLKT