📄 smtp__client_8c-source.html
字号:
00263 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a56">TCP_EVENT_CLOSE</a>:00264 00265 smtpc_changestate(<a class="code" href="smtp__client_8h.html#a2">SMTP_CLOSED</a>);00266 <a class="code" href="smtp__client_8c.html#a8">smtp_client</a>.unacked = 0;00267 <span class="keywordflow">return</span>(1);00268 00269 <span class="keywordflow">break</span>;00270 00271 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a58">TCP_EVENT_ACK</a>:00272 00273 <span class="comment">/* Our message is acked */</span>00274 00275 <a class="code" href="smtp__client_8c.html#a8">smtp_client</a>.unacked = 0;00276 00277 <span class="keywordflow">break</span>;00278 00279 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a60">TCP_EVENT_DATA</a>:00280 00281 <span class="comment">/* Do we have unacked data? */</span>00282 00283 <span class="keywordflow">if</span>(<a class="code" href="smtp__client_8c.html#a8">smtp_client</a>.unacked)00284 <span class="keywordflow">return</span>(-1);00285 00286 <span class="comment">/* Get reply from server */</span>00287 00288 <span class="keywordflow">if</span>(par1 < 3) <span class="comment">/* Long enough? */</span>00289 <span class="keywordflow">return</span>(-1);00290 00291 <span class="comment">/* Get command */</span>00292 00293 <a class="code" href="system_8h.html#a14">NETWORK_RECEIVE_INITIALIZE</a>(received_tcp_packet.buf_index);00294 cmd = <a class="code" href="system_8h.html#a9">RECEIVE_NETWORK_B</a>();00295 cmd += <a class="code" href="system_8h.html#a9">RECEIVE_NETWORK_B</a>();00296 cmd += <a class="code" href="system_8h.html#a9">RECEIVE_NETWORK_B</a>();00297 00298 <span class="keywordflow">switch</span>(<a class="code" href="smtp__client_8c.html#a8">smtp_client</a>.state) { 00299 00300 <span class="keywordflow">case</span> <a class="code" href="smtp__client_8h.html#a5">SMTP_CONNECTION_OPENED</a>:00301 00302 <span class="keywordflow">if</span>(cmd == <a class="code" href="smtp__client_8h.html#a22">SMTP_CMD_SERVER_READY</a>) {00303 DEBUGOUT(<span class="stringliteral">"SMTP Server is ready\r\n"</span>);00304 smtpc_changestate(<a class="code" href="smtp__client_8h.html#a6">SMTP_SERVER_READY</a>);00305 <span class="keywordflow">return</span>(1);00306 }00307 00308 <span class="keywordflow">break</span>;00309 00310 <span class="keywordflow">case</span> <a class="code" href="smtp__client_8h.html#a7">SMTP_HELO_SENT</a>:00311 00312 <span class="keywordflow">if</span>(cmd == <a class="code" href="smtp__client_8h.html#a23">SMTP_CMD_OK</a>) { 00313 DEBUGOUT(<span class="stringliteral">"HELO acked by SMTP server\r\n"</span>);00314 smtpc_changestate(<a class="code" href="smtp__client_8h.html#a8">SMTP_HELO_ACKED</a>);00315 <span class="keywordflow">return</span>(1);00316 }00317 00318 <span class="keywordflow">break</span>; 00319 00320 <span class="keywordflow">case</span> <a class="code" href="smtp__client_8h.html#a9">SMTP_MAILFROM_SENT</a>:00321 00322 <span class="keywordflow">if</span>(cmd == <a class="code" href="smtp__client_8h.html#a23">SMTP_CMD_OK</a>) {00323 DEBUGOUT(<span class="stringliteral">"MAIL FROM Acked by SMTP server\r\n"</span>);00324 smtpc_changestate(<a class="code" href="smtp__client_8h.html#a10">SMTP_MAILFROM_ACKED</a>);00325 <span class="keywordflow">return</span>(1);00326 }00327 00328 <span class="keywordflow">break</span>; 00329 00330 <span class="keywordflow">case</span> <a class="code" href="smtp__client_8h.html#a11">SMTP_RCPTTO_SENT</a>: 00331 00332 <span class="keywordflow">if</span>(cmd == <a class="code" href="smtp__client_8h.html#a23">SMTP_CMD_OK</a>) {00333 DEBUGOUT(<span class="stringliteral">"RCPT TO Acked by SMTP server\r\n"</span>);00334 smtpc_changestate(<a class="code" href="smtp__client_8h.html#a12">SMTP_RCPTTO_ACKED</a>);00335 <span class="keywordflow">return</span>(1);00336 }00337 00338 <span class="keywordflow">break</span>; 00339 00340 <span class="keywordflow">case</span> <a class="code" href="smtp__client_8h.html#a13">SMTP_DATAREQ_SENT</a>:00341 00342 <span class="keywordflow">if</span>(cmd == <a class="code" href="smtp__client_8h.html#a24">SMTP_CMD_DATAOK</a>) {00343 DEBUGOUT(<span class="stringliteral">"DATA Acked by SMTP Server\r\n"</span>);00344 smtpc_changestate(<a class="code" href="smtp__client_8h.html#a14">SMTP_DATAREQ_ACKED</a>);00345 <span class="keywordflow">return</span>(1);00346 }00347 00348 <span class="keywordflow">break</span>; 00349 00350 <span class="keywordflow">case</span> <a class="code" href="smtp__client_8h.html#a18">SMTP_DATAEND_SENT</a>:00351 00352 <span class="keywordflow">if</span>(cmd == <a class="code" href="smtp__client_8h.html#a23">SMTP_CMD_OK</a>) {00353 DEBUGOUT(<span class="stringliteral">"CRLF.CRLF Acked by SMTP Server\r\n"</span>);00354 smtpc_changestate(<a class="code" href="smtp__client_8h.html#a19">SMTP_DATAEND_ACKED</a>);00355 <span class="keywordflow">return</span>(1);00356 }00357 00358 <span class="keywordflow">break</span>; 00359 00360 <span class="keywordflow">case</span> <a class="code" href="smtp__client_8h.html#a20">SMTP_QUIT_SENT</a>:00361 00362 <span class="keywordflow">if</span>(cmd == <a class="code" href="smtp__client_8h.html#a25">SMTP_CMD_QUITOK</a>) {00363 DEBUGOUT(<span class="stringliteral">"QUIT Acked by SMTP Server\r\n"</span>);00364 smtpc_changestate(<a class="code" href="smtp__client_8h.html#a21">SMTP_QUIT_ACKED</a>);00365 <span class="keywordflow">return</span>(1);00366 }00367 00368 <span class="keywordflow">break</span>;00369 00370 <span class="keywordflow">default</span>:00371 <span class="keywordflow">break</span>;00372 00373 00374 }00375 00376 00377 <span class="keywordflow">return</span>(1);00378 00379 00380 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a59">TCP_EVENT_REGENERATE</a>:00381 00382 <span class="comment">/* Send last packet again */</span>00383 00384 DEBUGOUT(<span class="stringliteral">"SMTP is regenerating...\r\n"</span>);00385 00386 <span class="keywordflow">switch</span> (<a class="code" href="smtp__client_8c.html#a8">smtp_client</a>.state) {00387 00388 <span class="keywordflow">case</span> <a class="code" href="smtp__client_8h.html#a7">SMTP_HELO_SENT</a>:00389 smtpc_sendhelo();00390 <span class="keywordflow">return</span>(1);00391 00392 <span class="keywordflow">case</span> <a class="code" href="smtp__client_8h.html#a9">SMTP_MAILFROM_SENT</a>:00393 smtpc_sendmailfrom();00394 <span class="keywordflow">return</span>(1);00395 00396 <span class="keywordflow">case</span> <a class="code" href="smtp__client_8h.html#a11">SMTP_RCPTTO_SENT</a>:00397 smtpc_sendrcptto();00398 <span class="keywordflow">return</span>(1);00399 00400 <span class="keywordflow">case</span> <a class="code" href="smtp__client_8h.html#a13">SMTP_DATAREQ_SENT</a>:00401 smtpc_senddatareq();00402 <span class="keywordflow">return</span>(1);00403 00404 <span class="keywordflow">case</span> <a class="code" href="smtp__client_8h.html#a15">SMTP_BODY_SENT</a>:00405 smtpc_sendbody();00406 <span class="keywordflow">return</span>(1); 00407 00408 <span class="keywordflow">case</span> <a class="code" href="smtp__client_8h.html#a16">SMTP_SENDING_DATA</a>:00409 smtpc_senddata();00410 <span class="keywordflow">return</span>(1);00411 00412 <span class="keywordflow">case</span> <a class="code" href="smtp__client_8h.html#a18">SMTP_DATAEND_SENT</a>: 00413 smtpc_senddataend();00414 <span class="keywordflow">return</span>(1);00415 00416 <span class="keywordflow">case</span> <a class="code" href="smtp__client_8h.html#a20">SMTP_QUIT_SENT</a>:00417 smtpc_sendquit();00418 <span class="keywordflow">return</span>(1);00419 00420 <span class="keywordflow">default</span>:00421 <span class="keywordflow">return</span>(-1);00422 }00423 00424 00425 <span class="keywordflow">break</span>;00426 00427 00428 <span class="keywordflow">default</span>:00429 <span class="keywordflow">return</span>(-1);00430 } 00431 00432 <span class="keywordflow">return</span>(-1);00433 00434 }00435 00436 <span class="comment">/********************************************************************************</span>00437 <span class="comment">Function: smtpc_run</span>00438 <span class="comment"></span>00439 <span class="comment">Parameters: void </span>00440 <span class="comment"> </span>00441 <span class="comment">Return val: void</span>00442 <span class="comment"> </span>00443 <span class="comment">Date: 21.7.2002</span>00444 <span class="comment"></span>00445 <span class="comment">Desc: This function is main 'thread' of SMTP client program</span>00446 <span class="comment"> and should be called periodically when SMTP client is</span>00447 <span class="comment"> active. This function is responsible of sending commands and</span>00448 <span class="comment"> data to SMTP server and making callbacks to user function stubs.</span>00449 <span class="comment">*********************************************************************************/</span>00450 00451 00452 <span class="keywordtype">void</span> smtpc_run (<span class="keywordtype">void</span>)00453 {00454 <span class="comment">/* On that function we can send data when called by main loop */</span>00455 00456 <span class="keywordflow">if</span>( <a class="code" href="smtp__client_8c.html#a0">smtpc_init_done</a> == 0 )00457 <span class="keywordflow">return</span>;00458 00459 <span class="keywordflow">if</span>( <a class="code" href="smtp__client_8c.html#a8">smtp_client</a>.state < <a class="code" href="smtp__client_8h.html#a3">SMTP_OPEN_REQUESTED</a>)00460 <span class="keywordflow">return</span>;00461 00462 <span class="comment">/* Is there timeout of some sort? */</span>00463 00464 <span class="keywordflow">if</span>(<a class="code" href="timers_8c.html#a7">check_timer</a>(<a class="code" href="smtp__client_8c.html#a8">smtp_client</a>.tmrhandle) == 0) {00465 <span class="comment">/* Yep */</span>00466 <a class="code" href="tcp_8c.html#a11">tcp_abort</a>(<a class="code" href="smtp__client_8c.html#a8">smtp_client</a>.sochandle);00467 smtpc_changestate(<a class="code" href="smtp__client_8h.html#a2">SMTP_CLOSED</a>);00468 00469 <span class="comment">/* Make user callback */</span>00470 <a class="code" href="smtpc__callbacks_8c.html#a46">smtpc_error</a>();00471 <span class="keywordflow">return</span>;00472 00473 } 00474 00475 <span class="keywordflow">if</span>( <a class="code" href="smtp__client_8c.html#a8">smtp_client</a>.state == <a class="code" href="smtp__client_8h.html#a3">SMTP_OPEN_REQUESTED</a>) {00476 <span class="comment">/* We are on this state because user has requested connection */</span>00477 <span class="comment">/* but connection is not yet opened. */</span>00478 <span class="comment">/* Try to get TCP stack to accept our connection request */</span>00479 00480 <a class="code" href="tcp_8c.html#a11">tcp_abort</a>(<a class="code" href="smtp__client_8c.html#a8">smtp_client</a>.sochandle); <span class="comment">/* Release old connection */</span>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -