~keur

Berkeley

https://keur.rocks


#94 Add option for organizing messages into threads 1 year, 4 months ago

Comment by ~keur on ~sircmpwn/aerc2

You will still need some form of client side threading because not all IMAP servers support the extension. Notably Gmail has a nonstandard threading extension. Implementing REFERENCES client side and falling back on it if the thread extension is not supported ensures we support all servers. This is what mutt does (it doesn’t even utilize the extensions).

In v2 made the mistake of trying to do both server and client side threading in the same patch set. Instead I should’ve just cleaned up server side threading, got that reviewed and merged, then implemented client side threading.

On Feb 1, 2020, at 3:33 PM, ~flokli outgoing@sr.ht wrote:

I'd also be very interested in a threaded view. However, I don't think assembling threads should be done client-side.

IMAP seems to support threading, and backends like notmuch are also probably much faster when loading threads or displaying query results in threaded view.

-- View on the web: https://todo.sr.ht/~sircmpwn/aerc2/94#comment-5980

#327 Zombie child processes 1 year, 6 months ago

Comment by ~keur on ~sircmpwn/aerc2

No problem! :)

#269 EOF Error 1 year, 6 months ago

Comment by ~keur on ~sircmpwn/aerc2

Thanks foxcpp. There are two places where aerc gets the message length of the APPEND command.

If the user is using SMTP, aerc counts the amount of bytes sent over the socket exposed by go-smtp.

        wc, err := conn.Data()                                                 
        if err != nil {                                                        
            return 0, errors.Wrap(err, "conn.Data")                            
        }                                                                      
        defer wc.Close()                                                       
        ctr := datacounter.NewWriterCounter(wc)                                
        composer.WriteMessage(header, ctr)                                     
        return int(ctr.Count()), nil     

If the user is using the sendmail binary, aerc counts the number of bytes it sends to sendmail stdin.

        wc, err := cmd.StdinPipe()                                                
        if err != nil {                                                           
            return 0, errors.Wrap(err, "cmd.StdinPipe")                           
        }                                                                         
        defer wc.Close()                                                       
        go cmd.Run()                                                           
        ctr := datacounter.NewWriterCounter(wc)                                
        composer.WriteMessage(header, ctr)                                     
        return int(ctr.Count()), nil

When aerc writes to the pipe for go-imap, it writes the same exact data.


            worker := composer.Worker()                                        
            r, w := io.Pipe()                                                  
            
            ...
                                                            
            header, _, _ := composer.PrepareHeader()                           
            composer.WriteMessage(header, w)                                   
            w.Close()      

I don't see how these values differ between calls. Are people experiencing issues using SMTP or sendmail? I'm unable to repro with SMTP.

#327 Zombie child processes 1 year, 6 months ago

Comment by ~keur on ~sircmpwn/aerc2

Hi. Does this happen on current HEAD?

#94 Add option for organizing messages into threads 1 year, 8 months ago

Comment by ~keur on ~sircmpwn/aerc2

Just FYI, I have been working on this. Please ping me on IRC if you want to chat about it.