@@ -10,7 +10,7 @@ import (
1010)
1111
1212func (c * Conn ) handleList (dec * imapwire.Decoder ) error {
13- ref , pattern , options , returnRecent , err := readListCmd (dec )
13+ ref , pattern , options , err := readListCmd (dec )
1414if err != nil {
1515return err
1616}
@@ -20,9 +20,8 @@ func (c *Conn) handleList(dec *imapwire.Decoder) error {
2020}
2121
2222w := & ListWriter {
23- conn : c ,
24- options : options ,
25- returnRecent : returnRecent ,
23+ conn : c ,
24+ options : options ,
2625}
2726return c .session .List (w , ref , pattern , options )
2827}
@@ -117,11 +116,11 @@ func (c *Conn) writeLSub(data *imap.ListData) error {
117116return enc .CRLF ()
118117}
119118
120- func readListCmd (dec * imapwire.Decoder ) (ref string , patterns []string , options * imap.ListOptions , returnRecent bool , err error ) {
119+ func readListCmd (dec * imapwire.Decoder ) (ref string , patterns []string , options * imap.ListOptions , err error ) {
121120options = & imap.ListOptions {}
122121
123122if ! dec .ExpectSP () {
124- return "" , nil , nil , false , dec .Err ()
123+ return "" , nil , nil , dec .Err ()
125124}
126125
127126hasSelectOpts , err := dec .List (func () error {
@@ -142,14 +141,14 @@ func readListCmd(dec *imapwire.Decoder) (ref string, patterns []string, options
142141return nil
143142})
144143if err != nil {
145- return "" , nil , nil , false , fmt .Errorf ("in list-select-opts: %w" , err )
144+ return "" , nil , nil , fmt .Errorf ("in list-select-opts: %w" , err )
146145}
147146if hasSelectOpts && ! dec .ExpectSP () {
148- return "" , nil , nil , false , dec .Err ()
147+ return "" , nil , nil , dec .Err ()
149148}
150149
151150if ! dec .ExpectMailbox (& ref ) || ! dec .ExpectSP () {
152- return "" , nil , nil , false , dec .Err ()
151+ return "" , nil , nil , dec .Err ()
153152}
154153
155154hasPatterns , err := dec .List (func () error {
@@ -160,13 +159,13 @@ func readListCmd(dec *imapwire.Decoder) (ref string, patterns []string, options
160159return err
161160})
162161if err != nil {
163- return "" , nil , nil , false , err
162+ return "" , nil , nil , err
164163} else if hasPatterns && len (patterns ) == 0 {
165- return "" , nil , nil , false , newClientBugError ("LIST-EXTENDED requires a non-empty parenthesized pattern list" )
164+ return "" , nil , nil , newClientBugError ("LIST-EXTENDED requires a non-empty parenthesized pattern list" )
166165} else if ! hasPatterns {
167166pattern , err := readListMailbox (dec )
168167if err != nil {
169- return "" , nil , nil , false , err
168+ return "" , nil , nil , err
170169}
171170if pattern != "" {
172171patterns = append (patterns , pattern )
@@ -176,26 +175,26 @@ func readListCmd(dec *imapwire.Decoder) (ref string, patterns []string, options
176175if dec .SP () { // list-return-opts
177176var atom string
178177if ! dec .ExpectAtom (& atom ) || ! dec .Expect (strings .EqualFold (atom , "RETURN" ), "RETURN" ) || ! dec .ExpectSP () {
179- return "" , nil , nil , false , dec .Err ()
178+ return "" , nil , nil , dec .Err ()
180179}
181180
182181err := dec .ExpectList (func () error {
183- return readReturnOption (dec , options , & returnRecent )
182+ return readReturnOption (dec , options )
184183})
185184if err != nil {
186- return "" , nil , nil , false , fmt .Errorf ("in list-return-opts: %w" , err )
185+ return "" , nil , nil , fmt .Errorf ("in list-return-opts: %w" , err )
187186}
188187}
189188
190189if ! dec .ExpectCRLF () {
191- return "" , nil , nil , false , dec .Err ()
190+ return "" , nil , nil , dec .Err ()
192191}
193192
194193if options .SelectRecursiveMatch && ! options .SelectSubscribed {
195- return "" , nil , nil , false , newClientBugError ("The LIST RECURSIVEMATCH select option requires SUBSCRIBED" )
194+ return "" , nil , nil , newClientBugError ("The LIST RECURSIVEMATCH select option requires SUBSCRIBED" )
196195}
197196
198- return ref , patterns , options , returnRecent , nil
197+ return ref , patterns , options , nil
199198}
200199
201200func readListMailbox (dec * imapwire.Decoder ) (string , error ) {
@@ -219,7 +218,7 @@ func isListChar(ch byte) bool {
219218}
220219}
221220
222- func readReturnOption (dec * imapwire.Decoder , options * imap.ListOptions , recent * bool ) error {
221+ func readReturnOption (dec * imapwire.Decoder , options * imap.ListOptions ) error {
223222var name string
224223if ! dec .ExpectAtom (& name ) {
225224return dec .Err ()
@@ -236,11 +235,7 @@ func readReturnOption(dec *imapwire.Decoder, options *imap.ListOptions, recent *
236235}
237236options .ReturnStatus = new (imap.StatusOptions )
238237return dec .ExpectList (func () error {
239- isRecent , err := readStatusItem (dec , options .ReturnStatus )
240- if isRecent {
241- * recent = true
242- }
243- return err
238+ return readStatusItem (dec , options .ReturnStatus )
244239})
245240default :
246241return newClientBugError ("Unknown LIST RETURN options" )
@@ -250,10 +245,9 @@ func readReturnOption(dec *imapwire.Decoder, options *imap.ListOptions, recent *
250245
251246// ListWriter writes LIST responses.
252247type ListWriter struct {
253- conn * Conn
254- options * imap.ListOptions
255- returnRecent bool
256- lsub bool
248+ conn * Conn
249+ options * imap.ListOptions
250+ lsub bool
257251}
258252
259253// WriteList writes a single LIST response for a mailbox.
@@ -266,7 +260,7 @@ func (w *ListWriter) WriteList(data *imap.ListData) error {
266260return err
267261}
268262if w .options .ReturnStatus != nil && data .Status != nil {
269- if err := w .conn .writeStatus (data .Status , w .options .ReturnStatus , w . returnRecent ); err != nil {
263+ if err := w .conn .writeStatus (data .Status , w .options .ReturnStatus ); err != nil {
270264return err
271265}
272266}
0 commit comments