config: Use config file name and entry when deciding removal
[framework/connectivity/connman.git] / gweb / giognutls.c
index 887109a..47ff8c4 100644 (file)
@@ -2,7 +2,7 @@
  *
  *  Web service library with GLib integration
  *
- *  Copyright (C) 2009-2010  Intel Corporation. All rights reserved.
+ *  Copyright (C) 2009-2012  Intel Corporation. All rights reserved.
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License version 2 as
@@ -42,7 +42,7 @@ struct _GIOGnuTLSChannel {
        GIOChannel channel;
        gint fd;
        gnutls_certificate_credentials_t cred;
-       gnutls_session session;
+       gnutls_session_t session;
        gboolean established;
        gboolean again;
 };
@@ -54,11 +54,11 @@ struct _GIOGnuTLSWatch {
        GIOCondition condition;
 };
 
-static volatile gint global_init_done = 0;
+static volatile int global_init_done = 0;
 
 static inline void g_io_gnutls_global_init(void)
 {
-       if (g_atomic_int_compare_and_exchange(&global_init_done, 0, 1) == TRUE)
+       if (__sync_bool_compare_and_swap(&global_init_done, 0, 1) == TRUE)
                gnutls_global_init();
 }
 
@@ -408,6 +408,11 @@ static ssize_t g_io_gnutls_pull_func(gnutls_transport_ptr_t transport_data,
        return result;
 }
 
+gboolean g_io_channel_supports_tls(void)
+{
+       return TRUE;
+}
+
 GIOChannel *g_io_channel_gnutls_new(int fd)
 {
        GIOGnuTLSChannel *gnutls_channel;
@@ -446,10 +451,13 @@ GIOChannel *g_io_channel_gnutls_new(int fd)
                                                g_io_gnutls_pull_func);
 #if GNUTLS_VERSION_NUMBER < 0x020c00
        gnutls_transport_set_lowat(gnutls_channel->session, 0);
-#endif
 
        gnutls_priority_set_direct(gnutls_channel->session,
-                               "NORMAL:!VERS-TLS1.1:!VERS-TLS1.0", NULL);
+                                               "NORMAL:%COMPAT", NULL);
+#else
+       gnutls_priority_set_direct(gnutls_channel->session,
+               "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.0:+VERS-SSL3.0:%COMPAT", NULL);
+#endif
 
        gnutls_certificate_allocate_credentials(&gnutls_channel->cred);
        gnutls_credentials_set(gnutls_channel->session,