Subversion Repositories Kolibri OS

Rev

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];