📄 pop3__client_8c-source.html
字号:
00584 00585 } <span class="comment">/* of RECEIVING_HDR_SUBJ */</span> 00586 00587 00588 }00589 00590 00591 <span class="keywordflow">break</span>;00592 00593 00594 <span class="keywordflow">case</span> <a class="code" href="pop3__client_8h.html#a22">POP3C_RETR_SENT</a>:00595 00596 <span class="keywordflow">if</span>(cmd == POP3C_OK) {00597 DEBUGOUT(<span class="stringliteral">"RETR +OK by POP3 server\r\n"</span>);00598 00599 <span class="comment">/* Continue imidiately to receive message */</span>00600 00601 pop3c_changestate(<a class="code" href="pop3__client_8h.html#a23">POP3C_RECEIVING_MSG_HEADER</a>);00602 00603 } <span class="keywordflow">else</span>00604 <span class="keywordflow">break</span>;00605 00606 <span class="keywordflow">case</span> <a class="code" href="pop3__client_8h.html#a23">POP3C_RECEIVING_MSG_HEADER</a>: 00607 00608 <span class="comment">/* Try to find empty row to detect the start of actual message */</span>00609 00610 match = 0;00611 <a class="code" href="system_8h.html#a14">NETWORK_RECEIVE_INITIALIZE</a>(received_tcp_packet.buf_index);00612 00613 <span class="keywordflow">for</span>(i=0; i < (UINT16)par1; i++) { 00614 ch = <a class="code" href="system_8h.html#a9">RECEIVE_NETWORK_B</a>();00615 00616 <span class="keywordflow">if</span>(match == 0) {00617 <span class="keywordflow">if</span>( (ch == <span class="charliteral">'\r'</span>) || (ch == <span class="charliteral">'\n'</span>) )00618 match++;00619 <span class="keywordflow">else</span>00620 match = 0;00621 <span class="keywordflow">continue</span>; 00622 }00623 00624 <span class="keywordflow">if</span>(match == 1) {00625 <span class="keywordflow">if</span>( (ch == <span class="charliteral">'\r'</span>) || (ch == <span class="charliteral">'\n'</span>))00626 match++;00627 <span class="keywordflow">else</span>00628 match = 0;00629 <span class="keywordflow">continue</span>; 00630 } 00631 00632 <span class="keywordflow">if</span>(match == 2) {00633 <span class="keywordflow">if</span>( (ch == <span class="charliteral">'\r'</span>) || (ch == <span class="charliteral">'\n'</span>))00634 match++;00635 <span class="keywordflow">else</span>00636 match = 0;00637 <span class="keywordflow">continue</span>; 00638 } 00639 00640 <span class="keywordflow">if</span>(match == 3) {00641 <span class="keywordflow">if</span>( (ch == <span class="charliteral">'\r'</span>) || (ch == <span class="charliteral">'\n'</span>)) {00642 match++;00643 00644 <span class="comment">/* Continue to read the actual msg */</span>00645 par1 -= (i + 1);00646 pop3c_changestate(<a class="code" href="pop3__client_8h.html#a24">POP3C_RECEIVING_MSG</a>);00647 <span class="keywordflow">break</span>;00648 } <span class="keywordflow">else</span>00649 match = 0;00650 <span class="keywordflow">continue</span>; 00651 } 00652 00653 }00654 00655 <span class="comment">/* If we don't find the end of header we will timeout */</span>00656 <span class="comment">/* on pop3c_run so no error handling here */</span>00657 00658 <span class="keywordflow">if</span>( pop3_client.<a class="code" href="structpop3c__struct.html#m0">state</a> != <a class="code" href="pop3__client_8h.html#a24">POP3C_RECEIVING_MSG</a>)00659 <span class="keywordflow">break</span>;00660 00661 end_detect = 0; 00662 <span class="keywordflow">case</span> <a class="code" href="pop3__client_8h.html#a24">POP3C_RECEIVING_MSG</a>:00663 00664 <span class="comment">/* Search is this packet end of msg and do not give */</span>00665 <span class="comment">/* CRLF.CRLF to application */</span>00666 <span class="keywordflow">for</span>(i=0; i < (UINT16)par1; i++) {00667 ch = <a class="code" href="system_8h.html#a9">RECEIVE_NETWORK_B</a>();00668 00669 <a class="code" href="pop3c__callbacks_8c.html#a6">pop3c_data</a>(ch);00670 00671 <span class="keywordflow">if</span>( (ch == <span class="charliteral">'\r'</span>) && (end_detect != 3))00672 end_detect = 0;00673 00674 00675 <span class="keywordflow">if</span>( end_detect == 0 ) {00676 <span class="keywordflow">if</span>(ch == <span class="charliteral">'\r'</span>)00677 end_detect++;00678 <span class="keywordflow">else</span>00679 end_detect = 0;00680 00681 <span class="keywordflow">continue</span>;00682 }00683 00684 <span class="keywordflow">if</span>( end_detect == 1 ){00685 <span class="keywordflow">if</span>(ch == <span class="charliteral">'\n'</span>)00686 end_detect++;00687 <span class="keywordflow">else</span>00688 end_detect = 0;00689 00690 <span class="keywordflow">continue</span>;00691 } 00692 00693 <span class="keywordflow">if</span>( end_detect == 2 ){00694 <span class="keywordflow">if</span>(ch == <span class="charliteral">'.'</span>)00695 end_detect++;00696 <span class="keywordflow">else</span>00697 end_detect = 0;00698 00699 <span class="keywordflow">continue</span>;00700 } 00701 00702 <span class="keywordflow">if</span>( end_detect == 3 ){00703 <span class="keywordflow">if</span>(ch == <span class="charliteral">'\r'</span>)00704 end_detect++;00705 <span class="keywordflow">else</span>00706 end_detect = 0;00707 00708 <span class="keywordflow">continue</span>;00709 } 00710 00711 <span class="keywordflow">if</span>( end_detect == 4 ){ 00712 <span class="keywordflow">if</span>(ch == <span class="charliteral">'\n'</span>) { 00713 pop3c_changestate(<a class="code" href="pop3__client_8h.html#a25">POP3C_MESSAGE_RECEIVED</a>);00714 <span class="keywordflow">return</span>(1);00
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -