socket.patch
uppsrc/Core/Socket.cpp (working copy) | ||
---|---|---|
321 | 321 |
return SetupSocket(); |
322 | 322 |
} |
323 | 323 |
|
324 |
bool TcpSocket::Listen(int port, int listen_count, bool ipv6_, bool reuse) |
|
324 |
bool TcpSocket::Listen(int port, int listen_count, bool ipv6_, bool reuse, void *addr)
|
|
325 | 325 |
{ |
326 | 326 |
Close(); |
327 | 327 |
Init(); |
... | ... | |
340 | 340 |
#endif |
341 | 341 |
{ |
342 | 342 |
Zero(sin6); |
343 |
sin.sin_family = AF_INET6;
|
|
344 |
sin.sin_port = htons(port);
|
|
345 |
sin.sin_addr.s_addr = htonl(INADDR_ANY);
|
|
343 |
sin6.sin6_family = AF_INET6;
|
|
344 |
sin6.sin6_port = htons(port);
|
|
345 |
sin6.sin6_addr = addr?(*(in6_addr*)addr):in6addr_any;
|
|
346 | 346 |
} |
347 | 347 |
else { |
348 | 348 |
Zero(sin); |
349 | 349 |
sin.sin_family = AF_INET; |
350 | 350 |
sin.sin_port = htons(port); |
351 |
sin.sin_addr.s_addr = htonl(INADDR_ANY); |
|
351 |
sin.sin_addr.s_addr = addr?(*(uint32*)addr):htonl(INADDR_ANY);
|
|
352 | 352 |
} |
353 | 353 |
if(reuse) { |
354 | 354 |
int optval = 1; |
uppsrc/Core/Inet.h (working copy) | ||
---|---|---|
186 | 186 |
void Attach(SOCKET socket); |
187 | 187 |
bool Connect(const char *host, int port); |
188 | 188 |
bool Connect(IpAddrInfo& info); |
189 |
bool Listen(int port, int listen_count = 5, bool ipv6 = false, bool reuse = true); |
|
189 |
bool Listen(int port, int listen_count = 5, bool ipv6 = false, bool reuse = true, void* addr = NULL);
|
|
190 | 190 |
bool Accept(TcpSocket& listen_socket); |
191 | 191 |
void Close(); |
192 | 192 |
void Shutdown(); |