Commit Graph

4039 Commits

Author SHA1 Message Date
JustArchi
4b4f2626a8 Fix ASF crash on invalid IdentitySecret/SharedSecret 2017-02-09 13:23:54 +01:00
JustArchi
ec4439afb4 Make DismissInventoryNotifications false by default
The amount of people that have no clue what is happening is too damn high.
2017-02-09 13:16:30 +01:00
JustArchi
d7f2610313 Bump MinHeartBeatTTL from 5 to 10 2017-02-08 14:55:40 +01:00
JustArchi
1363b23008 Handle temporary fetching failures appropriately 2017-02-08 14:41:28 +01:00
JustArchi
c1a1cf15b0 Misc 2017-02-08 14:36:10 +01:00
JustArchi
89a36beeae Improve statistics reporting
Skip reporting when user has private or empty inventory
2017-02-08 14:35:01 +01:00
JustArchi
92b9aeae31 Fix Mono compilation 2017-02-07 21:09:08 +01:00
JustArchi
a8045ac50b Fix async/await with ConcurrentHashSet
Now this is a nice bug that was found accidentally by ArchiBoT...
ReaderWriterLockSlim() is very decent solution, but it's thread-based, and we're using our ConcurrentHashSet in mixed async/sync context. This means that if we use something like:
foreach (var item in concHashSet) {
    await AnythingAsync().ConfigureAwait(false);
}
It's totally possible that we'll request read lock as thread 1, and release the read lock as thread 2, which will lead to RWLock exception => System.Threading.SynchronizationLockException: The read lock is being released without being held.
Fortunately it looks like we didn't have any scenario like this in ASF, as this was possible only when we async/await while enumerating over ConcurrentHashSet, so that specific bug didn't affect ASF codebase (yet). Still, I must fix this as current implementation is not thread-safe, so our HashSet is in fact not concurrent in the first place.
I analyzed possible solutions and there are basically 3: either using ConcurrentDictionary and wrapping around it, replacing lock with SemaphoreSlim, or using third-party AsyncReaderWriterLock from StephenCleary. SemaphoreSlim entirely kills the concept of multiple readers one writer, and could affect performance negatively, moreover - it doesn't support upgreadable lock scenario we have with ReplaceIfNeededWith(). Concurrent dictionary would be nice if I didn't have that awful memory hit from storing mandatory pointless value, plus I don't really like concept of wrapping around conc dictionary if I can simply use it right away and drop my conc hashset entirely. AsyncReaderWriterLock seem to be really well written, and works on Mono + should be compatible with .NET core in the future, so we should go for it as it's the best bet both performance-wise and memory-wise.
This brings another package dependency and changes a bit backend of ConcurrentHashSet
2017-02-07 20:14:51 +01:00
JustArchi
f97379bf60 Misc 2017-02-07 17:35:52 +01:00
JustArchi
5197fffa3b Misc 2017-02-07 17:25:32 +01:00
JustArchi
872151d2f7 Misc 2017-02-07 13:09:41 +01:00
JustArchi
d495d649ba Make WCF accept commands starting with '!' as well 2017-02-07 10:49:58 +01:00
JustArchi
8cf368ff88 Misc 2017-02-06 15:50:22 +01:00
JustArchi
d04e17a046 Code cleanup 2017-02-06 15:46:42 +01:00
JustArchi
b4483057b9 Fix build 2017-02-05 14:35:55 +01:00
JustArchi
f72c51a2f8 Misc 2017-02-05 14:35:27 +01:00
JustArchi
c887dc102e Unify ASF/GUI startup 2017-02-05 14:32:38 +01:00
JustArchi
2af76f746d Closes #457 2017-02-05 13:52:00 +01:00
JustArchi
8fe30f7442 Bump 2017-02-05 09:08:59 +01:00
JustArchi
941e19ecc5 Apparently people do not understand this part clear enough 2.2.2.4 2017-02-05 09:05:50 +01:00
JustArchi
e7b6cc7801 Misc 2017-02-05 09:02:27 +01:00
JustArchi
3edc89c34e Bump 2017-02-05 08:12:41 +01:00
Łukasz Domeradzki
d1af9d0495 Merge pull request #455 from JustArchi/l10n
New Crowdin translations
2.2.2.3
2017-02-05 08:09:02 +01:00
JustArchi
ba3a792ca4 Misc 2017-02-05 08:06:38 +01:00
JustArchi
dba6fdfeeb TradingPreferences.DontAcceptBotTrades 2017-02-05 07:51:04 +01:00
Łukasz Domeradzki
5835bcbd54 New translations 2017-02-04 23:20:48 +01:00
Łukasz Domeradzki
1df0abb494 New translations 2017-02-04 23:10:53 +01:00
Łukasz Domeradzki
d6097106d8 New translations 2017-02-04 23:10:50 +01:00
Łukasz Domeradzki
db56078494 New translations 2017-02-04 23:00:50 +01:00
Łukasz Domeradzki
8d7098bf76 New translations 2017-02-04 16:00:52 +01:00
Łukasz Domeradzki
5a6edb4e25 New translations 2017-02-03 23:21:07 +01:00
Łukasz Domeradzki
089363af1b New translations 2017-02-03 23:11:11 +01:00
Łukasz Domeradzki
e0450452ab New translations 2017-02-03 20:12:14 +01:00
Łukasz Domeradzki
1dd1f81884 New translations 2017-02-03 18:23:48 +01:00
Łukasz Domeradzki
182975ce21 New translations 2017-02-03 17:53:11 +01:00
Łukasz Domeradzki
65a838c117 New translations 2017-02-03 17:42:58 +01:00
Łukasz Domeradzki
df8f5febd8 New translations 2017-02-03 17:31:41 +01:00
Łukasz Domeradzki
7e696125e8 New translations 2017-02-03 17:21:52 +01:00
Łukasz Domeradzki
3b5a9c6029 New translations 2017-02-03 17:21:49 +01:00
Łukasz Domeradzki
d4ebe33394 New translations 2017-02-03 17:13:13 +01:00
Łukasz Domeradzki
de0862c597 New translations 2017-02-03 17:06:54 +01:00
Łukasz Domeradzki
4252184f37 New translations 2017-02-03 16:44:14 +01:00
Łukasz Domeradzki
bd99f3fdc3 New translations 2017-02-03 16:34:29 +01:00
Łukasz Domeradzki
c8343993c7 New translations 2017-02-03 16:12:27 +01:00
Łukasz Domeradzki
a917d0133b New translations 2017-02-03 16:12:24 +01:00
Łukasz Domeradzki
05b4b9e907 New translations 2017-02-03 12:23:35 +01:00
Łukasz Domeradzki
10dd737e5c New translations 2017-02-03 12:23:31 +01:00
Łukasz Domeradzki
3b0ebf4126 New translations 2017-02-03 11:22:35 +01:00
JustArchi
1fb980f2bf Misc 2017-02-03 10:01:10 +01:00
JustArchi
8926297614 WCFProtocol -> WCFBinding
More appropriate
2017-02-03 09:59:02 +01:00