@@ -28,18 +28,18 @@ func (c *Conn) handleCapability(dec *imapwire.Decoder) error {
2828// Some extensions (e.g. SASL-IR, ENABLE) don't require backend support and
2929// thus are always enabled.
3030func (c * Conn ) availableCaps () []imap.Cap {
31- available := c .server .options .caps (). set ()
31+ available := c .server .options .caps ()
3232
3333 var caps []imap.Cap
34- addAvailableCaps (& caps , available , [] imap.Cap {
35- imap .CapIMAP4rev2 ,
36- imap .CapIMAP4rev1 ,
34+ addAvailableCaps (& caps , map [ imap.Cap ] bool {
35+ imap .CapIMAP4rev2 : available . IMAP4rev1 ,
36+ imap .CapIMAP4rev1 : available . IMAP4rev2 ,
3737 })
3838 if len (caps ) == 0 {
3939 panic ("imapserver: must support at least IMAP4rev1 or IMAP4rev2" )
4040 }
4141
42- if available .Has ( imap . CapIMAP4rev1 ) {
42+ if available .IMAP4rev1 {
4343 caps = append (caps , []imap.Cap {
4444 imap .CapSASLIR ,
4545 imap .CapLiteralMinus ,
@@ -60,7 +60,7 @@ func (c *Conn) availableCaps() []imap.Cap {
6060 caps = append (caps , imap .CapLoginDisabled )
6161 }
6262 if c .state == imap .ConnStateAuthenticated || c .state == imap .ConnStateSelected {
63- if available .Has ( imap . CapIMAP4rev1 ) {
63+ if available .IMAP4rev1 {
6464 // IMAP4rev1-specific capabilities that don't require backend
6565 // support and are not applicable to IMAP4rev2
6666 caps = append (caps , []imap.Cap {
@@ -72,42 +72,42 @@ func (c *Conn) availableCaps() []imap.Cap {
7272
7373 // IMAP4rev1-specific capabilities which require backend support
7474 // and are not applicable to IMAP4rev2
75- addAvailableCaps (& caps , available , [] imap.Cap {
76- imap .CapNamespace ,
77- imap .CapUIDPlus ,
78- imap .CapESearch ,
79- imap .CapSearchRes ,
80- imap .CapListExtended ,
81- imap .CapListStatus ,
82- imap .CapMove ,
83- imap .CapStatusSize ,
84- imap .CapBinary ,
85- imap .CapChildren ,
75+ addAvailableCaps (& caps , map [ imap.Cap ] bool {
76+ imap .CapNamespace : available . Namespace ,
77+ imap .CapUIDPlus : available . UIDPlus ,
78+ imap .CapESearch : available . ESearch ,
79+ // imap.CapSearchRes: available.SearchRes ,
80+ imap .CapListExtended : available . ListExtended ,
81+ imap .CapListStatus : available . ListStatus ,
82+ imap .CapMove : available . Move ,
83+ imap .CapStatusSize : available . StatusSize ,
84+ // imap.CapBinary: available.Binary ,
85+ // imap.CapChildren: available.Children ,
8686 })
8787 }
8888
8989 // Capabilities which require backend support and apply to both
9090 // IMAP4rev1 and IMAP4rev2
91- addAvailableCaps (& caps , available , [] imap.Cap {
92- imap .CapSpecialUse ,
93- imap .CapCreateSpecialUse ,
94- imap .CapLiteralPlus ,
95- imap .CapUnauthenticate ,
91+ addAvailableCaps (& caps , map [ imap.Cap ] bool {
92+ imap .CapSpecialUse : available . SpecialUse ,
93+ imap .CapCreateSpecialUse : available . CreateSpecialUse ,
94+ imap .CapLiteralPlus : available . LiteralPlus ,
95+ imap .CapUnauthenticate : available . Unauthenticate ,
9696 })
9797
9898 if appendLimitSession , ok := c .session .(SessionAppendLimit ); ok {
9999 limit := appendLimitSession .AppendLimit ()
100100 caps = append (caps , imap .Cap (fmt .Sprintf ("APPENDLIMIT=%d" , limit )))
101101 } else {
102- addAvailableCaps (& caps , available , [] imap.Cap {imap .CapAppendLimit })
102+ addAvailableCaps (& caps , map [ imap.Cap ] bool {imap .CapAppendLimit : available . AppendLimit })
103103 }
104104 }
105105 return caps
106106}
107107
108- func addAvailableCaps (caps * []imap.Cap , available imap. CapSet , l [] imap.Cap ) {
109- for _ , c := range l {
110- if available . Has ( c ) {
108+ func addAvailableCaps (caps * []imap.Cap , available map [ imap.Cap ] bool ) {
109+ for c , ok := range available {
110+ if ok {
111111 * caps = append (* caps , c )
112112 }
113113 }
0 commit comments