Changeset 205 in code for trunk


Ignore:
Timestamp:
Apr 1, 2020, 2:27:53 PM (5 years ago)
Author:
contact
Message:

Set write deadlines

References: https://todo.sr.ht/~emersion/soju/26

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/downstream.go

    r204 r205  
    245245
    246246func (dc *downstreamConn) writeMessages() error {
     247        // TODO: any SendMessage call after the connection is closed will
     248        // either block or drop
    247249        for {
    248250                var err error
     
    253255                                dc.logger.Printf("sent: %v", msg)
    254256                        }
     257                        dc.net.SetWriteDeadline(time.Now().Add(writeTimeout))
    255258                        err = dc.irc.WriteMessage(msg)
    256259                case <-dc.closed:
  • trunk/server.go

    r178 r205  
    1414var keepAlivePeriod = time.Minute
    1515var retryConnectMinDelay = time.Minute
     16var writeTimeout = 10 * time.Second
    1617
    1718func setKeepAlive(c net.Conn) error {
  • trunk/upstream.go

    r198 r205  
    112112
    113113        go func() {
     114                // TODO: any SendMessage call after the connection is closed will
     115                // either block or drop
    114116                for {
    115117                        var closed bool
     
    119121                                        uc.logger.Printf("sent: %v", msg)
    120122                                }
     123                                uc.net.SetWriteDeadline(time.Now().Add(writeTimeout))
    121124                                if err := uc.irc.WriteMessage(msg); err != nil {
    122125                                        uc.logger.Printf("failed to write message: %v", err)
     126                                        closed = true
    123127                                }
    124128                        case <-uc.closed:
Note: See TracChangeset for help on using the changeset viewer.