亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pop3_client.c

?? opentcp_mcf5282原代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
								else
									end_detect = 0;

								continue;
							}

							if( end_detect == 4 )
							{
								if(ch == '\n')
								{
									pop3c_changestate(POP3C_MESSAGE_RECEIVED);
									return(1);
								}
								else
									end_detect = 0;

								continue;
							}

						}

						break;

					case POP3C_DELE_SENT:

						if(cmd == POP3C_OK)
						{
							DEBUGOUT("DELE +OK by POP3 server\r\n");
							pop3c_changestate(POP3C_DELE_ACKED);
							return(1);
						}

						break;

					case POP3C_QUIT_SENT:

						if(cmd == POP3C_OK)
						{
							DEBUGOUT("QUIT +OK by POP3 server\r\n");
							pop3c_changestate(POP3C_QUIT_ACKED);
							return(1);
						}

						break;




				default:
					break;


			}


			return(1);


		case TCP_EVENT_REGENERATE:

			/* Send last packet again	*/

			DEBUGOUT("POP3C is regenerating...\r\n");

			switch (POP3Client.state)
			{

				case POP3C_USERNAME_SENT:
					pop3c_senduser();
					return(1);

				case POP3C_PASSWORD_SENT:
					pop3c_sendpassword();
					return(1);

				case POP3C_STAT_SENT:
					pop3c_sendstat();
					return(1);

				case POP3C_LIST_SENT:
					pop3c_sendlist(POP3Client.curmsgindex);
					return(1);

				case POP3C_TOP0_SENT:
					pop3c_sendtop(0);
					return(1);

				case POP3C_RETR_SENT:
					pop3c_sendretr(POP3Client.curmsgindex);
					return(1);

				case POP3C_DELE_SENT:
					pop3c_senddele(POP3Client.curmsgindex);
					return(1);

				case POP3C_QUIT_SENT:
					pop3c_sendquit();
					return(1);

				default:
					return(-1);
			}


			break;


		default:
			return(-1);
	}

	return(-1);

}


/********************************************************************************
Function:		pop3c_run

Parameters:		void

Return val:		void

Date:			11.9.2002

Desc:			This function should be called periodically from main loop
				in order to run pop3 client 'thread'.
*********************************************************************************/

