⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcp_8c-source.html

📁 Freescale mcu OpenTCP-1.0.4.doc.html.zip 文档
💻 HTML
📖 第 1 页 / 共 5 页
字号:
00906                                 00907                                         <span class="keywordflow">if</span>(soc-&gt;<a class="code" href="structtcb.html#m1">type</a> &amp; <a class="code" href="tcp__ip_8h.html#a39">TCP_TYPE_SERVER</a> )00908                                                 <a class="code" href="tcp_8c.html#a20">tcp_newstate</a>(soc, <a class="code" href="tcp__ip_8h.html#a45">TCP_STATE_LISTENING</a>);00909                                         <span class="keywordflow">else</span>00910                                                 <a class="code" href="tcp_8c.html#a20">tcp_newstate</a>(soc, <a class="code" href="tcp__ip_8h.html#a44">TCP_STATE_CLOSED</a>);00911                                         00912                                         handle++;00913                 00914                                         <span class="keywordflow">return</span>;                                                                         00915                                 }00916                                 00917                                 soc-&gt;<a class="code" href="structtcb.html#m15">retries_left</a>--;00918                                 <a class="code" href="timers_8c.html#a6">init_timer</a>(soc-&gt;<a class="code" href="structtcb.html#m14">retransmit_timerh</a>, <a class="code" href="group__opentcp__config.html#a11">TCP_DEF_RETRY_TOUT</a>*<a class="code" href="timers_8h.html#a1">TIMERTIC</a>);00919                                                                 00920                                 <span class="comment">/* Yep, there is unacked data                   */</span>00921                                 <span class="comment">/* Application should send the old data */</span>00922                                 00923                                 <span class="keywordflow">if</span>(temp&gt;soc-&gt;<a class="code" href="structtcb.html#m9">send_mtu</a>)00924                                         temp = soc-&gt;<a class="code" href="structtcb.html#m9">send_mtu</a>;00925                                 00926                                 <span class="comment">/* Rewind Send Next because the send process will adjust it                     */</span>00927                                 <span class="comment">/* So cheat the tcp_send to think there is no unacked data                      */</span>00928                                 00929                                 soc-&gt;<a class="code" href="structtcb.html#m8">send_next</a> = soc-&gt;<a class="code" href="structtcb.html#m6">send_unacked</a>;00930                                 00931                                 <span class="comment">/* tcp_send will set the retiries_left to maximum but this is           */</span>00932                                 <span class="comment">/* retransmitting already so we need to retain it in order to           */</span>00933                                 <span class="comment">/* avoid dead-lock                                                                                                      */</span>00934                                 00935                                 old_retries = soc-&gt;<a class="code" href="structtcb.html#m15">retries_left</a>;00936                                 00937                                 temp = soc-&gt;<a class="code" href="structtcb.html#m16">event_listener</a>(handle, <a class="code" href="tcp__ip_8h.html#a59">TCP_EVENT_REGENERATE</a>, (UINT32)temp, 0);00938                         00939                                 soc-&gt;<a class="code" href="structtcb.html#m15">retries_left</a> = old_retries;00940                         00941                                 <span class="keywordflow">if</span>(temp &lt;= 0) {00942                                         00943                                         <span class="comment">/* No data by application, must be something wrong      */</span>00944                                         soc-&gt;<a class="code" href="structtcb.html#m7">myflags</a> = TCP_FLAG_RESET;00945                                         <a class="code" href="tcp_8c.html#a16">tcp_sendcontrol</a>(handle);00946                                         00947                                         <span class="comment">/* Inform application   */</span>00948 00949                                         soc-&gt;<a class="code" href="structtcb.html#m16">event_listener</a>(handle, <a class="code" href="tcp__ip_8h.html#a57">TCP_EVENT_ABORT</a>, soc-&gt;<a class="code" href="structtcb.html#m3">rem_ip</a>, soc-&gt;<a class="code" href="structtcb.html#m4">remport</a>);00950                                                                         00951                                         <span class="keywordflow">if</span>(soc-&gt;<a class="code" href="structtcb.html#m1">type</a> &amp; <a class="code" href="tcp__ip_8h.html#a39">TCP_TYPE_SERVER</a> )00952                                                 <a class="code" href="tcp_8c.html#a20">tcp_newstate</a>(soc, <a class="code" href="tcp__ip_8h.html#a45">TCP_STATE_LISTENING</a>);00953                                         <span class="keywordflow">else</span>00954                                                 <a class="code" href="tcp_8c.html#a20">tcp_newstate</a>(soc, <a class="code" href="tcp__ip_8h.html#a44">TCP_STATE_CLOSED</a>);00955                                         00956                                         handle++;00957                 00958                                         <span class="keywordflow">return</span>;                                 00959                                         00960                                 }00961                                 00962                                 <span class="comment">/* Application has send data    */</span>00963                                 00964                                 handle++;00965                 00966                                 <span class="keywordflow">return</span>;00967                                 00968                         00969                         <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a47">TCP_STATE_SYN_SENT</a>:00970                         <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a46">TCP_STATE_SYN_RECEIVED</a>:00971                         00972                                 <span class="comment">/* Is there timeout?    */</span>00973                                 <span class="keywordflow">if</span>( <a class="code" href="timers_8c.html#a7">check_timer</a>(soc-&gt;<a class="code" href="structtcb.html#m14">retransmit_timerh</a>) != 0 )00974                                         <span class="keywordflow">break</span>;00975                                         00976                                 TCP_DEBUGOUT(<span class="stringliteral">"Timeout\r\n"</span>);00977                                         00978                                 <span class="comment">/* Yep, timeout. Is there reties left?  */</span>00979                                 <span class="keywordflow">if</span>( soc-&gt;<a class="code" href="structtcb.html#m15">retries_left</a> ) {00980                                         soc-&gt;<a class="code" href="structtcb.html#m15">retries_left</a>--;00981                                         <span class="keywordflow">if</span>(soc-&gt;<a class="code" href="structtcb.html#m0">state</a> == <a class="code" href="tcp__ip_8h.html#a47">TCP_STATE_SYN_SENT</a>)00982                                                 <a class="code" href="timers_8c.html#a6">init_timer</a>(soc-&gt;<a class="code" href="structtcb.html#m14">retransmit_timerh</a>, <a class="code" href="group__opentcp__config.html#a13">TCP_SYN_RETRY_TOUT</a>*<a class="code" href="timers_8h.html#a1">TIMERTIC</a>);00983                                         <span class="keywordflow">else</span>00984                                                 <a class="code" href="timers_8c.html#a6">init_timer</a>(soc-&gt;<a class="code" href="structtcb.html#m14">retransmit_timerh</a>, <a class="code" href="group__opentcp__config.html#a11">TCP_DEF_RETRY_TOUT</a>*<a class="code" href="timers_8h.html#a1">TIMERTIC</a>);00985 00986                                         <a class="code" href="tcp_8c.html#a16">tcp_sendcontrol</a>(handle);00987                                         00988                                         handle++;00989                 00990                                         <span class="keywordflow">return</span>;                         00991                                 } <span class="keywordflow">else</span> {00992                                         <span class="comment">/* Retries used up      */</span>00993                                         TCP_DEBUGOUT(<span class="stringliteral">"Retries used up, resetting\r\n"</span>);00994                                         00995                                         <span class="keywordflow">if</span>(soc-&gt;<a class="code" href="structtcb.html#m1">type</a> &amp; <a class="code" href="tcp__ip_8h.html#a39">TCP_TYPE_SERVER</a> )00996                                                 <a class="code" href="tcp_8c.html#a20">tcp_newstate</a>(soc, <a class="code" href="tcp__ip_8h.html#a45">TCP_STATE_LISTENING</a>);00997                                         <span class="keywordflow">else</span>00998                                                 <a class="code" href="tcp_8c.html#a20">tcp_newstate</a>(soc, <a class="code" href="tcp__ip_8h.html#a44">TCP_STATE_CLOSED</a>);00999                                         01000                                         soc-&gt;<a class="code" href="structtcb.html#m7">myflags</a> = TCP_FLAG_RESET;01001                                         <a class="code" href="tcp_8c.html#a16">tcp_sendcontrol</a>(handle);01002                                         01003                                         <span class="comment">/* Inform application   */</span>01004 01005                                         soc-&gt;<a class="code" href="structtcb.html#m16">event_listener</a>(handle, <a class="code" href="tcp__ip_8h.html#a57">TCP_EVENT_ABORT</a>, soc-&gt;<a class="code" href="structtcb.html#m3">rem_ip</a>, soc-&gt;<a class="code" href="structtcb.html#m4">remport</a>);01006                                         01007                                         handle++;01008                 01009                                         <span class="keywordflow">return</span>;01010                                 }01011                                 01012                                 <span class="keywordflow">break</span>;01013                                 01014                         <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a52">TCP_STATE_TIMED_WAIT</a>:01015                                 01016                                 <span class="comment">/* Is there timeout?    */</span>01017                                 01018                                 <span class="keywordflow">if</span>( <a class="code" href="timers_8c.html#a7">check_timer</a>(soc-&gt;<a class="code" href="structtcb.html#m14">retransmit_timerh</a>) != 0 )01019                                         <span class="keywordflow">break</span>;01020                                         01021                                 TCP_DEBUGOUT(<span class="stringliteral">"Timeout\r\n"</span>);01022                                 01023                                 <span class="keywordflow">if</span>(soc-&gt;<a class="code" href="structtcb.html#m15">retries_left</a>) {01024                                         soc-&gt;<a class="code" href="structtcb.html#m15">retries_left</a>--;01025                                         <a class="code" href="timers_8c.html#a6">init_timer</a>(soc-&gt;<a class="code" href="structtcb.html#m14">retransmit_timerh</a>, <a class="code" href="group__opentcp__config.html#a11">TCP_DEF_RETRY_TOUT</a>*<a class="code" href="timers_8h.html#a1">TIMERTIC</a>);01026                                         <span class="keywordflow">break</span>;01027                                 }01028                                 01029                                 <span class="keywordflow">if</span>(soc-&gt;<a class="code" href="structtcb.html#m1">type</a> &amp; <a class="code" href="tcp__ip_8h.html#a39">TCP_TYPE_SERVER</a> )01030                                         <a class="code" href="tcp_8c.html#a20">tcp_newstate</a>(soc, <a class="code" href="tcp__ip_8h.html#a45">TCP_STATE_LISTENING</a>);01031                                 <span class="keywordflow">else</span>01032                                         <a class="code" href="tcp_8c.html#a20">tcp_newstate</a>(soc, <a class="code" href="tcp__ip_8h.html#a44">TCP_STATE_CLOSED</a>);01033                                         01034                                 <span class="keywordflow">break</span>;01035                         01036                         <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a51">TCP_STATE_LAST_ACK</a>:01037                         <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a48">TCP_STATE_FINW1</a>:01038                         <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a50">TCP_STATE_CLOSING</a>:01039                         01040                                 <span class="comment">/* Is there timeout?    */</span>01041                                 01042                                 <span class="keywordflow">if</span>( <a class="code" href="timers_8c.html#a7">check_timer</a>(soc-&gt;<a class="code" href="structtcb.html#m14">retransmit_timerh</a>) != 0 )01043                                         <span class="keywordflow">break</span>;01044                                         01045                                 TCP_DEBUGOUT(<span class="stringliteral">"Timeout\r\n"</span>);            01046                                                 01047                                 <span class="comment">/* Yep, timeout. Is there reties left?  */</span>01048                                 01049                                 <span class="keywordflow">if</span>( soc-&gt;<a class="code" href="structtcb.html#m15">retries_left</a> ) {01050                                         soc-&gt;<a class="code" href="structtcb.html#m15">retries_left</a>--;01051                                         <a class="code" href="timers_8c.html#a6">init_timer</a>(soc-&gt;<a class="code" href="structtcb.html#m14">retransmit_timerh</a>, <a class="code" href="group__opentcp__config.html#a11">TCP_DEF_RETRY_TOUT</a>*<a class="code" href="timers_8h.html#a1">TIMERTIC</a>);01052                                         soc-&gt;<a class="code" href="structtcb.html#m7">myflags</a> = TCP_FLAG_FIN | TCP_FLAG_ACK;01053                                         <a class="code" href="tcp_8c.html#a16">tcp_sendcontrol</a>(handle);01054                                         01055                                         handle++;01056                 01057 01058                                         <span class="keywordflow">return</span>;                         01059                                 } <span class="keywordflow">else</span> {01060                                         <span class="comment">/* Retries used up      */</span>01061                                         TCP_DEBUGOUT(<span class="stringliteral">"Retries used up, resetting\r\n"</span>);01062                                         01063                                         <span class="keywordflow">if</span>(soc-&gt;<a class="code" href="structtcb.html#m1">type</a> &amp; <a class="code" href="tcp__ip_8h.html#a39">TCP_TYPE_SERVER</a> )01064                                                 <a class="code" href="tcp_8c.html#a20">tcp_newstate</a>(soc, <a class="code" href="tcp__ip_8h.html#a45">TCP_STATE_LISTENING</a>);01065                                         <span class="keywordflow">else</span>01066                                                 <a class="code" href="tcp_8c.html#a20">tcp_newstate</a>(soc, <a class="code" href="tcp__ip_8h.html#a44">TCP_STATE_CLOSED</a>);01067                                         01068                                         soc-&gt;<a class="code" href="structtcb.html#m7">myflags</a> = TCP_FLAG_RESET;01069                                         <a class="code" href="tcp_8c.html#a16">tcp_sendcontrol</a>(handle);01070                                         01071                                

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -