passthrough upstream disconnections instead of intermediary-reconnecting
--HG-- branch : nmdc-ircfrontend
This commit is contained in:
parent
928a5c7324
commit
e2c2953fc5
29
COMPATIBILITY.txt
Normal file
29
COMPATIBILITY.txt
Normal file
@ -0,0 +1,29 @@
|
||||
|
||||
Everything works:
|
||||
Hexchat
|
||||
Mango IRC (ads)
|
||||
AndroIRC (ads)
|
||||
Mutter
|
||||
Weechat
|
||||
|
||||
Usable, with bugs:
|
||||
AndChat
|
||||
- duplicate usernames appearing. possibly an upstream bug https://github.com/znc/znc/issues/424
|
||||
Irssi
|
||||
- critical nicklist_set_host: assertion 'host != NULL' failed
|
||||
- still occurs even without blank nicks in room privmsgs
|
||||
|
||||
Unusable:
|
||||
Lite IRC (ads)
|
||||
- sends USER /then/ NICK instead of the other way around, handshake fails
|
||||
2016/05/07 22:57:04 <<< :nmdc-ircfrontend 375 :- Message of the day -
|
||||
2016/05/07 22:57:04 <<< :nmdc-ircfrontend 372 :- Connected to nmdc-ircfrontend. You /must/ join #chat to continue.
|
||||
2016/05/07 22:57:04 <<< :nmdc-ircfrontend 376 :- End of MOTD
|
||||
2016/05/07 22:57:04 >>> 'USER' [pineapple420 0 * :first last]
|
||||
2016/05/07 22:57:04 <<< :Your nickname is already being used KILL A
|
||||
2016/05/07 22:57:04 >>> 'NICK' [pineapple420]
|
||||
2016/05/07 22:57:04 Broken loop.
|
||||
Yaaic/Atomic
|
||||
- doesn't properly understand/parse the room join
|
||||
Atomic
|
||||
- crashes if a blank nick is used for room privmsgs (but PtokaX is fine)
|
44
TODO.txt
44
TODO.txt
@ -1,46 +1,7 @@
|
||||
|
||||
|
||||
COMPATIBILITY
|
||||
=============
|
||||
|
||||
Everything works:
|
||||
Hexchat
|
||||
Mango IRC (ads)
|
||||
AndroIRC (ads)
|
||||
Mutter
|
||||
Weechat
|
||||
|
||||
Usable, with bugs:
|
||||
AndChat
|
||||
- duplicate usernames appearing. possibly an upstream bug https://github.com/znc/znc/issues/424
|
||||
Irssi
|
||||
- critical nicklist_set_host: assertion 'host != NULL' failed
|
||||
- still occurs even without blank nicks in room privmsgs
|
||||
|
||||
Unusable:
|
||||
Lite IRC (ads)
|
||||
- sends USER /then/ NICK instead of the other way around, handshake fails
|
||||
2016/05/07 22:57:04 <<< :nmdc-ircfrontend 375 :- Message of the day -
|
||||
2016/05/07 22:57:04 <<< :nmdc-ircfrontend 372 :- Connected to nmdc-ircfrontend. You /must/ join #chat to continue.
|
||||
2016/05/07 22:57:04 <<< :nmdc-ircfrontend 376 :- End of MOTD
|
||||
2016/05/07 22:57:04 >>> 'USER' [pineapple420 0 * :first last]
|
||||
2016/05/07 22:57:04 <<< :Your nickname is already being used KILL A
|
||||
2016/05/07 22:57:04 >>> 'NICK' [pineapple420]
|
||||
2016/05/07 22:57:04 Broken loop.
|
||||
Yaaic/Atomic
|
||||
- doesn't properly understand/parse the room join
|
||||
Atomic
|
||||
- crashes if a blank nick is used for room privmsgs (but PtokaX is fine)
|
||||
|
||||
|
||||
|
||||
PRE-RELEASE
|
||||
===========
|
||||
|
||||
- part all nicks upon upstream server disconnection
|
||||
|
||||
- test the current password auth
|
||||
|
||||
- detect our own /me messages + don't echo back
|
||||
|
||||
- threadsafe access to libnmdc hub options
|
||||
@ -49,6 +10,9 @@ PRE-RELEASE
|
||||
|
||||
- expose upstream op status
|
||||
|
||||
- remove color code escape sequences
|
||||
|
||||
---- libnmdc no alert on bad nick
|
||||
|
||||
|
||||
WISHLIST
|
||||
@ -72,8 +36,6 @@ WISHLIST
|
||||
|
||||
- support SASL PLAIN authentication as well as just classic PASS
|
||||
|
||||
- remove color code escape sequences
|
||||
|
||||
- KILL messages not being exposed in client(?)
|
||||
2016/05/07 22:51:33 <<< :Your nickname is already being used KILL A
|
||||
|
||||
|
@ -64,6 +64,7 @@ func NewServer(name string, upstream libnmdc.HubAddress, conn net.Conn) *Server
|
||||
upstreamLauncher: libnmdc.HubConnectionOptions{
|
||||
Address: upstream,
|
||||
Self: *self,
|
||||
SkipAutoReconnect: true,
|
||||
},
|
||||
upstreamCloser: make(chan struct{}, 1),
|
||||
}
|
||||
@ -170,6 +171,10 @@ func (s *Server) upstreamWorker() {
|
||||
if hubEvent.StateChange == libnmdc.CONNECTIONSTATE_CONNECTED {
|
||||
s.sendNames() // delay doing this until now
|
||||
}
|
||||
if hubEvent.StateChange == libnmdc.CONNECTIONSTATE_DISCONNECTED {
|
||||
// Abandon thread. Don't try to autoreconnect at our level, the remote client can be responsible for that
|
||||
s.DisconnectClient()
|
||||
}
|
||||
|
||||
case libnmdc.EVENT_HUBNAME_CHANGED:
|
||||
s.sendChannelTopic(hubEvent.Nick)
|
||||
|
Loading…
Reference in New Issue
Block a user