Diffstat (limited to 'libetpan/src/driver/implementation') (more/less context) (ignore whitespace changes)
-rw-r--r-- | libetpan/src/driver/implementation/pop3/pop3driver.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/libetpan/src/driver/implementation/pop3/pop3driver.c b/libetpan/src/driver/implementation/pop3/pop3driver.c index ea69923..6cc6a9a 100644 --- a/libetpan/src/driver/implementation/pop3/pop3driver.c +++ b/libetpan/src/driver/implementation/pop3/pop3driver.c | |||
@@ -204,119 +204,125 @@ static int pop3driver_starttls(mailsession * session) | |||
204 | 204 | ||
205 | switch (r) { | 205 | switch (r) { |
206 | case MAILPOP3_NO_ERROR: | 206 | case MAILPOP3_NO_ERROR: |
207 | break; | 207 | break; |
208 | default: | 208 | default: |
209 | return pop3driver_pop3_error_to_mail_error(r); | 209 | return pop3driver_pop3_error_to_mail_error(r); |
210 | } | 210 | } |
211 | 211 | ||
212 | low = mailstream_get_low(pop3->pop3_stream); | 212 | low = mailstream_get_low(pop3->pop3_stream); |
213 | fd = mailstream_low_get_fd(low); | 213 | fd = mailstream_low_get_fd(low); |
214 | if (fd == -1) | 214 | if (fd == -1) |
215 | return MAIL_ERROR_STREAM; | 215 | return MAIL_ERROR_STREAM; |
216 | 216 | ||
217 | new_low = mailstream_low_ssl_open(fd); | 217 | new_low = mailstream_low_ssl_open(fd); |
218 | if (new_low == NULL) | 218 | if (new_low == NULL) |
219 | return MAIL_ERROR_STREAM; | 219 | return MAIL_ERROR_STREAM; |
220 | mailstream_low_free(low); | 220 | mailstream_low_free(low); |
221 | mailstream_set_low(pop3->pop3_stream, new_low); | 221 | mailstream_set_low(pop3->pop3_stream, new_low); |
222 | 222 | ||
223 | return MAIL_NO_ERROR; | 223 | return MAIL_NO_ERROR; |
224 | } | 224 | } |
225 | 225 | ||
226 | static int pop3driver_parameters(mailsession * session, | 226 | static int pop3driver_parameters(mailsession * session, |
227 | int id, void * value) | 227 | int id, void * value) |
228 | { | 228 | { |
229 | struct pop3_session_state_data * data; | 229 | struct pop3_session_state_data * data; |
230 | 230 | ||
231 | data = get_data(session); | 231 | data = get_data(session); |
232 | 232 | ||
233 | switch (id) { | 233 | switch (id) { |
234 | case POP3DRIVER_SET_AUTH_TYPE: | 234 | case POP3DRIVER_SET_AUTH_TYPE: |
235 | { | 235 | { |
236 | int * param; | 236 | int * param; |
237 | 237 | ||
238 | param = value; | 238 | param = value; |
239 | 239 | ||
240 | data->pop3_auth_type = * param; | 240 | data->pop3_auth_type = * param; |
241 | return MAIL_NO_ERROR; | 241 | return MAIL_NO_ERROR; |
242 | } | 242 | } |
243 | } | 243 | } |
244 | 244 | ||
245 | return MAIL_ERROR_INVAL; | 245 | return MAIL_ERROR_INVAL; |
246 | } | 246 | } |
247 | 247 | ||
248 | static int pop3driver_login(mailsession * session, | 248 | static int pop3driver_login(mailsession * session, |
249 | char * userid, char * password) | 249 | char * userid, char * password) |
250 | { | 250 | { |
251 | int r; | 251 | int r; |
252 | //LR | ||
253 | int ret; | ||
252 | carray * msg_tab; | 254 | carray * msg_tab; |
253 | struct pop3_session_state_data * data; | 255 | struct pop3_session_state_data * data; |
254 | 256 | ||
255 | data = get_data(session); | 257 | data = get_data(session); |
256 | 258 | ||
257 | switch (data->pop3_auth_type) { | 259 | switch (data->pop3_auth_type) { |
258 | case POP3DRIVER_AUTH_TYPE_TRY_APOP: | 260 | case POP3DRIVER_AUTH_TYPE_TRY_APOP: |
259 | r = mailpop3_login_apop(get_pop3_session(session), userid, password); | 261 | r = mailpop3_login_apop(get_pop3_session(session), userid, password); |
260 | if (r != MAILPOP3_NO_ERROR) | 262 | if (r != MAILPOP3_NO_ERROR) |
261 | r = mailpop3_login(get_pop3_session(session), userid, password); | 263 | r = mailpop3_login(get_pop3_session(session), userid, password); |
262 | break; | 264 | break; |
263 | 265 | ||
264 | case POP3DRIVER_AUTH_TYPE_APOP: | 266 | case POP3DRIVER_AUTH_TYPE_APOP: |
265 | r = mailpop3_login_apop(get_pop3_session(session), userid, password); | 267 | r = mailpop3_login_apop(get_pop3_session(session), userid, password); |
266 | break; | 268 | break; |
267 | 269 | ||
268 | default: | 270 | default: |
269 | case POP3DRIVER_AUTH_TYPE_PLAIN: | 271 | case POP3DRIVER_AUTH_TYPE_PLAIN: |
270 | r = mailpop3_login(get_pop3_session(session), userid, password); | 272 | r = mailpop3_login(get_pop3_session(session), userid, password); |
271 | break; | 273 | break; |
272 | } | 274 | } |
273 | 275 | ||
274 | mailpop3_list(get_pop3_session(session), &msg_tab); | 276 | // LR 2 lines |
277 | ret = pop3driver_pop3_error_to_mail_error(r); | ||
278 | if ( ret == MAIL_NO_ERROR ) | ||
279 | mailpop3_list(get_pop3_session(session), &msg_tab); | ||
280 | // LR | ||
275 | 281 | ||
276 | return pop3driver_pop3_error_to_mail_error(r); | 282 | return pop3driver_pop3_error_to_mail_error(r); |
277 | } | 283 | } |
278 | 284 | ||
279 | static int pop3driver_logout(mailsession * session) | 285 | static int pop3driver_logout(mailsession * session) |
280 | { | 286 | { |
281 | int r; | 287 | int r; |
282 | 288 | ||
283 | r = mailpop3_quit(get_pop3_session(session)); | 289 | r = mailpop3_quit(get_pop3_session(session)); |
284 | 290 | ||
285 | return pop3driver_pop3_error_to_mail_error(r); | 291 | return pop3driver_pop3_error_to_mail_error(r); |
286 | } | 292 | } |
287 | 293 | ||
288 | static int pop3driver_noop(mailsession * session) | 294 | static int pop3driver_noop(mailsession * session) |
289 | { | 295 | { |
290 | int r; | 296 | int r; |
291 | 297 | ||
292 | r = mailpop3_noop(get_pop3_session(session)); | 298 | r = mailpop3_noop(get_pop3_session(session)); |
293 | 299 | ||
294 | return pop3driver_pop3_error_to_mail_error(r); | 300 | return pop3driver_pop3_error_to_mail_error(r); |
295 | } | 301 | } |
296 | 302 | ||
297 | static int pop3driver_status_folder(mailsession * session, char * mb, | 303 | static int pop3driver_status_folder(mailsession * session, char * mb, |
298 | uint32_t * result_messages, | 304 | uint32_t * result_messages, |
299 | uint32_t * result_recent, | 305 | uint32_t * result_recent, |
300 | uint32_t * result_unseen) | 306 | uint32_t * result_unseen) |
301 | { | 307 | { |
302 | uint32_t count; | 308 | uint32_t count; |
303 | int r; | 309 | int r; |
304 | 310 | ||
305 | r = pop3driver_messages_number(session, mb, &count); | 311 | r = pop3driver_messages_number(session, mb, &count); |
306 | if (r != MAIL_NO_ERROR) | 312 | if (r != MAIL_NO_ERROR) |
307 | return r; | 313 | return r; |
308 | 314 | ||
309 | * result_messages = count; | 315 | * result_messages = count; |
310 | * result_recent = count; | 316 | * result_recent = count; |
311 | * result_unseen = count; | 317 | * result_unseen = count; |
312 | 318 | ||
313 | return MAIL_NO_ERROR; | 319 | return MAIL_NO_ERROR; |
314 | } | 320 | } |
315 | 321 | ||
316 | static int pop3driver_messages_number(mailsession * session, char * mb, | 322 | static int pop3driver_messages_number(mailsession * session, char * mb, |
317 | uint32_t * result) | 323 | uint32_t * result) |
318 | { | 324 | { |
319 | carray * msg_tab; | 325 | carray * msg_tab; |
320 | 326 | ||
321 | mailpop3_list(get_pop3_session(session), &msg_tab); | 327 | mailpop3_list(get_pop3_session(session), &msg_tab); |
322 | 328 | ||