void pop3c_run (void)
{
	INT16 i;

	/* On that function we can send data when called by main loop	*/

	if( pop3c_init_done == 0 )
		return;

	if( POP3Client.state < POP3C_OPEN_REQUESTED)
		return;

	/* Is there timeout of some sort?	*/

	if(check_timer(POP3Client.tmrhandle) == 0)
	{
		/* Yep	*/
		tcp_abort(POP3Client.sochandle);
		pop3c_changestate(POP3C_CLOSED);

		/* Make user callback	*/
		pop3c_error();
		return;

	}

	if( POP3Client.state == POP3C_OPEN_REQUESTED)
	{
		/* We are on this state because user has requested connection	*/
		/* but connection is not yet opened.							*/
		/* Try to get TCP stack to accept our connection request		*/

		tcp_abort(POP3Client.sochandle);		/* Release old connection	*/
		if(tcp_connect(POP3Client.sochandle, POP3Client.remip, POP3Client.remport, 0) >= 0)
			pop3c_changestate(POP3C_CONNECTIONOPEN_SENT);

		return;
	}

	if( tcp_getstate(POP3Client.sochandle) != TCP_STATE_CONNECTED )
	{
		return;
	}

	if( tcp_checksend(POP3Client.sochandle) < 0 )
		return;

	/* It's connected and no unacked data so try to send	*/

	if(POP3Client.state == POP3C_SERVER_READY)
	{
		/* Send USER	*/
		pop3c_senduser();
		pop3c_changestate(POP3C_USERNAME_SENT);
		DEBUGOUT("POP3C USER packet sent\r\n");
		return;
	}

	if(POP3Client.state == POP3C_USERNAME_ACKED)
	{
		/* Send PASS	*/
		pop3c_sendpassword();
		pop3c_changestate(POP3C_PASSWORD_SENT);
		DEBUGOUT("POP3C PASS packet sent\r\n");
		return;
	}

	if(POP3Client.state == POP3C_PASSWORD_ACKED)
	{
		/* Send STAT	*/
		pop3c_sendstat();
		pop3c_changestate(POP3C_STAT_SENT);
		DEBUGOUT("POP3C STAT packet sent\r\n");
		return;
	}

	if(POP3Client.state == POP3C_STAT_GET)
	{
		/* Still messages?		*/
		if( POP3Client.curmsgindex < POP3Client.msgtotal )
		{
			POP3Client.curmsgindex++;
			pop3c_sendlist(POP3Client.curmsgindex);
			pop3c_changestate(POP3C_LIST_SENT);
			DEBUGOUT("POP3C LIST packet sent\r\n");
			return;
		}

		/* End of messages	*/

		pop3c_sendquit();
		pop3c_changestate(POP3C_QUIT_SENT);
		DEBUGOUT("POP3C QUIT packet sent\r\n");
		return;

	}

	if(POP3Client.state == POP3C_LIST_GET)
	{
		/* Now we have the whole length of current message. Receive body	*/

		pop3c_sendtop(POP3Client.curmsgindex);
		pop3c_changestate(POP3C_TOP0_SENT);
		DEBUGOUT("POP3C TOP packet sent\r\n");
		return;
	}

	if(POP3Client.state == POP3C_TOP0_GET)
	{
		/* Offer the e-mail to sender	*/

		if((POP3Client.curmsgtotlen + 100) > POP3Client.curmsghlen)
		{
			if(POP3Client.curmsgtotlen < POP3Client.curmsghlen)
				i = pop3c_msgoffer(POP3Client.curmsgindex, 0, &POP3Client.from[0], &POP3Client.subject[0]);
			else
				i = pop3c_msgoffer(POP3Client.curmsgindex, POP3Client.curmsgtotlen - POP3Client.curmsghlen, &POP3Client.from[0], &POP3Client.subject[0]);

			if( i == (-2) )
			{
				/* User want's the mail to be deleted directly	*/

				pop3c_senddele(POP3Client.curmsgindex);
				pop3c_changestate(POP3C_DELE_SENT);
				DEBUGOUT("POP3C deleting the e-mail\r\n");
				return;
			}

			if( i == (-1) )
			{
				/* User want's the mail to be left on server without reading it	*/
				/* So goto next one												*/

				pop3c_changestate(POP3C_STAT_GET);
				return;
			}

			if( i >= 0 )
			{
				/* User wants to read and delete the mail normally	*/

				pop3c_sendretr(POP3Client.curmsgindex);
				pop3c_changestate(POP3C_RETR_SENT);
				DEBUGOUT("POP3C reading the e-mail\r\n");
				return;

			}

			return;
		}

		/* The mail is somehow corrupted, just delete it	*/

		pop3c_senddele(POP3Client.curmsgindex);
		pop3c_changestate(POP3C_DELE_SENT);
		DEBUGOUT("POP3C deleting CORRUPTED e-mail\r\n");
		return;


	}


	if(POP3Client.state == POP3C_MESSAGE_RECEIVED)
	{
		/* Delete the readed message	*/

		pop3c_senddele(POP3Client.curmsgindex);
		pop3c_changestate(POP3C_DELE_SENT);
		DEBUGOUT("POP3C deleting readed e-mail\r\n");
		return;
	}

	if(POP3Client.state == POP3C_DELE_ACKED)
	{
		/* Goto next one	*/
		pop3c_changestate(POP3C_STAT_GET);
		return;
	}

	if(POP3Client.state == POP3C_QUIT_ACKED)
	{

		/* Try to close TCP	*/

		if(tcp_close(POP3Client.sochandle) >= 0)
		{
			pop3c_changestate(POP3C_CLOSED);
			pop3c_allok();
			DEBUGOUT("POP3C connection closed OK\r\n");
			return;
		}

		/* Close is not accepted by TCP. See if timeout	*/

		if(check_timer(POP3Client.tmrhandle) == 0)
		{
			/* Use brute force		*/

			tcp_abort(POP3Client.sochandle);
			pop3c_changestate(POP3C_CLOSED);
			pop3c_allok();
			DEBUGOUT("POP3C connection closed by ABORT\r\n");
			return;
		}

		/* Keep trying untill timeout	*/

		return;

	}

	return;

}




