summaryrefslogtreecommitdiffabout
path: root/libetpan/src/driver/implementation
Unidiff
Diffstat (limited to 'libetpan/src/driver/implementation') (more/less context) (ignore whitespace changes)
-rw-r--r--libetpan/src/driver/implementation/pop3/pop3driver.c8
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
226static int pop3driver_parameters(mailsession * session, 226static 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
248static int pop3driver_login(mailsession * session, 248static 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
279static int pop3driver_logout(mailsession * session) 285static 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
288static int pop3driver_noop(mailsession * session) 294static 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
297static int pop3driver_status_folder(mailsession * session, char * mb, 303static 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
316static int pop3driver_messages_number(mailsession * session, char * mb, 322static 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