📄 http__server_8c-source.html
字号:
00207 00208 <span class="keywordflow">return</span>; 00209 00210 }00211 00212 <span class="comment">/* More data to send */</span>00213 00214 len = <a class="code" href="https__callbacks_8c.html#a2">https_loadbuffer</a>(ses, &net_buf[<a class="code" href="tcp__ip_8h.html#a61">TCP_APP_OFFSET</a>], <a class="code" href="group__opentcp__config.html#a4">NETWORK_TX_BUFFER_SIZE</a> - <a class="code" href="tcp__ip_8h.html#a61">TCP_APP_OFFSET</a>);00215 00216 <span class="keywordflow">if</span>(len<0)00217 <span class="keywordflow">return</span>;00218 00219 len = <a class="code" href="tcp_8c.html#a7">tcp_send</a>(https[ses].ownersocket, &net_buf[<a class="code" href="tcp__ip_8h.html#a61">TCP_APP_OFFSET</a>], <a class="code" href="group__opentcp__config.html#a4">NETWORK_TX_BUFFER_SIZE</a> - <a class="code" href="tcp__ip_8h.html#a61">TCP_APP_OFFSET</a>, len); 00220 00221 <span class="keywordflow">if</span>(len<0)00222 {00223 <a class="code" href="tcp_8c.html#a8">tcp_close</a>(https[ses].ownersocket);00224 https_deletesession(ses);00225 00226 ses++;00227 00228 <span class="keywordflow">return</span>; 00229 00230 }00231 00232 https[ses].<a class="code" href="structhttp__server__state.html#m5">funacked</a> = len;00233 00234 00235 <span class="comment">/* Serve another session on next run */</span>00236 00237 ses++;00238 00239 <span class="keywordflow">return</span>; 00240 00241 00242 } 00243 00244 00245 00246 00247 }00248 00249 <span class="comment">/********************************************************************************</span>00250 <span class="comment">Function: https_eventlistener</span>00251 <span class="comment"></span>00252 <span class="comment">Parameters: INT8 cbhandle - handle to TCP socket where event is coming from </span>00253 <span class="comment"> UINT8 event - type of event</span>00254 <span class="comment"> UINT32 par1 - parameter the meaning of depends on event</span>00255 <span class="comment"> UINT32 par2 - parameter the meaning of depends on event</span>00256 <span class="comment"> </span>00257 <span class="comment">Return val: INT32 - depends on event but usually (-1) is error of some</span>00258 <span class="comment"> kind and positive reply means OK</span>00259 <span class="comment"> </span>00260 <span class="comment">Date: 13.10.2002</span>00261 <span class="comment"></span>00262 <span class="comment">Desc: This function is given to TCP socket as function pointer to be</span>00263 <span class="comment"> used by TCP engine to make callbacks to inform about events</span>00264 <span class="comment"> on TCP e.g. arriving data. </span>00265 <span class="comment">*********************************************************************************/</span>00266 00267 00268 INT32 https_eventlistener (INT8 cbhandle, UINT8 event, UINT32 par1, UINT32 par2)00269 {00270 <span class="comment">/* This function is called by TCP stack to inform about events */</span>00271 00272 INT16 i;00273 INT16 session;00274 00275 <span class="keywordflow">if</span>( <a class="code" href="http__server_8c.html#a0">https_enabled</a> == 0)00276 <span class="keywordflow">return</span>(-1);00277 00278 <span class="keywordflow">if</span>(cbhandle < 0)00279 <span class="keywordflow">return</span>(-1); 00280 00281 <span class="comment">/* Search for rigth session */</span>00282 00283 session = https_searchsession(cbhandle); 00284 00285 <span class="keywordflow">switch</span>( event )00286 {00287 00288 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a54">TCP_EVENT_CONREQ</a>:00289 00290 <span class="comment">/* Do we have a session for requesting socket? */</span>00291 00292 <span class="keywordflow">if</span>(session < 0)00293 <span class="keywordflow">return</span>(-1);00294 00295 00296 <span class="comment">/* Try to get new session */</span>00297 00298 session = https_bindsession(cbhandle);00299 00300 <span class="keywordflow">if</span>(session < 0) <span class="comment">/* No resources */</span>00301 <span class="keywordflow">return</span>(-1);00302 00303 00304 <span class="keywordflow">return</span>(1);00305 00306 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a57">TCP_EVENT_ABORT</a>:00307 00308 <span class="keywordflow">if</span>(session < 0)00309 <span class="keywordflow">return</span>(1);00310 00311 https_deletesession((UINT8)session); 00312 00313 <span class="keywordflow">return</span>(1);00314 00315 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a55">TCP_EVENT_CONNECTED</a>:00316 00317 <span class="keywordflow">if</span>(session < 0)00318 <span class="keywordflow">return</span>(-1);00319 00320 https_activatesession((UINT8)session);00321 00322 <span class="keywordflow">return</span>(1);00323 00324 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a56">TCP_EVENT_CLOSE</a>:00325 00326 <span class="keywordflow">if</span>(session < 0)00327 <span class="keywordflow">return</span>(-1);00328 00329 https_deletesession((UINT8)session); 00330 00331 <span class="keywordflow">return</span>(1); 00332 00333 00334 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a58">TCP_EVENT_ACK</a>:00335 00336 <span class="keywordflow">if</span>(session < 0)00337 <span class="keywordflow">return</span>(-1);00338 00339 https[session].<a class="code" href="structhttp__server__state.html#m4">fpoint</a> += https[session].<a class="code" href="structhttp__server__state.html#m5">funacked</a>;00340 https[session].<a class="code" href="structhttp__server__state.html#m5">funacked</a> = 0;00341 00342 <span class="keywordflow">return</span>(1);00343 00344 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a60">TCP_EVENT_DATA</a>:00345 00346 <span class="comment">/* Check for GET request */</span>00347 00348 <span class="keywordflow">if</span>(session < 0)00349 <span class="keywordflow">return</span>(-1);00350 00351 <span class="keywordflow">if</span>(https[session].<a class="code" href="structhttp__server__state.html#m2">fstart</a> == 0)00352 {00353 <span class="keywordflow">if</span>(par1 <= 3)00354 <span class="keywordflow">return</span>(1);00355 00356 <span class="comment">/* Check for GET */</span>00357 00358 <span class="keywordflow">if</span>(<a class="code" href="system_8h.html#a9">RECEIVE_NETWORK_B</a>() != <span class="charliteral">'G'</span>)00359 <span class="keywordflow">return</span>(1);00360 <span class="keywordflow">if</span>(<a class="code" href="system_8h.html#a9">RECEIVE_NETWORK_B</a>() != <span class="charliteral">'E'</span>)00361 <span class="keywordflow">return</span>(1); 00362 <span class="keywordflow">if</span>(<a class="code" href="system_8h.html#a9">RECEIVE_NETWORK_B</a>() != <span class="charliteral">'T'</span>)00363 <span class="keywordflow">return</span>(1); 00364 00365 par1 -= 3;00366 00367 <span class="comment">/* Search for '/' */</span>00368 00369 <span class="keywordflow">for</span>(i=0; i<par1; i++)00370 {00371 <span class="keywordflow">if</span>(<a class="code" href="system_8h.html#a9">RECEIVE_NETWORK_B</a>() == <span class="charliteral">'/'</span>)00372 {00373 i++;00374 <span class="keywordflow">break</span>;00375 }00376 } 00377 00378 par1 -= i;00379 00380 <span class="comment">/* Calculate Hash */</span>00381 00382 i = https_calculatehash(par1); 00383 00384 <span class="keywordflow">if</span>(i < 0)00385 {00386 <span class="comment">/* Invalid GET */</span>00387 <span class="keywordflow">return</span>(1);00388 } 00389 00390 <span class="comment">/* Get FileRef */</span>00391 00392 i = <a class="code" href="https__callbacks_8c.html#a1">https_findfile</a>((UINT8)i, (UINT8)session);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -