Rev 3439 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3439 | Rev 4139 | ||
---|---|---|---|
Line 130... | Line 130... | ||
130 | DrawMailList(); |
130 | DrawMailList(); |
131 | } |
131 | } |
132 | if (id==EXIT_MAIL) |
132 | if (id==EXIT_MAIL) |
133 | { |
133 | { |
134 | StopLoading(); |
134 | StopLoading(); |
135 | CloseSocket(socket); |
135 | Close(socketnum); |
136 | LoginBoxLoop(); |
136 | LoginBoxLoop(); |
137 | } |
137 | } |
138 | if (id==CHANGE_CHARSET) |
138 | if (id==CHANGE_CHARSET) |
139 | { |
139 | { |
140 | DefineButton(0,0,Form.cwidth,Form.cheight, CLOSE_CHANGE_CHARSET+BT_HIDE+BT_NOFRAME); |
140 | DefineButton(0,0,Form.cwidth,Form.cheight, CLOSE_CHANGE_CHARSET+BT_HIDE+BT_NOFRAME); |
Line 206... | Line 206... | ||
206 | default: |
206 | default: |
207 | if (aim == SEND_NSTAT) |
207 | if (aim == SEND_NSTAT) |
208 | { |
208 | { |
209 | debug("Counting mail, awaiting answer..."); |
209 | debug("Counting mail, awaiting answer..."); |
210 | request_len = GetRequest("STAT", NULL); |
210 | request_len = GetRequest("STAT", NULL); |
211 | WriteSocket(socket,request_len,#request); |
211 | Send(socketnum, #request, request_len, 0); |
212 | if (EAX == 0xffffffff) { debug("Error sending STAT. Retry..."w); break;} |
212 | if (EAX == 0xffffffff) { debug("Error sending STAT. Retry..."w); break;} |
213 | aim = GET_ANSWER_NSTAT; |
213 | aim = GET_ANSWER_NSTAT; |
214 | } |
214 | } |
Line 215... | Line 215... | ||
215 | 215 | ||
216 | if (aim == GET_ANSWER_NSTAT) |
216 | if (aim == GET_ANSWER_NSTAT) |
217 | { |
217 | { |
218 | if (!PollSocket(socket)) break; |
218 | ticks = Receive(socketnum, #immbuffer, BUFFERSIZE, 0); |
219 | socket_char=ReadSocket(socket); |
- | |
Line 220... | Line 219... | ||
220 | immputc(socket_char); |
219 | if ((ticks == 0xffffff) || (ticks < 2)) break; |
221 | 220 | ||
222 | if (socket_char=='\n') |
221 | if (immbuffer[ticks-2]=='\n') |
223 | { |
222 | { |
224 | debug("GOT::"); |
223 | debug("GOT::"); |
225 | debug(#immbuffer); |
224 | debug(#immbuffer); |
Line 230... | Line 229... | ||
230 | debug(itoa(mail_list.count)); |
229 | debug(itoa(mail_list.count)); |
231 | listbuffer = free(listbuffer); |
230 | listbuffer = free(listbuffer); |
232 | listbuffer = mem_Alloc(30*mail_list.count); //24* original |
231 | listbuffer = mem_Alloc(30*mail_list.count); //24* original |
233 | listpointer = listbuffer; |
232 | listpointer = listbuffer; |
234 | aim = SEND_NLIST; |
233 | aim = SEND_NLIST; |
235 | debug("Recieving mail list..."); |
234 | debug("Receiving mail list..."); |
236 | immfree(); |
- | |
237 | } |
235 | } |
238 | else |
236 | else |
239 | { |
237 | { |
240 | notify("Sorry, can't recieve your mail"); |
238 | notify("Sorry, can't recieve your mail"); |
241 | immfree(); |
- | |
242 | aim=NULL; //aim = SEND_NLIST; |
239 | aim=NULL; //aim = SEND_NLIST; |
243 | } |
240 | } |
244 | } |
241 | } |
245 | } |
242 | } |
Line 246... | Line 243... | ||
246 | 243 | ||
247 | if (aim == SEND_NLIST) |
244 | if (aim == SEND_NLIST) |
248 | { |
245 | { |
249 | WriteText(5, Form.cheight-11, 0x80, sc.work_text, "Send LIST, awaiting answer..."); |
246 | WriteText(5, Form.cheight-11, 0x80, sc.work_text, "Send LIST, awaiting answer..."); |
250 | request_len = GetRequest("LIST", NULL); |
247 | request_len = GetRequest("LIST", NULL); |
251 | WriteSocket(socket,request_len,#request); |
248 | Send(socketnum, #request, request_len, 0); |
252 | if (EAX == 0xffffffff) {debug("Error while sending LIST. Retry..."); break;} |
249 | if (EAX == 0xffffffff) {debug("Error while sending LIST. Retry..."); break;} |
253 | aim = GET_ANSWER_NLIST; |
250 | aim = GET_ANSWER_NLIST; |
Line 254... | Line 251... | ||
254 | } |
251 | } |
255 | 252 | ||
256 | if (aim == GET_ANSWER_NLIST) |
253 | if (aim == GET_ANSWER_NLIST) |
257 | { |
254 | { |
258 | ticks = PollSocket(socket); |
- | |
259 | if (!ticks) break; |
- | |
260 | for (;ticks>0;ticks--) |
- | |
261 | { |
- | |
Line -... | Line 255... | ||
- | 255 | ticks = Receive(socketnum, #immbuffer, BUFFERSIZE, 0); |
|
- | 256 | if ((ticks == 0xffffffff) || (ticks < 3)) break; |
|
262 | socket_char=ReadSocket(socket); |
257 | |
263 | listputc(socket_char); |
258 | //for (;ticks>0;ticks--) |
264 | 259 | //{ |
|
265 | if (socket_char=='.') //this way of checking end of message IS BAD |
260 | if (immbuffer[ticks-3]=='.') //this way of checking end of message IS BAD |
266 | { |
261 | { |
Line 267... | Line 262... | ||
267 | aim = SEND_RETR; |
262 | aim = SEND_RETR; |
268 | debug("Got mail list"); |
263 | debug("Got mail list"); |
269 | DrawMailBox(); |
264 | DrawMailBox(); |
- | 265 | ||
270 | 266 | atr.CreateArray(); |
|
271 | atr.CreateArray(); |
267 | atr.SetSizes(); |
272 | atr.SetSizes(); |
268 | } |
273 | } |
269 | //} |
274 | } |
270 | } |
275 | } |
271 | |
276 | if (aim == SEND_RETR) |
272 | if (aim == SEND_RETR) |
277 | { |
273 | { |
278 | from = to = date = subj = cur_charset = NULL; |
274 | from = to = date = subj = cur_charset = NULL; |
279 | letter_view.ClearList(); |
275 | letter_view.ClearList(); |
280 | DrawMailBox(); |
276 | DrawMailBox(); |
Line 281... | Line 277... | ||
281 | debug("Send RETR, awaiting answer..."); |
277 | debug("Send RETR, awaiting answer..."); |
282 | request_len = GetRequest("RETR", itoa(mail_list.current+1)); |
278 | request_len = GetRequest("RETR", itoa(mail_list.current+1)); |
283 | WriteSocket(socket,request_len,#request); |
279 | Send(socketnum, #request, request_len, 0); |
- | 280 | if (EAX == 0xffffffff) { notify("Error while trying to get letter from server"); aim=NULL; break;} |
|
284 | if (EAX == 0xffffffff) { notify("Error while trying to get letter from server"); aim=NULL; break;} |
281 | |
285 | 282 | mailbuffer = free(mailbuffer); |
|
286 | mailbuffer = free(mailbuffer); |
283 | letter_size = atr.GetSize(mail_list.current+1) + 1024; |
- | 284 | mailbuffer = malloc(letter_size); |
|
287 | letter_size = atr.GetSize(mail_list.current+1) + 1024; |
285 | if (!mailbuffer) {debug("alloc error!"); aim=NULL; break;} |
288 | mailbuffer = malloc(letter_size); |
286 | mailpointer = mailbuffer; |
- | 287 | aim = GET_ANSWER_RETR; |
|
289 | mailpointer = mailbuffer; |
288 | } |
290 | aim = GET_ANSWER_RETR; |
289 | |
- | 290 | if (aim == GET_ANSWER_RETR) |
|
- | 291 | { |
|
- | 292 | ticks = Receive(socketnum, mailpointer, letter_size + mailbuffer - mailpointer , MSG_DONTWAIT); |
|
- | 293 | if (ticks == 0xffffffff) break; |
|
- | 294 | if (ticks == 0) break; |
|
Line 291... | Line -... | ||
291 | } |
- | |
292 | if (aim == GET_ANSWER_RETR) |
- | |
293 | { |
- | |
294 | ticks=PollSocket(socket); |
- | |
295 | if (!ticks) break; |
- | |
296 | - | ||
297 | for (;ticks>0;ticks--) |
- | |
298 | { |
295 | //debugi(EAX); |
Line 299... | Line 296... | ||
299 | socket_char=ReadSocket(socket); |
296 | |
300 | //debugch(socket_char); |
297 | mailpointer = mailpointer + ticks; |
301 | *mailpointer=socket_char; |
298 | //*mailpointer='\0'; |
302 | mailpointer++; |
299 | //debug(mailbuffer); |
303 | *mailpointer='\0'; |
300 | |
304 | if (!aim) continue; |
301 | if (!aim) continue; |
305 | 302 | ||
Line 306... | Line 303... | ||
306 | if (letter_size + mailbuffer - mailpointer - 2 < 0) |
303 | if (letter_size + mailbuffer - mailpointer - 2 < 0) |
307 | { |
304 | { |
308 | debug("Buffer overflow!!1 Realloc..."w); |
305 | debug("Resizing buffer"); |
309 | letter_size += 4096; |
306 | letter_size += 4096; |
310 | mailbuffer = realloc(mailbuffer, letter_size); |
307 | mailbuffer = realloc(mailbuffer, letter_size); |
311 | if (!mailbuffer) {debug("Relloc error!"); aim=NULL; break;} |
308 | if (!mailbuffer) {debug("Realloc error!"); aim=NULL; break;} |
Line 312... | Line 309... | ||
312 | } |
309 | } |
313 | - | ||
314 | if (letter_size>9000) |
310 | |
Line 315... | Line 311... | ||
315 | { |
311 | if (letter_size>9000) |
316 | id = mailpointer - mailbuffer * 100 ; |
312 | { |
317 | id /= letter_size - 1024; |
313 | id = mailpointer - mailbuffer * 100 ; |
Line 489... | Line 485... | ||
489 | void StopLoading() |
485 | void StopLoading() |
490 | { |
486 | { |
491 | aim = NULL; |
487 | aim = NULL; |
492 | mailbuffer = free(mailbuffer); |
488 | mailbuffer = free(mailbuffer); |
493 | to = from = date = subj = cur_charset = NULL; |
489 | to = from = date = subj = cur_charset = NULL; |
494 | while (PollSocket(socket)) ReadSocket(socket); |
- | |
495 | } |
490 | } |
Line 496... | Line 491... | ||
496 | 491 | ||
497 | int GetMailCount(){ |
492 | int GetMailCount(){ |
498 | char tmpbuf4[512]; |
493 | char tmpbuf4[512]; |