void pop3c_senduser (void)
{
	INT8 i;
	UINT8* buf;

	/* Fill TCP Tx buffer with "USER " and use callback function	*/
	/* pop3c_getusername in order to get the username				*/
	/* that combined "USER username" to POP3 server					*/

	buf = &OTCP_TXBUF[TCP_APP_OFFSET];

	*buf++ = 'U';
	*buf++ = 'S';
	*buf++ = 'E';
	*buf++ = 'R';
	*buf++ = ' ';

	i = pop3c_getusername(buf);

	if(i < 0)
		return;

	buf += i;

	/* Insert >CRLF	*/

	*buf++ = '\r';
	*buf = '\n';


	tcp_send(POP3Client.sochandle, &OTCP_TXBUF[TCP_APP_OFFSET], NETWORK_TX_BUFFER_SIZE - TCP_APP_OFFSET, i + 7);

}



void pop3c_sendpassword (void)
{
	INT8 i;
	UINT8* buf;

	/* Fill TCP Tx buffer with "PASS " and use callback function	*/
	/* pop3c_getpassword in order to get the password				*/
	/* that combined "PASS password" to POP3 server					*/

	buf = &OTCP_TXBUF[TCP_APP_OFFSET];

	*buf++ = 'P';
	*buf++ = 'A';
	*buf++ = 'S';
	*buf++ = 'S';
	*buf++ = ' ';

	i = pop3c_getpassword(buf);

	if(i < 0)
		return;

	buf += i;

	/* Insert >CRLF	*/

	*buf++ = '\r';
	*buf = '\n';


	tcp_send(POP3Client.sochandle, &OTCP_TXBUF[TCP_APP_OFFSET], NETWORK_TX_BUFFER_SIZE - TCP_APP_OFFSET, i + 7);

}



void pop3c_sendstat (void)
{
	UINT8* buf;

	/* Fill TCP Tx buffer with "STAT\r\n" and send it to POP3 server	*/

	buf = &OTCP_TXBUF[TCP_APP_OFFSET];

	*buf++ = 'S';
	*buf++ = 'T';
	*buf++ = 'A';
	*buf++ = 'T';
	*buf++ = '\r';
	*buf = '\n';


	tcp_send(POP3Client.sochandle, &OTCP_TXBUF[TCP_APP_OFFSET], NETWORK_TX_BUFFER_SIZE - TCP_APP_OFFSET, 6);

}

void pop3c_sendlist (UINT16 msgnbr)
{
	UINT8* buf;
	INT16 i;

	/* Ask LIST of given message number in order to get the total len of it	*/

	buf = &OTCP_TXBUF[TCP_APP_OFFSET];

	*buf++ = 'L';
	*buf++ = 'I';
	*buf++ = 'S';
	*buf++ = 'T';
	*buf++ = ' ';

	otcp_ltoa( (UINT32)msgnbr, buf);

	i = otcp_strlen(buf,40);

	if(i<0)
		return;

	buf += i;

	*buf++ = '\r';
	*buf = '\n';


	tcp_send(POP3Client.sochandle, &OTCP_TXBUF[TCP_APP_OFFSET], NETWORK_TX_BUFFER_SIZE - TCP_APP_OFFSET, i + 7);

}


