Wait 15 seconds before reconnecting if the connection closed before registration finished
This commit is contained in:
parent
9669092148
commit
fde6a9e630
@ -26,12 +26,13 @@ type Client struct {
|
||||
channels []string
|
||||
Support *iSupport
|
||||
|
||||
conn net.Conn
|
||||
connected bool
|
||||
dialer *net.Dialer
|
||||
reader *bufio.Reader
|
||||
backoff *backoff.Backoff
|
||||
out chan string
|
||||
conn net.Conn
|
||||
connected bool
|
||||
registered bool
|
||||
dialer *net.Dialer
|
||||
reader *bufio.Reader
|
||||
backoff *backoff.Backoff
|
||||
out chan string
|
||||
|
||||
quit chan struct{}
|
||||
reconnect chan struct{}
|
||||
@ -76,6 +77,19 @@ func (c *Client) Connected() bool {
|
||||
return connected
|
||||
}
|
||||
|
||||
func (c *Client) Registered() bool {
|
||||
c.lock.Lock()
|
||||
reg := c.registered
|
||||
c.lock.Unlock()
|
||||
return reg
|
||||
}
|
||||
|
||||
func (c *Client) setRegistered(reg bool) {
|
||||
c.lock.Lock()
|
||||
c.registered = reg
|
||||
c.lock.Unlock()
|
||||
}
|
||||
|
||||
func (c *Client) Nick(nick string) {
|
||||
c.Write("NICK " + nick)
|
||||
}
|
||||
|
@ -60,6 +60,7 @@ func (c *Client) run() {
|
||||
for {
|
||||
select {
|
||||
case <-c.quit:
|
||||
c.setRegistered(false)
|
||||
if c.Connected() {
|
||||
c.disconnect()
|
||||
}
|
||||
@ -69,6 +70,7 @@ func (c *Client) run() {
|
||||
return
|
||||
|
||||
case <-c.reconnect:
|
||||
c.setRegistered(false)
|
||||
if c.Connected() {
|
||||
c.disconnect()
|
||||
}
|
||||
@ -191,6 +193,11 @@ func (c *Client) recv() {
|
||||
|
||||
default:
|
||||
c.connChange(false, nil)
|
||||
|
||||
if !c.Registered() {
|
||||
time.Sleep(15 * time.Second)
|
||||
}
|
||||
|
||||
c.Reconnect()
|
||||
return
|
||||
}
|
||||
@ -219,6 +226,7 @@ func (c *Client) recv() {
|
||||
|
||||
case ReplyWelcome:
|
||||
c.setNick(msg.Params[0])
|
||||
c.setRegistered(true)
|
||||
c.sendRecv.Add(1)
|
||||
go c.send()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user