sandtechnology
636584cdd1
ECDH: Replacing old curve, thanks to MiraiGo ( #1237 )
...
* ECDH: Replacing old curve, thanks to MiraiGo
* Move ecdhWithPublicKey to EcdhInitialPublicKeyUpdater
* Making ECDHInitialPublicKey internal
* Remove useless log
* Improve message
Co-authored-by: Him188 <Him188@mamoe.net>
Co-authored-by: Him188 <Him188@mamoe.net>
2021-06-23 14:59:12 +08:00
sandtechnology
ad7f95d0f0
Fix #1192 , request admin when loading groups ( #1257 )
...
* Fix #1192 , request admin when loading groups
* Improve message
Co-authored-by: Karlatemp <karlatemp@vip.qq.com>
Co-authored-by: Karlatemp <karlatemp@vip.qq.com>
2021-06-23 14:58:56 +08:00
Karlatemp
509be910c0
Avoid resource leak
2021-06-22 18:14:29 +08:00
Karlatemp
d1fdddf9e6
Break network when received LoginFailedException
; fix #1352
2021-06-22 13:37:54 +08:00
Him188
f2ca8e1eff
Revert "Fix kt compiler errors ( #1159 )"
...
This reverts commit b227f719
2021-06-19 23:58:27 +08:00
Him188
c37457cafb
Cleanup and move local serializable classes to top-level
2021-06-19 18:28:21 +08:00
Him188
813ef2b1e6
Remove redundant tests
2021-06-19 17:41:32 +08:00
Him188
b4b25be626
Simplify setState
2021-06-19 17:16:07 +08:00
Him188
f229757395
Redesign BotInitProcessor
to adjust force offline adjacently after login
2021-06-19 15:20:49 +08:00
Him188
3cc0973edd
Revert "Add PacketInterceptor
"
...
This reverts commit 04656d7a
2021-06-19 14:52:26 +08:00
Him188
d654e95f0f
Revert "Fix fast login"
...
This reverts commit 77e5e91f
2021-06-19 14:52:23 +08:00
Karlatemp
77e5e91fc4
Fix fast login
2021-06-19 02:30:06 +08:00
Karlatemp
04656d7a03
Add PacketInterceptor
2021-06-19 02:28:16 +08:00
Karlatemp
e816755414
Fix state switching when switching to CLOSED
2021-06-19 02:26:47 +08:00
Karlatemp
627e9baa6f
Fix NettyNetworkHandler
debug message
2021-06-19 02:25:38 +08:00
Karlatemp
8b5b76e32e
Run BaseStateImpl.setState
with lock
2021-06-19 02:24:59 +08:00
Him188
b33d1edf03
Add SingleEntrantLock
2021-06-19 00:29:54 +08:00
Him188
833c9d2c97
Do not turn state into Connecting in handlePipelineException
2021-06-19 00:06:14 +08:00
Him188
faed38da9e
Do not set state to CLOSED multiple times on close
2021-06-19 00:06:14 +08:00
Him188
99d232efe8
Remove redundant synchronization in NetworkHandlerSupport.setState
2021-06-19 00:05:50 +08:00
Him188
eba6706b47
Allow to change whether LoggingStateObserver is enabled in runtime
2021-06-19 00:04:39 +08:00
Him188
997c3ea2cf
Remove SsoProcessor.createObserverChain
2021-06-19 00:04:32 +08:00
Him188
b8b8cb1fad
Make LoggingStateObserver
into use
2021-06-19 00:04:24 +08:00
Him188
44bfe3dbb6
Make NetworkHandlerFactory
fun interface
2021-06-19 00:04:22 +08:00
Him188
c6d9825cf6
Add name to StateObverse
2021-06-19 00:04:20 +08:00
Him188
fbf7142eaf
Improve performance of StateObserver.chainOfNotNull
2021-06-19 00:04:10 +08:00
Him188
f1d58c4953
Fix CombinedStateObserver.beforeStateChanged
2021-06-19 00:04:05 +08:00
Him188
951f3b2bc4
Reduce CombinedStateObserver hierarchy: use List
2021-06-19 00:03:45 +08:00
sandtechnology
48f9ca0d48
Fix #1334 , update pb and fix private image upload issue ( #1335 )
...
* Fix #1334 , update pb and fix private image upload issue
* Keeping consistent in annotation
* Restore old comment
* Let extendinfo default to null
2021-06-19 00:00:16 +08:00
Him188
4d10338815
Do not add BotOfflineEventMonitor
in SetStateTest
2021-06-17 00:20:41 +08:00
Him188
5efced6167
Move RECONNECT_DELAY
to AbstractKeepAliveNetworkHandlerSelector
and set it to 0 in tests
2021-06-16 19:49:17 +08:00
Him188
cde13062d9
Ensure network closed on initialization failure
2021-06-16 19:42:58 +08:00
Him188
fc477e0122
Do not wrap exception into ISE on reaching max attempts
2021-06-16 17:26:57 +08:00
Him188
a38f24cbe5
Redesign connection maintenance mechanism:
...
Reconnection is directed by `BotOfflineEvent`.
### Event Broadcasting
- PacketFactory `MessageSvcPushForceOffline` closes network with `ForceOfflineException`.
- `network.close(cause)` pass the cause to state observer from `QQAndroidBot.stateObserverChain`, the observer broadcasts as follows:
- Nothing if `cause` is `ForceOfflineException` or `BotClosedByEvent`(which is broadcast by user)
- `BotOfflineEvent.Dropped` if cause is NetworkException and is recoverable(which is from Netty handlers)
- `BotOfflineEvent.Force` if cause is `ForceOfflineException` is from the factory mentioned above.
- `BotOfflineEvent.Active` otherwise(any other unexpected exceptions considered as an error)
### Deciding whether to reconnect
User can listen and change `BotOfflineEvent.reconnect` to decide. Default values are determined by `BotConfiguration`.
### Event listening
- Component `BotOfflineEventMonitor` listens `BotOfflineEvent`, logs the event for users, and launches a coroutine to do `network.resumeConnection` to notify the selector to renew an instance.
- `BotOnlineWatchdog` in `SelectorNetworkHandler` is removed.
- Selector now handles `maxAttempts` correctly in such a way that `awaitResumeInstance` does not throw exception until maximum attempts reached.
- On every attempt, new exceptions are logged to provide debugging information, and further duplications are ignored.
2021-06-16 16:58:20 +08:00
Him188
45ba713f73
Optimize HeartbeatFailedException.toString
: show information of its cause
2021-06-16 03:09:21 +08:00
Him188
ab7c49a0d5
Remove log in BotClientHolderImpl
2021-06-16 03:06:54 +08:00
Him188
b219ba986e
Review network ComponentStorage
framework and improve connection logics, support reconnection on force offline ( closes #1330 , close #1331 ), and on bad network.
...
- Remove `FactoryKeepAliveNetworkHandlerSelector` and add `KeepAliveNetworkHandlerSelector`;
- Review the storage of `QQAndroidBotClient`, extract it as a `BotClientHolder`;
- Introduce bot-level components that lasts with the lifecycle of `Bot`, and network-level components accordingly;
- Dynamically re-create the context given to `NetworkHandler` in selector, to use network-level components, including `BotClientHolder`, that allows a simple reinitialization of `BotClient`;
- Handles the situation when physical network broken on logging in, giving a hint to user and halts the log-in process and transfer the responsibility of reconnecting to selector;
- Send logout only in `Bot.close` (manual close).
2021-06-16 03:00:50 +08:00
Him188
e65593b2af
Add BeforeStateChangedObserver
2021-06-16 02:37:06 +08:00
Him188
23c1a67479
Add naming notes for StatSvc.Register
in logging
2021-06-16 02:29:05 +08:00
Him188
ad4f7a6232
Show OutgoingPacket.displayName
in logging
2021-06-16 02:28:51 +08:00
Him188
24ac4ffa95
Add ConcurrentComponentStorage
builder
2021-06-16 01:52:42 +08:00
Him188
e6119e6301
Throw NoSuchComponentException
with full details in CombinedComponentStorage.get
2021-06-16 01:52:27 +08:00
Him188
9933fab4c5
Add ComponentStorage?.withPrimary
2021-06-16 01:51:50 +08:00
Him188
f4ec905aff
Make CombinedStateObserver.toString
more readable
2021-06-16 01:51:26 +08:00
Him188
750ab0db37
Fix StackOverflowError
on calling bot.client
in tests with TestSsoProcessor
, fix #1332
2021-06-15 20:47:50 +08:00
Him188
bebb786b9a
Fix build
2021-06-13 11:10:12 +08:00
Him188
c9f98e46d7
Implement heartbeat periods and timeouts correctly, #1255
2021-06-13 10:59:11 +08:00
Him188
43b13d158f
Implement HeartbeatStrategy
, #1226
2021-06-13 10:50:55 +08:00
Karlatemp
e9d9d56489
Avoid network congestion
2021-06-11 21:19:35 +08:00
Karlatemp
05a8419fb7
Fix internal error in uploading private images; fix #1317
2021-06-10 22:49:24 +08:00
Him188
1e2ab736c2
Use bot.closeAndJoin()
in tests
2021-06-08 17:13:37 +08:00
Him188
81258488cb
Check isActive
in BotOnlineWatchdog
2021-06-08 17:13:25 +08:00
Him188
300882ea18
Redesign ComponentStorage
initialization for clearer tests
2021-06-08 17:13:15 +08:00
Him188
f9da72c136
Convert DEFAULT_BLACKLIST
to function and initialize the immutable set only once
2021-06-08 16:16:01 +08:00
Him188
65a3ffc147
Rename ComponentScope.plus
to .withFallback
2021-06-08 16:14:23 +08:00
Him188
c8def70594
Add bot.job
as parent of NetworkHandlerSupport
2021-06-08 16:14:23 +08:00
Him188
5f7f350eb5
Close PacketDecodePipeline.channel
on scope closure
2021-06-08 16:14:23 +08:00
Him188
038be54444
Remote pcap4j from jvmTest
2021-06-08 16:14:23 +08:00
Him188
19bc781854
Add kotlinx-coroutines-debug
to jvmTest
2021-06-08 16:14:23 +08:00
Him188
ad3bd4cc0d
Stop BotOnlineWatchdog if bot is closed
2021-06-08 12:19:05 +08:00
Him188
54a78313c8
Improve logging on exceptions and correctly handle CancellationException
when Bot.close
is invoked.
2021-06-08 12:18:40 +08:00
Him188
3e8fc8e1ec
Do not pass failed IncomingPacket
to PacketFactory
s
2021-06-08 12:16:26 +08:00
Him188
725b502d9e
Add notes for blacklist
2021-06-08 12:04:54 +08:00
Him188
a53f97cb6f
Add OnlinePush.ReqPush
to blacklist
2021-06-08 12:00:35 +08:00
Him188
56165c82aa
Fix ignored friend message event logging, fix #1312
2021-06-08 12:00:20 +08:00
Him188
091906577a
Add StatSvc.SimpleGet
to DEFAULT_BLACKLIST
2021-06-08 11:25:36 +08:00
Him188
8312a5bc98
Temporarily disable NettyHandlerEventTest
to make build success #1311
2021-06-07 22:03:12 +08:00
Him188
e0f9c311f2
Temporarily disable tests BotOffline from OK TO CLOSED
and BotOfflineEvent after successful reconnection
to make build success #1311
2021-06-07 22:00:22 +08:00
Him188
684b844b44
Move implementation of EventDispatcher.joinBroadcast
to tests and mark it @TestOnly
2021-06-07 18:46:40 +08:00
Him188
9619338d5b
Catch and forward event broadcasting to EventDispatcher
2021-06-07 18:18:07 +08:00
Him188
9cf45bd9ca
Ignore MessageSvc.PushNotify
in logging
2021-06-07 18:14:24 +08:00
Him188
271759b4c6
Fix ignorance of MultiPacket
using blacklist
2021-06-07 18:14:10 +08:00
Him188
84fb928764
Add check for arguments of NetworkHandlerSupport.sendAndExpect
2021-06-07 17:47:40 +08:00
Him188
5ebd65e78d
Change setStateImpl
in the ordering:
...
1. Update current state
2. Close old state
3. Notify observer
4. Notify selector
2021-06-07 17:05:34 +08:00
Him188
02c9fd2fb0
Add SetStateTest
2021-06-07 13:36:27 +08:00
Him188
02681428c9
Review and migrate deprecated calls
2021-06-07 12:57:01 +08:00
Him188
b5db147985
Remove debugConf
2021-06-07 12:57:00 +08:00
Him188
e9c53eb5db
Always close netty connection if StateLoading completed with an exception
2021-06-06 16:56:19 +08:00
Him188
91b5a5da58
Disable mirai.debug.network.state.observer.logging
in tests
2021-06-06 16:35:56 +08:00
Him188
679e61e4d0
Use collectThrow
instead of throw
in SsoProcessor.SlowLoginImpl.login
2021-06-06 16:34:35 +08:00
Him188
756c805460
Fix typo
2021-06-06 16:21:50 +08:00
Him188
e7521028d1
Fix tests
2021-06-06 13:58:46 +08:00
Him188
dadff42718
Unwrap NetworkException on logon failure
2021-06-06 13:58:46 +08:00
Him188
7739c4db80
Close network in MessageSvcPushForceOffline properly by throwing ServerClosedException
2021-06-06 13:58:46 +08:00
Him188
0d28772275
Do not listen BotOfflineEvent to close network
2021-06-06 13:58:45 +08:00
Him188
137e1a1235
Fix network scopes and exception handling. Support recovering after system hibernation and network failure.
2021-06-05 16:05:41 +08:00
Him188
e788aa09f7
Add awaitStateChange
2021-06-05 16:05:41 +08:00
Him188
c6075ec299
Refine state observer for events
2021-06-05 16:05:41 +08:00
Him188
061023bc4d
Rearrange NetworkHandlerSupport
2021-06-05 16:05:41 +08:00
Him188
8ae2e04f02
Improve implementation docs
2021-06-05 16:05:41 +08:00
Him188
083a3a1e00
Prefer value class
2021-06-05 16:05:41 +08:00
Him188
b7527a1b56
Extract HeartbeatScheduler and add HeartbeatFailedException and NetworkException
2021-06-05 16:05:41 +08:00
Him188
9f466c882e
Improve syncMessageSvc
:
...
- do not suspend logon and postpone suspension until sending message
- add MessageSvcSyncer
Fix #1253
2021-06-02 17:24:46 +08:00
Him188
4fd1b25838
Close network in-place in BotOfflineEventMonitorImpl.onEvent
on BotOfflineEvent.Active
2021-05-31 17:05:20 +08:00
Him188
0c0c9d5dc2
Replace stateChanged
with stateChannel
for better performance and easier testing;
...
Add tests for `sendPacketImpl`;
2021-05-31 15:58:44 +08:00
Him188
00e2d2b77f
Support refreshing instance in NetworkHandlerSelector
2021-05-31 15:03:12 +08:00
Him188
8c0f245da1
Simplify awaitState
2021-05-31 13:39:21 +08:00
Him188
db98862712
Initialize classes before tests
2021-05-31 13:38:21 +08:00
Him188
bdd390e774
Unify logging in ContactCacheService
2021-05-31 13:38:04 +08:00
Him188
9dfb46d704
Make tests faster
2021-05-31 01:46:02 +08:00