diff options
-rw-r--r-- | git_hooks_handle_linux.go | 2 | ||||
-rw-r--r-- | git_hooks_handle_other.go | 2 | ||||
-rw-r--r-- | irc.go | 21 | ||||
-rw-r--r-- | server.go | 3 |
4 files changed, 13 insertions, 15 deletions
diff --git a/git_hooks_handle_linux.go b/git_hooks_handle_linux.go index ca262e3..fde4c7e 100644 --- a/git_hooks_handle_linux.go +++ b/git_hooks_handle_linux.go @@ -251,7 +251,7 @@ func (s *server) hooksHandler(conn net.Conn) { fmt.Fprintln(sshStderr, ansiec.Blue+"Created merge request at", mergeRequestWebURL+ansiec.Reset) select { - case ircSendBuffered <- "PRIVMSG #chat :New merge request at " + mergeRequestWebURL: + case s.ircSendBuffered <- "PRIVMSG #chat :New merge request at " + mergeRequestWebURL: default: slog.Error("IRC SendQ exceeded") } diff --git a/git_hooks_handle_other.go b/git_hooks_handle_other.go index ed75e7a..8b99285 100644 --- a/git_hooks_handle_other.go +++ b/git_hooks_handle_other.go @@ -229,7 +229,7 @@ func (s *server) hooksHandler(conn net.Conn) { fmt.Fprintln(sshStderr, ansiec.Blue+"Created merge request at", mergeRequestWebURL+ansiec.Reset) select { - case ircSendBuffered <- "PRIVMSG #chat :New merge request at " + mergeRequestWebURL: + case s.ircSendBuffered <- "PRIVMSG #chat :New merge request at " + mergeRequestWebURL: default: slog.Error("IRC SendQ exceeded") } @@ -11,11 +11,6 @@ import ( irc "go.lindenii.runxiyu.org/lindenii-irc" ) -var ( - ircSendBuffered chan string - ircSendDirectChan chan errorBack[string] -) - type errorBack[T any] struct { content T errorBack chan error @@ -98,18 +93,18 @@ func (s *server) ircBotSession() error { select { case err = <-readLoopError: return err - case line := <-ircSendBuffered: + case line := <-s.ircSendBuffered: _, err = logAndWriteLn(line) if err != nil { select { - case ircSendBuffered <- line: + case s.ircSendBuffered <- line: default: slog.Error("unable to requeue message", "line", line) } writeLoopAbort <- struct{}{} return err } - case lineErrorBack := <-ircSendDirectChan: + case lineErrorBack := <-s.ircSendDirectChan: _, err = logAndWriteLn(lineErrorBack.content) lineErrorBack.errorBack <- err if err != nil { @@ -122,11 +117,11 @@ func (s *server) ircBotSession() error { // ircSendDirect sends an IRC message directly to the connection and bypasses // the buffering system. -func ircSendDirect(s string) error { +func (s *server) ircSendDirect(line string) error { ech := make(chan error, 1) - ircSendDirectChan <- errorBack[string]{ - content: s, + s.ircSendDirectChan <- errorBack[string]{ + content: line, errorBack: ech, } @@ -135,8 +130,8 @@ func ircSendDirect(s string) error { // TODO: Delay and warnings? func (s *server) ircBotLoop() { - ircSendBuffered = make(chan string, s.config.IRC.SendQ) - ircSendDirectChan = make(chan errorBack[string]) + s.ircSendBuffered = make(chan string, s.config.IRC.SendQ) + s.ircSendDirectChan = make(chan errorBack[string]) for { err := s.ircBotSession() @@ -16,4 +16,7 @@ type server struct { sourceHandler http.Handler staticHandler http.Handler + + ircSendBuffered chan string + ircSendDirectChan chan errorBack[string] } |