| 4130 | } |
| 4131 | |
| 4132 | IndexSet * IMAPSession::capability(ErrorCode * pError) |
| 4133 | { |
| 4134 | int r; |
| 4135 | struct mailimap_capability_data * cap; |
| 4136 | |
| 4137 | connectIfNeeded(pError); |
| 4138 | if (* pError != ErrorNone) |
| 4139 | return NULL; |
| 4140 | |
| 4141 | r = mailimap_capability(mImap, &cap); |
| 4142 | if (r == MAILIMAP_ERROR_STREAM) { |
| 4143 | mShouldDisconnect = true; |
| 4144 | * pError = ErrorConnection; |
| 4145 | return NULL; |
| 4146 | } |
| 4147 | else if (r == MAILIMAP_ERROR_PARSE) { |
| 4148 | mShouldDisconnect = true; |
| 4149 | * pError = ErrorParse; |
| 4150 | return NULL; |
| 4151 | } |
| 4152 | else if (hasError(r)) { |
| 4153 | * pError = ErrorCapability; |
| 4154 | return NULL; |
| 4155 | } |
| 4156 | |
| 4157 | mailimap_capability_data_free(cap); |
| 4158 | |
| 4159 | IndexSet * result = new IndexSet(); |
| 4160 | capabilitySetWithSessionState(result); |
| 4161 | |
| 4162 | * pError = ErrorNone; |
| 4163 | result->autorelease(); |
| 4164 | return result; |
| 4165 | } |
| 4166 | |
| 4167 | void IMAPSession::capabilitySetWithSessionState(IndexSet * capabilities) |
| 4168 | { |