diff --git a/Facepunch.Steamworks/SteamMatchmaking.cs b/Facepunch.Steamworks/SteamMatchmaking.cs
index e93bc18..5e2b0ae 100644
--- a/Facepunch.Steamworks/SteamMatchmaking.cs
+++ b/Facepunch.Steamworks/SteamMatchmaking.cs
@@ -12,6 +12,14 @@ namespace Steamworks
///
public static class SteamMatchmaking
{
+ internal const int k_nMaxLobbyKeyLength = 255;
+
+ ///
+ /// Maximum number of characters a lobby metadata key can be
+ ///
+ public static int MaxLobbyKeyLength { get { return k_nMaxLobbyKeyLength; } }
+
+
static ISteamMatchmaking _internal;
internal static ISteamMatchmaking Internal
diff --git a/Facepunch.Steamworks/Structs/LobbyQuery.cs b/Facepunch.Steamworks/Structs/LobbyQuery.cs
index adcf2d4..fec23cb 100644
--- a/Facepunch.Steamworks/Structs/LobbyQuery.cs
+++ b/Facepunch.Steamworks/Structs/LobbyQuery.cs
@@ -51,21 +51,14 @@ namespace Steamworks.Data
///
public LobbyQuery FilterStringKeyValue( string nKey, string nValue )
{
- stringFilter = new MatchMakingKeyValuePair_t
+ if ( !string.IsNullOrEmpty(nKey) && nKey.Length <= SteamMatchmaking.MaxLobbyKeyLength )
{
- Key = nKey,
- Value = nValue
- };
-
- return this;
- }
-
- ///
- /// Filter by specified key/value pair; MatchMakingKeyValuePair_t parameter
- ///
- public LobbyQuery FilterStringKeyValue( MatchMakingKeyValuePair_t kv )
- {
- stringFilter = kv;
+ stringFilter = new MatchMakingKeyValuePair_t
+ {
+ Key = nKey,
+ Value = nValue
+ };
+ }
return this;
}
@@ -99,6 +92,7 @@ namespace Steamworks.Data
#endregion
+
void ApplyFilters()
{
if ( distance.HasValue )