Changeset: 68e522997644 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/68e522997644
Modified Files:
        clients/odbc/driver/SQLDriverConnect.c
Branch: odbc-tls
Log Message:

Merge upstream changes


diffs (truncated from 456 to 300 lines):

diff --git a/clients/odbc/driver/SQLDriverConnect.c 
b/clients/odbc/driver/SQLDriverConnect.c
--- a/clients/odbc/driver/SQLDriverConnect.c
+++ b/clients/odbc/driver/SQLDriverConnect.c
@@ -484,7 +484,7 @@ SQLDriverConnectW(SQLHDBC ConnectionHand
                   addDbcError, dbc, return SQL_ERROR);
 
        rc = MNDBDriverConnect(dbc, WindowHandle, in, SQL_NTS, NULL, 0, &n,
-                              DriverCompletion, 1);
+                              DriverCompletion, 1);  // Try Only
        if (!SQL_SUCCEEDED(rc))
                return rc;
        clearDbcErrors(dbc);
diff --git a/clients/odbc/winsetup/resource.h b/clients/odbc/winsetup/resource.h
--- a/clients/odbc/winsetup/resource.h
+++ b/clients/odbc/winsetup/resource.h
@@ -29,7 +29,7 @@
 #define IDC_EDIT_SCHEMA                 2013
 #define IDC_EDIT_TIMEZONE               2014
 // Secure connections using TLS
-#define IDC_EDIT_TLS                    2021
+#define IDC_EDIT_USETLS                 2021
 #define IDC_EDIT_SERVERCERT             2022
 #define IDC_EDIT_SERVERCERTHASH         2023
 #define IDC_EDIT_CLIENTKEY              2024
diff --git a/clients/odbc/winsetup/setup.c b/clients/odbc/winsetup/setup.c
--- a/clients/odbc/winsetup/setup.c
+++ b/clients/odbc/winsetup/setup.c
@@ -77,13 +77,11 @@ ConfigDriver(HWND hwnd, WORD request, LP
        case ODBC_CONFIG_DRIVER:
                break;
        default:
-               SQLPostInstallerError(ODBC_ERROR_INVALID_REQUEST_TYPE,
-                                     "Invalid request");
+               SQLPostInstallerError(ODBC_ERROR_INVALID_REQUEST_TYPE, "Invalid 
request");
                return FALSE;
        }
        if (strcmp(driver, DriverName) != 0) {
-               SQLPostInstallerError(ODBC_ERROR_INVALID_NAME,
-                                     "Invalid driver name");
+               SQLPostInstallerError(ODBC_ERROR_INVALID_NAME, "Invalid driver 
name");
                return FALSE;
        }
        return TRUE;
@@ -97,16 +95,17 @@ struct data {
        char *port;
        char *database;
        char *schema;
-       bool autocommit;
-       long replysize;
-       long timezone;
+       char *autocommit;
+       char *replysize;
+       char *timezone;
        char *logfile;
        // TLS settings
-       bool use_tls;
+       char *use_tls;
        char *servercert;
        char *servercerthash;
        char *clientkey;
        char *clientcert;
+
        HWND parent;
        WORD request;
 };
@@ -155,7 +154,16 @@ DialogProc(HWND hwndDlg, UINT uMsg, WPAR
                SetDlgItemText(hwndDlg, IDC_EDIT_HOST, datap->host ? 
datap->host : "");
                SetDlgItemText(hwndDlg, IDC_EDIT_PORT, datap->port ? 
datap->port : "");
                SetDlgItemText(hwndDlg, IDC_EDIT_DATABASE, datap->database ? 
datap->database : "");
+               SetDlgItemText(hwndDlg, IDC_EDIT_SCHEMA, datap->schema ? 
datap->schema : "");
+               SetDlgItemText(hwndDlg, IDC_EDIT_AUTOCOMMIT, datap->autocommit 
? datap->autocommit : "on");
+               SetDlgItemText(hwndDlg, IDC_EDIT_REPLYSIZE, datap->replysize ? 
datap->replysize : "");
+               SetDlgItemText(hwndDlg, IDC_EDIT_TIMEZONE, datap->timezone ? 
datap->timezone : "");
                SetDlgItemText(hwndDlg, IDC_EDIT_LOGFILE, datap->logfile ? 
datap->logfile : "");
+               SetDlgItemText(hwndDlg, IDC_EDIT_USETLS, datap->use_tls ? 
datap->use_tls : "off");
+               SetDlgItemText(hwndDlg, IDC_EDIT_SERVERCERT, datap->servercert 
? datap->servercert : "");
+               SetDlgItemText(hwndDlg, IDC_EDIT_SERVERCERTHASH, 
datap->servercerthash ? datap->servercerthash : "");
+               SetDlgItemText(hwndDlg, IDC_EDIT_CLIENTKEY, datap->clientkey ? 
datap->clientkey : "");
+               SetDlgItemText(hwndDlg, IDC_EDIT_CLIENTCERT, datap->clientcert 
? datap->clientcert : "");
                if (datap->request == ODBC_ADD_DSN && datap->dsn && *datap->dsn)
                        EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT_DSN), FALSE);
                return TRUE;
@@ -167,10 +175,7 @@ DialogProc(HWND hwndDlg, UINT uMsg, WPAR
                        if (datap->request != ODBC_ADD_DSN || datap->dsn == 
NULL || *datap->dsn == 0) {
                                GetDlgItemText(hwndDlg, IDC_EDIT_DSN, buf, 
sizeof(buf));
                                if (!SQLValidDSN(buf)) {
-                                       MessageBox(hwndDlg,
-                                                  "Invalid Datasource Name",
-                                                  NULL,
-                                                  MB_ICONERROR);
+                                       MessageBox(hwndDlg, "Invalid Datasource 
Name", NULL, MB_ICONERROR);
                                        return TRUE;
                                }
                                if (datap->dsn)
@@ -197,10 +202,46 @@ DialogProc(HWND hwndDlg, UINT uMsg, WPAR
                        if (datap->database)
                                free(datap->database);
                        datap->database = strdup(buf);
+                       GetDlgItemText(hwndDlg, IDC_EDIT_SCHEMA, buf, 
sizeof(buf));
+                       if (datap->schema)
+                               free(datap->schema);
+                       datap->schema = strdup(buf);
+                       GetDlgItemText(hwndDlg, IDC_EDIT_AUTOCOMMIT, buf, 
sizeof(buf));
+                       if (datap->autocommit)
+                               free(datap->autocommit);
+                       datap->autocommit = strdup(buf);
+                       GetDlgItemText(hwndDlg, IDC_EDIT_REPLYSIZE, buf, 
sizeof(buf));
+                       if (datap->replysize)
+                               free(datap->replysize);
+                       datap->replysize = strdup(buf);
+                       GetDlgItemText(hwndDlg, IDC_EDIT_TIMEZONE, buf, 
sizeof(buf));
+                       if (datap->timezone)
+                               free(datap->timezone);
+                       datap->timezone = strdup(buf);
                        GetDlgItemText(hwndDlg, IDC_EDIT_LOGFILE, buf, 
sizeof(buf));
                        if (datap->logfile)
                                free(datap->logfile);
                        datap->logfile = strdup(buf);
+                       GetDlgItemText(hwndDlg, IDC_EDIT_USETLS, buf, 
sizeof(buf));
+                       if (datap->use_tls)
+                               free(datap->use_tls);
+                       datap->use_tls = strdup(buf);
+                       GetDlgItemText(hwndDlg, IDC_EDIT_SERVERCERT, buf, 
sizeof(buf));
+                       if (datap->servercert)
+                               free(datap->servercert);
+                       datap->servercert = strdup(buf);
+                       GetDlgItemText(hwndDlg, IDC_EDIT_SERVERCERTHASH, buf, 
sizeof(buf));
+                       if (datap->servercerthash)
+                               free(datap->servercerthash);
+                       datap->servercerthash = strdup(buf);
+                       GetDlgItemText(hwndDlg, IDC_EDIT_CLIENTKEY, buf, 
sizeof(buf));
+                       if (datap->clientkey)
+                               free(datap->clientkey);
+                       datap->clientkey = strdup(buf);
+                       GetDlgItemText(hwndDlg, IDC_EDIT_CLIENTCERT, buf, 
sizeof(buf));
+                       if (datap->clientcert)
+                               free(datap->clientcert);
+                       datap->clientcert = strdup(buf);
                        /* fall through */
                case IDCANCEL:
                        EndDialog(hwndDlg, LOWORD(wParam));
@@ -223,8 +264,7 @@ ConfigDSN(HWND parent, WORD request, LPC
        ODBCLOG("ConfigDSN %d %s %s 0x%" PRIxPTR "\n", request, driver ? driver 
: "(null)", attributes ? attributes : "(null)", (uintptr_t) &data);
 
        if (strcmp(driver, DriverName) != 0) {
-               SQLPostInstallerError(ODBC_ERROR_INVALID_NAME,
-                                     "Invalid driver name");
+               SQLPostInstallerError(ODBC_ERROR_INVALID_NAME, "Invalid driver 
name");
                return FALSE;
        }
        switch (request) {
@@ -233,8 +273,7 @@ ConfigDSN(HWND parent, WORD request, LPC
        case ODBC_REMOVE_DSN:
                break;
        default:
-               SQLPostInstallerError(ODBC_ERROR_INVALID_REQUEST_TYPE,
-                                     "Invalid request");
+               SQLPostInstallerError(ODBC_ERROR_INVALID_REQUEST_TYPE, "Invalid 
request");
                return FALSE;
        }
 
@@ -246,12 +285,12 @@ ConfigDSN(HWND parent, WORD request, LPC
        data.database = NULL;
        data.logfile = NULL;
        data.schema = NULL;
-       data.autocommit = true;
-//     data.replysize = 1000;
-//     data.timezone;
+       data.autocommit = NULL;
+       data.replysize = NULL;
+       data.timezone = NULL;
        data.logfile = NULL;
        // TLS settings
-       data.use_tls = false;
+       data.use_tls = NULL;
        data.servercert = NULL;
        data.servercerthash = NULL;
        data.clientkey = NULL;
@@ -264,8 +303,7 @@ ConfigDSN(HWND parent, WORD request, LPC
                char *value = strchr(attributes, '=');
 
                if (value == NULL) {
-                       SQLPostInstallerError(ODBC_ERROR_INVALID_KEYWORD_VALUE,
-                                             "Invalid attributes string");
+                       SQLPostInstallerError(ODBC_ERROR_INVALID_KEYWORD_VALUE, 
"Invalid attributes string");
                        return FALSE;
                }
                value++;
@@ -282,15 +320,32 @@ ConfigDSN(HWND parent, WORD request, LPC
                        data.port = strdup(value);
                else if (strncasecmp("database=", attributes, value - 
attributes) == 0)
                        data.database = strdup(value);
+               else if (strncasecmp("schema=", attributes, value - attributes) 
== 0)
+                       data.schema = strdup(value);
+               else if (strncasecmp("autocommit=", attributes, value - 
attributes) == 0)
+                       data.autocommit = strdup(value);
+               else if (strncasecmp("replysize=", attributes, value - 
attributes) == 0)
+                       data.replysize = strdup(value);
+               else if (strncasecmp("timezone=", attributes, value - 
attributes) == 0)
+                       data.timezone = strdup(value);
                else if (strncasecmp("logfile=", attributes, value - 
attributes) == 0)
                        data.logfile = strdup(value);
+               else if (strncasecmp("tls=", attributes, value - attributes) == 
0)
+                       data.use_tls = strdup(value);
+               else if (strncasecmp("cert=", attributes, value - attributes) 
== 0)
+                       data.servercert = strdup(value);
+               else if (strncasecmp("certhash=", attributes, value - 
attributes) == 0)
+                       data.servercerthash = strdup(value);
+               else if (strncasecmp("clientkey=", attributes, value - 
attributes) == 0)
+                       data.clientkey = strdup(value);
+               else if (strncasecmp("clientcert=", attributes, value - 
attributes) == 0)
+                       data.clientcert = strdup(value);
                attributes = value + strlen(value) + 1;
        }
 
        if (request == ODBC_REMOVE_DSN) {
                if (data.dsn == NULL) {
-                       SQLPostInstallerError(ODBC_ERROR_INVALID_KEYWORD_VALUE,
-                                             "No DSN specified");
+                       SQLPostInstallerError(ODBC_ERROR_INVALID_KEYWORD_VALUE, 
"No DSN specified");
                        return FALSE;
                }
                rc = SQLRemoveDSNFromIni(data.dsn);
@@ -303,16 +358,34 @@ ConfigDSN(HWND parent, WORD request, LPC
        MergeFromProfileString(data.dsn, &data.host, "host", "localhost");
        MergeFromProfileString(data.dsn, &data.port, "port", MAPI_PORT_STR);
        MergeFromProfileString(data.dsn, &data.database, "database", "");
+       MergeFromProfileString(data.dsn, &data.schema, "schema", "");
+       MergeFromProfileString(data.dsn, &data.autocommit, "autocommit", "on");
+       MergeFromProfileString(data.dsn, &data.replysize, "replysize", "");
+       MergeFromProfileString(data.dsn, &data.timezone, "timezone", "");
        MergeFromProfileString(data.dsn, &data.logfile, "logfile", "");
+       MergeFromProfileString(data.dsn, &data.use_tls, "tls", "off");
+       MergeFromProfileString(data.dsn, &data.servercert, "cert", "");
+       MergeFromProfileString(data.dsn, &data.servercerthash, "certhash", "");
+       MergeFromProfileString(data.dsn, &data.clientkey, "clientkey", "");
+       MergeFromProfileString(data.dsn, &data.clientcert, "clientcert", "");
 
-       ODBCLOG("ConfigDSN values: dsn=%s uid=%s pwd=%s host=%s port=%s 
database=%s logfile=%s\n",
+       ODBCLOG("ConfigDSN values: dsn=%s uid=%s pwd=%s host=%s port=%s 
database=%s schema=%s autocommit=%s replysize=%s timezone=%s logfile=%s tls=%s 
cert=%s certhash=%s clientkey=%s clientcert=%s\n",
                data.dsn ? data.dsn : "(null)",
                data.uid ? data.uid : "(null)",
                data.pwd ? data.pwd : "(null)",
                data.host ? data.host : "(null)",
                data.port ? data.port : "(null)",
                data.database ? data.database : "(null)",
-               data.logfile ? data.logfile : "(null)");
+               data.schema ? data.schema : "(null)",
+               data.autocommit ? data.autocommit : "(null)",
+               data.replysize ? data.replysize : "(null)",
+               data.timezone ? data.timezone : "(null)",
+               data.logfile ? data.logfile : "(null)",
+               data.use_tls ? data.use_tls : "(null)",
+               data.servercert ? data.servercert : "(null)",
+               data.servercerthash ? data.servercerthash : "(null)",
+               data.clientkey ? data.clientkey : "(null)",
+               data.clientcert ? data.clientcert : "(null)");
 
        /* we're optimistic: default return value */
        rc = TRUE;
@@ -327,8 +400,7 @@ ConfigDSN(HWND parent, WORD request, LPC
                        break;
                default:
                        rc = FALSE;
-                       SQLPostInstallerError(ODBC_ERROR_REQUEST_FAILED,
-                                             "Error creating configuration 
dialog");
+                       SQLPostInstallerError(ODBC_ERROR_REQUEST_FAILED, "Error 
creating configuration dialog");
                        /* fall through */
                case IDCANCEL:
                        goto finish;
@@ -339,12 +411,8 @@ ConfigDSN(HWND parent, WORD request, LPC
                if (!SQLValidDSN(data.dsn)) {
                        rc = FALSE;
                        if (parent)
-                               MessageBox(parent,
-                                          "Invalid Datasource Name",
-                                          NULL,
-                                          MB_ICONERROR);
-                       SQLPostInstallerError(ODBC_ERROR_INVALID_NAME,
-                                             "Invalid driver name");
+                               MessageBox(parent, "Invalid Datasource Name", 
NULL, MB_ICONERROR);
+                       SQLPostInstallerError(ODBC_ERROR_INVALID_NAME, "Invalid 
driver name");
                        goto finish;
                }
                if (dsn == NULL || strcmp(dsn, data.dsn) != 0) {
@@ -355,21 +423,14 @@ ConfigDSN(HWND parent, WORD request, LPC
                        if (drv && *drv) {
                                free(drv);
                                if (parent &&
-                                   MessageBox(parent,
-                                              "Replace existing Datasource 
Name?",
-                                              NULL,
-                                              MB_OKCANCEL | MB_ICONQUESTION) 
!= IDOK) {
+                                   MessageBox(parent, "Replace existing 
Datasource Name?", NULL, MB_OKCANCEL | MB_ICONQUESTION) != IDOK) {
                                        goto finish;
                                }
                                ODBCLOG("ConfigDSN removing dsn %s\n", 
data.dsn);
                                if (!SQLRemoveDSNFromIni(data.dsn)) {
                                        rc = FALSE;
-                                       MessageBox(parent,
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to