Changeset 704 in code for trunk/downstream.go


Ignore:
Timestamp:
Nov 17, 2021, 1:54:03 PM (4 years ago)
Author:
contact
Message:

Add timeout for downstream connection registration

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/downstream.go

    r703 r704  
    615615}
    616616
    617 func (dc *downstreamConn) handleMessage(msg *irc.Message) error {
    618         ctx, cancel := dc.conn.NewContext(context.TODO())
     617func (dc *downstreamConn) handleMessage(ctx context.Context, msg *irc.Message) error {
     618        ctx, cancel := dc.conn.NewContext(ctx)
    619619        defer cancel()
    620620
     
    14021402
    14031403func (dc *downstreamConn) runUntilRegistered() error {
     1404        ctx, cancel := context.WithTimeout(context.TODO(), downstreamRegisterTimeout)
     1405        defer cancel()
     1406
     1407        // Close the connection with an error if the deadline is exceeded
     1408        go func() {
     1409                <-ctx.Done()
     1410                if err := ctx.Err(); err == context.DeadlineExceeded {
     1411                        dc.SendMessage(&irc.Message{
     1412                                Prefix:  dc.srv.prefix(),
     1413                                Command: "ERROR",
     1414                                Params:  []string{"Connection registration timed out"},
     1415                        })
     1416                        dc.Close()
     1417                }
     1418        }()
     1419
    14041420        for !dc.registered {
    14051421                msg, err := dc.ReadMessage()
     
    14081424                }
    14091425
    1410                 err = dc.handleMessage(msg)
     1426                err = dc.handleMessage(ctx, msg)
    14111427                if ircErr, ok := err.(ircError); ok {
    14121428                        ircErr.Message.Prefix = dc.srv.prefix()
Note: See TracChangeset for help on using the changeset viewer.