Sending to a broken socket will no longer cause SIGPIPE signal to be sent back on most *nix systems (those supporting MSG_NOSIGNAL flag) (bugreport:5224)
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@15415 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
056e7c4ed6
commit
5b66b21b67
@ -194,6 +194,10 @@ int sSocket(int af, int type, int protocol)
|
|||||||
#endif
|
#endif
|
||||||
/////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifndef MSG_NOSIGNAL
|
||||||
|
#define MSG_NOSIGNAL 0
|
||||||
|
#endif
|
||||||
|
|
||||||
fd_set readfds;
|
fd_set readfds;
|
||||||
int fd_max;
|
int fd_max;
|
||||||
time_t last_tick;
|
time_t last_tick;
|
||||||
@ -340,7 +344,7 @@ int send_from_fifo(int fd)
|
|||||||
if( session[fd]->wdata_size == 0 )
|
if( session[fd]->wdata_size == 0 )
|
||||||
return 0; // nothing to send
|
return 0; // nothing to send
|
||||||
|
|
||||||
len = sSend(fd, (const char *) session[fd]->wdata, (int)session[fd]->wdata_size, 0);
|
len = sSend(fd, (const char *) session[fd]->wdata, (int)session[fd]->wdata_size, MSG_NOSIGNAL);
|
||||||
|
|
||||||
if( len == SOCKET_ERROR )
|
if( len == SOCKET_ERROR )
|
||||||
{//An exception has occured
|
{//An exception has occured
|
||||||
|
Loading…
x
Reference in New Issue
Block a user