@@ -40,6 +40,8 @@ const char* SettingName(OptionsModel::OptionID option)
40
40
case OptionsModel::ThreadsScriptVerif: return " par" ;
41
41
case OptionsModel::SpendZeroConfChange: return " spendzeroconfchange" ;
42
42
case OptionsModel::ExternalSignerPath: return " signer" ;
43
+ case OptionsModel::MapPortUPnP: return " upnp" ;
44
+ case OptionsModel::MapPortNatpmp: return " natpmp" ;
43
45
default : throw std::logic_error (strprintf (" GUI option %i has no corresponding node setting." , option));
44
46
};
45
47
}
@@ -123,7 +125,8 @@ bool OptionsModel::Init(bilingual_str& error)
123
125
124
126
// These are shared with the core or have a command-line parameter
125
127
// and we want command-line parameters to overwrite the GUI settings.
126
- for (OptionID option : {DatabaseCache, ThreadsScriptVerif, SpendZeroConfChange, ExternalSignerPath}) {
128
+ for (OptionID option : {DatabaseCache, ThreadsScriptVerif, SpendZeroConfChange, ExternalSignerPath, MapPortUPnP,
129
+ MapPortNatpmp}) {
127
130
std::string setting = SettingName (option);
128
131
if (node ().isSettingIgnored (setting)) addOverriddenOption (" -" + setting);
129
132
try {
@@ -159,18 +162,6 @@ bool OptionsModel::Init(bilingual_str& error)
159
162
#endif
160
163
161
164
// Network
162
- if (!settings.contains (" fUseUPnP" ))
163
- settings.setValue (" fUseUPnP" , DEFAULT_UPNP);
164
- if (!gArgs .SoftSetBoolArg (" -upnp" , settings.value (" fUseUPnP" ).toBool ()))
165
- addOverriddenOption (" -upnp" );
166
-
167
- if (!settings.contains (" fUseNatpmp" )) {
168
- settings.setValue (" fUseNatpmp" , DEFAULT_NATPMP);
169
- }
170
- if (!gArgs .SoftSetBoolArg (" -natpmp" , settings.value (" fUseNatpmp" ).toBool ())) {
171
- addOverriddenOption (" -natpmp" );
172
- }
173
-
174
165
if (!settings.contains (" fListen" ))
175
166
settings.setValue (" fListen" , DEFAULT_LISTEN);
176
167
const bool listen{settings.value (" fListen" ).toBool ()};
@@ -384,13 +375,13 @@ QVariant OptionsModel::getOption(OptionID option) const
384
375
return fMinimizeToTray ;
385
376
case MapPortUPnP:
386
377
#ifdef USE_UPNP
387
- return settings. value ( " fUseUPnP " );
378
+ return SettingToBool ( setting (), DEFAULT_UPNP );
388
379
#else
389
380
return false ;
390
381
#endif // USE_UPNP
391
382
case MapPortNatpmp:
392
383
#ifdef USE_NATPMP
393
- return settings. value ( " fUseNatpmp " );
384
+ return SettingToBool ( setting (), DEFAULT_NATPMP );
394
385
#else
395
386
return false ;
396
387
#endif // USE_NATPMP
@@ -472,10 +463,16 @@ bool OptionsModel::setOption(OptionID option, const QVariant& value)
472
463
settings.setValue (" fMinimizeToTray" , fMinimizeToTray );
473
464
break ;
474
465
case MapPortUPnP: // core option - can be changed on-the-fly
475
- settings.setValue (" fUseUPnP" , value.toBool ());
466
+ if (changed ()) {
467
+ update (value.toBool ());
468
+ node ().mapPort (value.toBool (), getOption (MapPortNatpmp).toBool ());
469
+ }
476
470
break ;
477
471
case MapPortNatpmp: // core option - can be changed on-the-fly
478
- settings.setValue (" fUseNatpmp" , value.toBool ());
472
+ if (changed ()) {
473
+ update (value.toBool ());
474
+ node ().mapPort (getOption (MapPortUPnP).toBool (), value.toBool ());
475
+ }
479
476
break ;
480
477
case MinimizeOnClose:
481
478
fMinimizeOnClose = value.toBool ();
@@ -692,4 +689,6 @@ void OptionsModel::checkAndMigrate()
692
689
migrate_setting (SpendZeroConfChange, " bSpendZeroConfChange" );
693
690
migrate_setting (ExternalSignerPath, " external_signer_path" );
694
691
#endif
692
+ migrate_setting (MapPortUPnP, " fUseUPnP" );
693
+ migrate_setting (MapPortNatpmp, " fUseNatpmp" );
695
694
}
0 commit comments