void pop3c_sendtop (UINT16 msgnbr)
{
	UINT8* buf;
	INT16 i;

	/* Ask TOP msgnbr 0 in order to get the header of msg	*/

	buf = &OTCP_TXBUF[TCP_APP_OFFSET];

	*buf++ = 'T';
	*buf++ = 'O';
	*buf++ = 'P';
	*buf++ = ' ';

	otcp_ltoa( (UINT32)msgnbr, buf);

	i = otcp_strlen(buf,40);

	if(i<0)
		return;

	buf += i;

	*buf++ = ' ';
	*buf++ = '0';

	*buf++ = '\r';
	*buf = '\n';


	tcp_send(POP3Client.sochandle, &OTCP_TXBUF[TCP_APP_OFFSET], NETWORK_TX_BUFFER_SIZE - TCP_APP_OFFSET, i + 8);

}

void pop3c_sendretr (UINT16 msgnbr)
{
	UINT8* buf;
	INT16 i;

	/* Ask RETR of given message number in order to get the message	*/

	buf = &OTCP_TXBUF[TCP_APP_OFFSET];

	*buf++ = 'R';
	*buf++ = 'E';
	*buf++ = 'T';
	*buf++ = 'R';
	*buf++ = ' ';

	otcp_ltoa( (UINT32)msgnbr, buf);

	i = otcp_strlen(buf,40);

	if(i<0)
		return;

	buf += i;

	*buf++ = '\r';
	*buf = '\n';


	tcp_send(POP3Client.sochandle, &OTCP_TXBUF[TCP_APP_OFFSET], NETWORK_TX_BUFFER_SIZE - TCP_APP_OFFSET, i + 7);

}


void pop3c_senddele (UINT16 msgnbr)
{
	UINT8* buf;
	INT16 i;

	/* Ask DELE of given message number in order to delete it	*/

	buf = &OTCP_TXBUF[TCP_APP_OFFSET];

	*buf++ = 'D';
	*buf++ = 'E';
	*buf++ = 'L';
	*buf++ = 'E';
	*buf++ = ' ';

	otcp_ltoa( (UINT32)msgnbr, buf);

	i = otcp_strlen(buf,40);

	if(i<0)
		return;

	buf += i;

	*buf++ = '\r';
	*buf = '\n';


	tcp_send(POP3Client.sochandle, &OTCP_TXBUF[TCP_APP_OFFSET], NETWORK_TX_BUFFER_SIZE - TCP_APP_OFFSET, i + 7);

}



void pop3c_sendquit (void)
{
	UINT8* buf;

	/* Fill TCP Tx buffer with "QUIT\r\n" and send it to POP3 server	*/

	buf = &OTCP_TXBUF[TCP_APP_OFFSET];

	*buf++ = 'Q';
	*buf++ = 'U';
	*buf++ = 'I';
	*buf++ = 'T';
	*buf++ = '\r';
	*buf = '\n';

	tcp_send(POP3Client.sochandle, &OTCP_TXBUF[TCP_APP_OFFSET], NETWORK_TX_BUFFER_SIZE - TCP_APP_OFFSET, 6);

}


INT16 pop3c_parsestat (void)
{
	/* Parse total number of messages	*/

	UINT8 i;
	UINT8 ch;

	if( RECEIVE_NETWORK_B() != '+')
		return(-1);
	if( otcp_tolower(RECEIVE_NETWORK_B()) != 'o')
		return(-1);
	if( otcp_tolower(RECEIVE_NETWORK_B()) != 'k')
		return(-1);
	if( RECEIVE_NETWORK_B() != ' ')
		return(-1);

	POP3Client.msgtotal = 0;

	for(i=0; i<5; i++)
	{
		ch = RECEIVE_NETWORK_B();

		if(ch == ' ')
			return(1);

		if(	otcp_isnumeric(ch) == 0)
			return(-1);

		ch = otcp_asciitohex(ch);

		POP3Client.msgtotal *= 10;
		POP3Client.msgtotal += ch;

	}

	/* If we get there the number of messages is too big	*/

	return(-1);


}

