Software / code / prosody
Comparison
net/server.lua @ 1952:4a15b176fca8
net.server: Better handling of closing sockets during send
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Wed, 14 Oct 2009 14:09:51 +0100 |
| parent | 1863:51b1612325e6 |
| child | 1953:64538c620450 |
comparison
equal
deleted
inserted
replaced
| 1951:632039101699 | 1952:4a15b176fca8 |
|---|---|
| 361 end | 361 end |
| 362 else | 362 else |
| 363 send( socket, table_concat( bufferqueue, "", 1, bufferqueuelen ), 1, bufferlen ) -- forced send | 363 send( socket, table_concat( bufferqueue, "", 1, bufferqueuelen ), 1, bufferlen ) -- forced send |
| 364 end | 364 end |
| 365 end | 365 end |
| 366 if not handler then return true; end | 366 if socket then |
| 367 _ = shutdown and shutdown( socket ) | 367 _ = shutdown and shutdown( socket ) |
| 368 socket:close( ) | 368 socket:close( ) |
| 369 _sendlistlen = removesocket( _sendlist, socket, _sendlistlen ) | 369 _sendlistlen = removesocket( _sendlist, socket, _sendlistlen ) |
| 370 _socketlist[ socket ] = nil | 370 _socketlist[ socket ] = nil |
| 371 socket = nil | |
| 372 else | |
| 373 out_put "server.lua: socket already closed" | |
| 374 end | |
| 371 if handler then | 375 if handler then |
| 372 _writetimes[ handler ] = nil | 376 _writetimes[ handler ] = nil |
| 373 _closelist[ handler ] = nil | 377 _closelist[ handler ] = nil |
| 374 handler = nil | 378 handler = nil |
| 375 end | 379 end |
| 376 socket = nil | |
| 377 mem_free( ) | 380 mem_free( ) |
| 378 if server then | 381 if server then |
| 379 server.remove( ) | 382 server.remove( ) |
| 380 end | 383 end |
| 381 out_put "server.lua: closed client handler and removed socket from list" | 384 out_put "server.lua: closed client handler and removed socket from list" |