]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
server precedence also used in compression methods.
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Tue, 13 Dec 2011 19:19:35 +0000 (20:19 +0100)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Tue, 13 Dec 2011 19:19:35 +0000 (20:19 +0100)
lib/gnutls_handshake.c

index 6480033bcd791520313ebb53e2296d06ccacf186..bf75919d72740748cef950655062d2c4da56cadd 100644 (file)
@@ -987,24 +987,47 @@ _gnutls_server_select_comp_method (gnutls_session_t session,
       return x;
     }
 
-  for (j = 0; j < datalen; j++)
+  if (session->internals.priorities.server_precedence == 0)
     {
-      for (i = 0; i < x; i++)
+      for (j = 0; j < datalen; j++)
         {
-          if (comps[i] == data[j])
+          for (i = 0; i < x; i++)
             {
-              gnutls_compression_method_t method =
-                _gnutls_compression_get_id (comps[i]);
+              if (comps[i] == data[j])
+                {
+                  gnutls_compression_method_t method =
+                    _gnutls_compression_get_id (comps[i]);
 
-              _gnutls_epoch_set_compression (session, EPOCH_NEXT, method);
-              session->security_parameters.compression_method = method;
+                  _gnutls_epoch_set_compression (session, EPOCH_NEXT, method);
+                  session->security_parameters.compression_method = method;
 
-              _gnutls_handshake_log
-                ("HSK[%p]: Selected Compression Method: %s\n", session,
-                 gnutls_compression_get_name (method));
+                  _gnutls_handshake_log
+                    ("HSK[%p]: Selected Compression Method: %s\n", session,
+                    gnutls_compression_get_name (method));
+                  return 0;
+                }
+            }
+        }
+    }
+  else
+    {
+      for (i = 0; i < x; i++)
+        {
+          for (j = 0; j < datalen; j++)
+            {
+              if (comps[i] == data[j])
+                {
+                  gnutls_compression_method_t method =
+                    _gnutls_compression_get_id (comps[i]);
 
+                  _gnutls_epoch_set_compression (session, EPOCH_NEXT, method);
+                  session->security_parameters.compression_method = method;
 
-              return 0;
+                  _gnutls_handshake_log
+                    ("HSK[%p]: Selected Compression Method: %s\n", session,
+                    gnutls_compression_get_name (method));
+                  return 0;
+                }
             }
         }
     }