Details

    • Type: Task
    • Status: Closed (View Workflow)
    • Priority: Minor
    • Resolution: Fixed
    • Fix Version/s: 10.0.1
    • Component/s: None
    • Labels:
      None

      Description

      Since OpenSSL and Yassl have different behaviors, it would be useful to determine if the server was compiled with OpenSSL or Yassl by having an additional variable "have_yassl".

      Currently this can be done by checking status variable "SSL_accepts" which is always zero, since Yassl's openssl layer is not complete yet (SSL_CTX::IncrementStats is implememented, but not used). However this method is not transparent and will not work if Yassl got fixed/completed.

      Example (server compiled with OpenSSL):

      mysql> select * from global_variables where variable_name like '%ssl' \G;
      *************************** 1. row ***************************
      VARIABLE_NAME: HAVE_SSL
      VARIABLE_VALUE: YES
      *************************** 2. row ***************************
      VARIABLE_NAME: HAVE_YASSL
      VARIABLE_VALUE: NO
      *************************** 3. row ***************************
       VARIABLE_NAME: HAVE_OPENSSL
      VARIABLE_VALUE: YES
      3 rows in set (0.01 sec)

      Code: (diff against 5.5)

      === modified file 'sql/mysqld.cc'
      --- sql/mysqld.cc	2012-11-22 09:19:31 +0000
      +++ sql/mysqld.cc	2012-12-10 11:52:44 +0000
      @@ -650,7 +650,7 @@
       MY_LOCALE *my_default_lc_messages;
       MY_LOCALE *my_default_lc_time_names;
       
      -SHOW_COMP_OPTION have_ssl, have_symlink, have_dlopen, have_query_cache;
      +SHOW_COMP_OPTION have_ssl, have_yassl, have_symlink, have_dlopen, have_query_cache;
       SHOW_COMP_OPTION have_geometry, have_rtree_keys;
       SHOW_COMP_OPTION have_crypt, have_compress;
       SHOW_COMP_OPTION have_profiling;
      @@ -4053,11 +4053,17 @@
             sql_print_warning("Failed to setup SSL");
             sql_print_warning("SSL error: %s", sslGetErrString(error));
             opt_use_ssl = 0;
      +#ifdef HAVE_YASSL
      +      have_yassl=
      +#endif
             have_ssl= SHOW_OPTION_DISABLED;
           }
         }
         else
         {
      +#ifdef HAVE_YASSL
      +    have_yassl=
      +#endif
           have_ssl= SHOW_OPTION_DISABLED;
         }
         if (des_key_file)
      @@ -7060,8 +7066,7 @@
         {"Sort_range",	       (char*) offsetof(STATUS_VAR, filesort_range_count), SHOW_LONG_STATUS},
         {"Sort_rows",		       (char*) offsetof(STATUS_VAR, filesort_rows), SHOW_LONG_STATUS},
         {"Sort_scan",		       (char*) offsetof(STATUS_VAR, filesort_scan_count), SHOW_LONG_STATUS},
      -#ifdef HAVE_OPENSSL
      -#ifndef EMBEDDED_LIBRARY
      +#if defined(HAVE_OPENSSL) && !defined(EMBEDDED_LIBRARY)
         {"Ssl_accept_renegotiates",  (char*) &show_ssl_ctx_sess_accept_renegotiate, SHOW_FUNC},
         {"Ssl_accepts",              (char*) &show_ssl_ctx_sess_accept, SHOW_FUNC},
         {"Ssl_callback_cache_hits",  (char*) &show_ssl_ctx_sess_cb_hits, SHOW_FUNC},
      @@ -7086,7 +7091,6 @@
         {"Ssl_verify_mode",          (char*) &show_ssl_get_verify_mode, SHOW_FUNC},
         {"Ssl_version",              (char*) &show_ssl_get_version, SHOW_FUNC},
       #endif
      -#endif /* HAVE_OPENSSL */
         {"Syncs",                    (char*) &my_sync_count,          SHOW_LONG_NOFLUSH},
         /*
           Expression cache used only for caching subqueries now, so its statistic
      @@ -7353,10 +7357,16 @@
           have_profiling = SHOW_OPTION_NO;
       #endif
       
      +#if defined(HAVE_YASSL) && !defined(EMBEDDED_LIBRARY)
      +  have_yassl=SHOW_OPTION_YES;
      +#else
      +  have_yassl=SHOW_OPTION_NO;
      +#endif
      +
       #if defined(HAVE_OPENSSL) && !defined(EMBEDDED_LIBRARY)
         have_ssl=SHOW_OPTION_YES;
       #else
      -  have_ssl=SHOW_OPTION_NO;
      +  have_yassl= have_ssl=SHOW_OPTION_NO;
       #endif
       #ifdef HAVE_BROKEN_REALPATH
         have_symlink=SHOW_OPTION_NO;
       
      === modified file 'sql/set_var.h'
      --- sql/set_var.h	2012-10-16 11:04:42 +0000
      +++ sql/set_var.h	2012-12-10 10:27:22 +0000
      @@ -291,7 +291,7 @@
       extern SHOW_COMP_OPTION have_ndbcluster, have_partitioning;
       extern SHOW_COMP_OPTION have_profiling;
       
      -extern SHOW_COMP_OPTION have_ssl, have_symlink, have_dlopen;
      +extern SHOW_COMP_OPTION have_ssl, have_yassl, have_symlink, have_dlopen;
       extern SHOW_COMP_OPTION have_query_cache;
       extern SHOW_COMP_OPTION have_geometry, have_rtree_keys;
       extern SHOW_COMP_OPTION have_crypt;
       
      === modified file 'sql/sys_vars.cc'
      --- sql/sys_vars.cc	2012-10-18 21:33:06 +0000
      +++ sql/sys_vars.cc	2012-12-10 10:26:20 +0000
      @@ -3103,6 +3103,10 @@
              "have_openssl", "have_openssl",
              READ_ONLY GLOBAL_VAR(have_ssl), NO_CMD_LINE);
       
      +static Sys_var_have Sys_have_yassl(
      +       "have_yassl", "have_yassl",
      +       READ_ONLY GLOBAL_VAR(have_yassl), NO_CMD_LINE);
      +
       static Sys_var_have Sys_have_profiling(
              "have_profiling", "have_profiling",
              READ_ONLY GLOBAL_VAR(have_profiling), NO_CMD_LINE);

        Attachments

          Activity

            People

            • Assignee:
              serg Sergei Golubchik
              Reporter:
              georg Georg Richter
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: