Prioritize DISABLE_KEEPALIVE checkbox over the disable_keepalive bit of ExtraOptions.
authorHiroshi Inoue <h-inoue@dream.email.ne.jp>
Wed, 21 Apr 2021 06:39:41 +0000 (15:39 +0900)
committerHiroshi Inoue <h-inoue@dream.email.ne.jp>
Wed, 21 Apr 2021 23:14:28 +0000 (08:14 +0900)
dlg_specific.c
dlg_wingui.c

index 82a40b863b03904a5bea4d73a444a792f200b46b..6ac37f7785b217f2f8099eadc18e089f2d42a434 100644 (file)
@@ -71,9 +71,9 @@ UInt4 getExtraOptions(const ConnInfo *ci)
    return flag;
 }
 
-CSTR   hex_format = "%x";
-CSTR   dec_format = "%u";
-CSTR   octal_format = "%o";
+CSTR   hex_format = "%x%s";
+CSTR   dec_format = "%u%s";
+CSTR   octal_format = "%o%s";
 static UInt4   replaceExtraOptions(ConnInfo *ci, UInt4 flag, BOOL overwrite)
 {
    if (overwrite)
@@ -101,7 +101,7 @@ static UInt4    replaceExtraOptions(ConnInfo *ci, UInt4 flag, BOOL overwrite)
 }
 BOOL   setExtraOptions(ConnInfo *ci, const char *optstr, const char *format)
 {
-   UInt4   flag = 0;
+   UInt4   flag = 0, cnt;
 
    if (!format)
    {
@@ -126,7 +126,9 @@ BOOL    setExtraOptions(ConnInfo *ci, const char *optstr, const char *format)
            format = dec_format;
    }
 
-   if (sscanf(optstr, format, &flag) < 1)
+   if (cnt = sscanf(optstr, format, &flag), cnt < 1)
+       return FALSE;
+   else if (cnt > 1)
        return FALSE;
    replaceExtraOptions(ci, flag, TRUE);
    return TRUE;
index 471ccd0f9441374496b6d345e532de64a60129a4..6f2476ee844f5bca51500fff40384935577aa52e 100644 (file)
@@ -582,6 +582,7 @@ ds_options_update(HWND hdlg, ConnInfo *ci)
 
    /* TCP KEEPALIVE */
    ci->disable_keepalive = IsDlgButtonChecked(hdlg, DS_DISABLE_KEEPALIVE);
+   ci->extra_opts = getExtraOptions(ci);
    if (ci->disable_keepalive)
    {
        ci->keepalive_idle = -1;