diff --git a/macosx/Controller.m b/macosx/Controller.m
index cc8f431d3..564de6ae5 100644
--- a/macosx/Controller.m
+++ b/macosx/Controller.m
@@ -319,6 +319,7 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
tr_bencDictAddInt(&settings, TR_PREFS_KEY_MSGLEVEL, TR_MSG_DBG);
tr_bencDictAddInt(&settings, TR_PREFS_KEY_PEER_LIMIT_GLOBAL, [fDefaults integerForKey: @"PeersTotal"]);
tr_bencDictAddInt(&settings, TR_PREFS_KEY_PEER_LIMIT_TORRENT, [fDefaults integerForKey: @"PeersTorrent"]);
+ tr_bencDictAddBool(&settings, TR_PREFS_KEY_UTP_ENABLED, [fDefaults boolForKey: @"UTPGlobal"]);
const BOOL randomPort = [fDefaults boolForKey: @"RandomPort"];
tr_bencDictAddBool(&settings, TR_PREFS_KEY_PEER_PORT_RANDOM_ON_START, randomPort);
diff --git a/macosx/Defaults.plist b/macosx/Defaults.plist
index c74170609..7951ea525 100644
--- a/macosx/Defaults.plist
+++ b/macosx/Defaults.plist
@@ -180,6 +180,8 @@
50
UseIncompleteDownloadFolder
+ UTPGlobal
+
WarningCreatorBlankAddress
WarningCreatorPrivateBlankAddress
diff --git a/macosx/PrefsController.h b/macosx/PrefsController.h
index 32638ac93..9dd944ae7 100644
--- a/macosx/PrefsController.h
+++ b/macosx/PrefsController.h
@@ -85,6 +85,7 @@
- (void) setPEX: (id) sender;
- (void) setDHT: (id) sender;
+- (void) setUTP: (id) sender;
- (void) setLPD: (id) sender;
- (void) setEncryptionMode: (id) sender;
diff --git a/macosx/PrefsController.m b/macosx/PrefsController.m
index 7b5280e90..a0c91b6f3 100644
--- a/macosx/PrefsController.m
+++ b/macosx/PrefsController.m
@@ -476,6 +476,11 @@ tr_session * fHandle;
tr_sessionSetDHTEnabled(fHandle, [fDefaults boolForKey: @"DHTGlobal"]);
}
+- (void) setUTP: (id) sender
+{
+ tr_sessionSetUTPEnabled(fHandle, [fDefaults boolForKey: @"UTPGlobal"]);
+}
+
- (void) setLPD: (id) sender
{
tr_sessionSetLPDEnabled(fHandle, [fDefaults boolForKey: @"LocalPeerDiscoveryGlobal"]);
@@ -1109,7 +1114,11 @@ tr_session * fHandle;
const BOOL dht = tr_sessionIsDHTEnabled(fHandle);
[fDefaults setBool: dht forKey: @"DHTGlobal"];
- //dht
+ //utp
+ const BOOL utp = tr_sessionIsUTPEnabled(fHandle);
+ [fDefaults setBool: utp forKey: @"UTPGlobal"];
+
+ //lpd
const BOOL lpd = tr_sessionIsLPDEnabled(fHandle);
[fDefaults setBool: lpd forKey: @"LocalPeerDiscoveryGlobal"];
@@ -1212,6 +1221,8 @@ tr_session * fHandle;
//dht handled by bindings
+ //utp handled by bindings
+
//lpd handled by bindings
[fPortField setIntValue: port];
diff --git a/macosx/en.lproj/PrefsWindow.xib b/macosx/en.lproj/PrefsWindow.xib
index 727f86b37..b3e7773d0 100644
--- a/macosx/en.lproj/PrefsWindow.xib
+++ b/macosx/en.lproj/PrefsWindow.xib
@@ -12,6 +12,7 @@