INT16 pop3c_parselist (void)
{
	/* Parse total length of current message	*/

	UINT8 i;
	UINT8 ch;

	if( RECEIVE_NETWORK_B() != '+')
		return(-1);
	if( otcp_tolower(RECEIVE_NETWORK_B()) != 'o')
		return(-1);
	if( otcp_tolower(RECEIVE_NETWORK_B()) != 'k')
		return(-1);
	if( RECEIVE_NETWORK_B() != ' ')
		return(-1);

	/* Receive untill next space	*/

	for(i=0; i<5; i++)
	{
		ch = RECEIVE_NETWORK_B();

		if( ch == ' ')
			break;
	}

	/* Space not found?	*/

	if( ch != ' ')
		return(-1);

	POP3Client.curmsgtotlen = 0;

	for(i=0; i<9; i++)
	{
		ch = RECEIVE_NETWORK_B();

		if(ch == '\r')
			return(1);
		if(ch == '\n')
			return(1);

		if(	otcp_isnumeric(ch) == 0)
			return(-1);

		ch = otcp_asciitohex(ch);

		POP3Client.curmsgtotlen *= 10;
		POP3Client.curmsgtotlen += ch;

	}

	/* If all OK we are NOT here	*/

	return(-1);

}





void pop3c_changestate (UINT8 nstate)
{

	init_timer(POP3Client.tmrhandle, POP3C_TOUT*TIMERTIC);
	POP3Client.state = nstate;

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成av人片在线观看无码| 国产精品久久久久影院色老大 | 91色porny蝌蚪| av午夜一区麻豆| 91在线高清观看| 欧美一级在线观看| 精品黑人一区二区三区久久| 久久久久久97三级| 亚洲欧美另类图片小说| 五月婷婷综合在线| 国产在线精品免费av| 不卡一二三区首页| 欧美精品777| 欧美国产综合一区二区| 亚洲精品久久久久久国产精华液| 亚洲第四色夜色| 国产成人精品影院| 精品污污网站免费看| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲视频在线一区观看| 日本不卡在线视频| 91福利小视频| 国产日韩欧美一区二区三区乱码 | 92国产精品观看| 精品久久久三级丝袜| 亚洲一二三区不卡| www.色精品| 国产丝袜美腿一区二区三区| 天天影视网天天综合色在线播放| 色综合久久天天综合网| 国产日韩欧美精品一区| 天涯成人国产亚洲精品一区av| 91在线观看一区二区| 国产亲近乱来精品视频| 精东粉嫩av免费一区二区三区| 欧美探花视频资源| 亚洲福利一区二区| 91久久精品网| 亚洲一区在线播放| 欧美日韩aaaaa| 免播放器亚洲一区| 日韩丝袜情趣美女图片| 美女网站一区二区| 久久午夜色播影院免费高清| 国产美女一区二区三区| 久久久精品国产免费观看同学| 国产精品88av| 国产精品第四页| 欧美日韩专区在线| 青青草一区二区三区| 精品国产凹凸成av人导航| 国产一区日韩二区欧美三区| 日本一区二区免费在线观看视频| 国产高清不卡一区二区| 亚洲欧洲一区二区在线播放| 欧美一区二区三区性视频| 日韩精品一区第一页| 欧美午夜在线观看| 欧美国产精品中文字幕| 亚洲成av人片| 欧美一区二区视频在线观看2022| 不卡的av网站| 免费的国产精品| 精品国产sm最大网站| 91视频一区二区| 国产一区三区三区| 亚洲高清免费在线| 亚洲国产高清在线观看视频| 欧美三级中文字| 99在线精品免费| 婷婷亚洲久悠悠色悠在线播放| 欧美日韩aaa| 99精品视频在线播放观看| 蜜桃久久久久久| 亚洲成人1区2区| 亚洲一级片在线观看| 国产精品美女久久久久久久久久久| 91精品欧美一区二区三区综合在 | av色综合久久天堂av综合| 经典一区二区三区| 久久精品久久99精品久久| 婷婷综合另类小说色区| 亚洲综合视频在线| 亚洲国产美国国产综合一区二区| 国产精品理论片| 亚洲日本乱码在线观看| 亚洲丝袜精品丝袜在线| 一区二区三区四区视频精品免费 | 亚洲美女免费视频| 国产精品成人免费| 亚洲综合色视频| 奇米影视7777精品一区二区| 免费av网站大全久久| 韩国欧美一区二区| 91小宝寻花一区二区三区| 色婷婷综合久久久久中文一区二区| 91在线无精精品入口| 7777精品伊人久久久大香线蕉的| 日韩欧美美女一区二区三区| 国产婷婷精品av在线| 亚洲精品视频自拍| 麻豆精品在线观看| 99r国产精品| 精品国产污网站| 亚洲一区中文在线| 国产精品一区二区久激情瑜伽| av网站免费线看精品| 精品免费国产二区三区 | 在线精品视频一区二区| 精品国产亚洲一区二区三区在线观看| 国产精品乱人伦中文| 免费不卡在线视频| 欧美综合欧美视频| 成人欧美一区二区三区白人| 日韩av一区二| 欧美巨大另类极品videosbest | 午夜精品福利一区二区三区av| 韩国精品在线观看| 在线播放/欧美激情| 一区二区在线看| 不卡视频在线看| 中文字幕制服丝袜成人av | 中日韩av电影| 国产成人午夜99999| 精品国产免费久久| 久久99精品国产| 精品久久国产97色综合| 日日骚欧美日韩| 日韩午夜激情免费电影| 视频在线在亚洲| 在线不卡一区二区| 麻豆免费看一区二区三区| 欧美精品v国产精品v日韩精品| 亚欧色一区w666天堂| 3d成人动漫网站| 国产一区二区三区美女| 中文字幕亚洲精品在线观看| 91小视频在线观看| 三级亚洲高清视频| 欧美成人一区二区三区| 国产成人免费在线| 亚洲人成在线播放网站岛国 | 午夜精品一区二区三区电影天堂 | 蜜桃av噜噜一区| 国产精品久久久久久久久快鸭| 91在线视频在线| 久久爱www久久做| 一区二区三区四区在线| 精品国精品国产尤物美女| 色婷婷综合五月| 久草精品在线观看| 伊人夜夜躁av伊人久久| 久久久精品人体av艺术| 欧美美女bb生活片| 成人久久18免费网站麻豆| 男女男精品视频| 亚洲激情欧美激情| 国产精品美女久久久久久久网站| 欧美精品一二三四| 99久久99久久精品国产片果冻 | 国产三级欧美三级日产三级99| 99久久久久久99| 成人午夜视频免费看| 久久精品国产免费| 日韩精品电影一区亚洲| 一级中文字幕一区二区| 亚洲色图视频网| 国产精品剧情在线亚洲| 亚洲国产成人在线| 国产午夜亚洲精品理论片色戒 | a美女胸又www黄视频久久| www.亚洲激情.com| 国产一区美女在线| 国产欧美一区二区三区鸳鸯浴| www.久久久久久久久| 亚洲欧美另类小说视频| 91精品久久久久久久久99蜜臂| 一本一本大道香蕉久在线精品| 2020国产成人综合网| 欧美日韩综合在线| 91精品国产综合久久久久久久久久| 色综合久久久久久久久| 欧美日韩高清一区二区三区| 欧美色图激情小说| 日韩久久久久久| 国产色产综合产在线视频| 久久蜜桃av一区二区天堂| 国产精品久久三区| 亚洲一区二区精品视频| 久久99精品久久久久久国产越南| 亚洲一区中文日韩| 美日韩一区二区| 成人a区在线观看| 欧美日本一区二区| 日韩一区二区三区精品视频| 久久久久青草大香线综合精品| 国产精品久久久久四虎| 亚洲国产成人av网| 成人av午夜电影| 欧美电影免费观看高清完整版在|