Rev 4139 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4139 | Rev 4141 | ||
---|---|---|---|
Line 225... | Line 225... | ||
225 | if (strstr(#immbuffer,"+OK")) |
225 | if (strstr(#immbuffer,"+OK")) |
226 | { |
226 | { |
227 | mail_list.count = GetMailCount(); |
227 | mail_list.count = GetMailCount(); |
228 | debug("Letters:"); |
228 | debug("Letters:"); |
229 | debug(itoa(mail_list.count)); |
229 | debug(itoa(mail_list.count)); |
230 | listbuffer = free(listbuffer); |
230 | free(listbuffer); |
231 | listbuffer = mem_Alloc(30*mail_list.count); //24* original |
231 | listbuffer = mem_Alloc(30*mail_list.count); //24* original |
232 | listpointer = listbuffer; |
232 | listpointer = listbuffer; |
233 | aim = SEND_NLIST; |
233 | aim = SEND_NLIST; |
234 | debug("Receiving mail list..."); |
234 | debug("Receiving mail list..."); |
235 | } |
235 | } |
Line 250... | Line 250... | ||
250 | aim = GET_ANSWER_NLIST; |
250 | aim = GET_ANSWER_NLIST; |
251 | } |
251 | } |
Line 252... | Line 252... | ||
252 | 252 | ||
253 | if (aim == GET_ANSWER_NLIST) |
253 | if (aim == GET_ANSWER_NLIST) |
254 | { |
254 | { |
255 | ticks = Receive(socketnum, #immbuffer, BUFFERSIZE, 0); |
255 | ticks = Receive(socketnum, listpointer, listbuffer + 30*mail_list.count - listpointer, MSG_DONTWAIT); |
- | 256 | if (ticks == 0xffffffff) break; |
|
Line 256... | Line 257... | ||
256 | if ((ticks == 0xffffffff) || (ticks < 3)) break; |
257 | listpointer = listpointer + ticks; |
257 | - | ||
258 | //for (;ticks>0;ticks--) |
258 | |
259 | //{ |
259 | if (listpointer - listbuffer < 5) break; |
260 | if (immbuffer[ticks-3]=='.') //this way of checking end of message IS BAD |
260 | if (strncmp(listpointer-5,"\n.\n",5)==0) // note that c-- assembles "\n.\n" to 0x0d, 0x0a, 0x2e, 0x0d, 0x0a |
261 | { |
261 | { |
262 | aim = SEND_RETR; |
262 | aim = SEND_RETR; |
Line -... | Line 263... | ||
- | 263 | debug("Got mail list"); |
|
263 | debug("Got mail list"); |
264 | DrawMailBox(); |
264 | DrawMailBox(); |
265 | |
265 | 266 | *listpointer='\0'; |
|
266 | atr.CreateArray(); |
- | |
267 | atr.SetSizes(); |
267 | atr.CreateArray(); |
Line 268... | Line 268... | ||
268 | } |
268 | atr.SetSizes(); |
269 | //} |
269 | } |
270 | } |
270 | } |
Line 277... | Line 277... | ||
277 | debug("Send RETR, awaiting answer..."); |
277 | debug("Send RETR, awaiting answer..."); |
278 | request_len = GetRequest("RETR", itoa(mail_list.current+1)); |
278 | request_len = GetRequest("RETR", itoa(mail_list.current+1)); |
279 | Send(socketnum, #request, request_len, 0); |
279 | Send(socketnum, #request, request_len, 0); |
280 | if (EAX == 0xffffffff) { notify("Error while trying to get letter from server"); aim=NULL; break;} |
280 | if (EAX == 0xffffffff) { notify("Error while trying to get letter from server"); aim=NULL; break;} |
Line 281... | Line 281... | ||
281 | 281 | ||
282 | mailbuffer = free(mailbuffer); |
282 | free(mailbuffer); |
283 | letter_size = atr.GetSize(mail_list.current+1) + 1024; |
283 | letter_size = atr.GetSize(mail_list.current+1) + 1024; |
284 | mailbuffer = malloc(letter_size); |
284 | mailbuffer = malloc(letter_size); |
285 | if (!mailbuffer) {debug("alloc error!"); aim=NULL; break;} |
285 | if (!mailbuffer) {debug("alloc error!"); aim=NULL; break;} |
286 | mailpointer = mailbuffer; |
286 | mailpointer = mailbuffer; |
Line 289... | Line 289... | ||
289 | 289 | ||
290 | if (aim == GET_ANSWER_RETR) |
290 | if (aim == GET_ANSWER_RETR) |
291 | { |
291 | { |
292 | ticks = Receive(socketnum, mailpointer, letter_size + mailbuffer - mailpointer , MSG_DONTWAIT); |
292 | ticks = Receive(socketnum, mailpointer, letter_size + mailbuffer - mailpointer , MSG_DONTWAIT); |
293 | if (ticks == 0xffffffff) break; |
- | |
294 | if (ticks == 0) break; |
293 | if (ticks == 0xffffffff) break; |
Line 295... | Line 294... | ||
295 | //debugi(EAX); |
294 | //debugi(EAX); |
296 | 295 | ||
297 | mailpointer = mailpointer + ticks; |
296 | mailpointer = mailpointer + ticks; |
Line 495... | Line 494... | ||
495 | return atoi(#tmpbuf4); |
494 | return atoi(#tmpbuf4); |
496 | } |
495 | } |
Line 497... | Line -... | ||
497 | - | ||
498 | - | ||
499 | - | ||
500 | - | ||
501 | - | ||
502 | - | ||
503 | - | ||
504 | - | ||
505 | void listputc(char agot_char){ |
- | |
506 | *listpointer=agot_char; |
- | |
507 | listpointer++; |
- | |
508 | *listpointer='\0'; |
496 | |
509 | } |
497 | |
510 | 498 | ||
511 | int GetLetterSize_(int number){ |
499 | int GetLetterSize_(int number){ |
512 | char serch_num[24]; |
500 | char search_num[24]; |
513 | char letter_size1[24]; |
501 | char letter_size1[24]; |
514 | strcpy(#serch_num, "\n"); |
502 | strcpy(#search_num, "\n"); // 0x0d, 0x0a |
515 | strcat(#serch_num, itoa(number)); |
503 | strcat(#search_num, itoa(number)); |
516 | strcat(#serch_num, " "); |
504 | strcat(#search_num, " "); |
Line 517... | Line -... | ||
517 | strcpyb(listbuffer, #letter_size1, #serch_num, "\n"); |
- | |
518 | return atoi(#letter_size1); |
- | |
519 | } |
505 | strcpyb(listbuffer, #letter_size1, #search_num, "\x0d"); |
520 | 506 | return atoi(#letter_size1); |
|
521 | 507 | } |
|
522 | 508 | ||
523 | 509 | ||
Line 524... | Line 510... | ||
524 | void letter_attr::CreateArray() |
510 | void letter_attr::CreateArray() |
525 | { |
511 | { |
526 | mails_db = free(mails_db); |
512 | free(mails_db); |
527 | mails_db = malloc( mail_list.count * sizeof(atr) ); |
513 | mails_db = malloc( mail_list.count * sizeof(atr) ); |
528 | } |
514 | } |
529 | 515 | ||
530 | void letter_attr::SetSizes() |
516 | void letter_attr::SetSizes() |
531 | { |
517 | { |
532 | int i; |
518 | int i; |