Overview
| Comment: | Use sockaddr_storage instead of sockaddr in OFTCPSocket. This ensures it's big enough and correctly aligned. |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
7a5b65ee4df292ef1dbe7c6db94dc514 |
| User & Date: | js on 2011-07-17 02:03:44 |
| Other Links: | manifest | tags |
Context
|
2011-07-17
| ||
| 02:11 | Include sys/types.h in of_asprintf.m. (check-in: 506c012ec2 user: js tags: trunk) | |
| 02:03 |
Use sockaddr_storage instead of sockaddr in OFTCPSocket. This ensures it's big enough and correctly aligned. (check-in: 7a5b65ee4d user: js tags: trunk) | |
| 01:55 | Define __NO_EXT_QNX in files using unistd.h or fcntl.h. (check-in: da2701ad14 user: js tags: trunk) | |
Changes
Modified src/OFTCPSocket.h from [abc527a77c] to [cffdc41556].
| ︙ | ︙ | |||
32 33 34 35 36 37 38 |
* \brief A class which provides functions to create and use TCP sockets.
*
* To connect to a server, create a socket and connect it.
* To create a server, create a socket, bind it and listen on it.
*/
@interface OFTCPSocket: OFStreamSocket
{
| | | | | 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
* \brief A class which provides functions to create and use TCP sockets.
*
* To connect to a server, create a socket and connect it.
* To create a server, create a socket, bind it and listen on it.
*/
@interface OFTCPSocket: OFStreamSocket
{
BOOL isListening;
struct sockaddr_storage *sockAddr;
socklen_t sockAddrLen;
}
/**
* Connect the OFTCPSocket to the specified destination.
*
* \param host The host to connect to
* \param port The port on the host to connect to
|
| ︙ | ︙ |
Modified src/OFTCPSocket.m from [d0efc140d4] to [2ff5fb89f7].
| ︙ | ︙ | |||
347 348 349 350 351 352 353 |
isListening = YES;
}
- (OFTCPSocket*)accept
{
OFTCPSocket *newSocket;
| | | > | 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 |
isListening = YES;
}
- (OFTCPSocket*)accept
{
OFTCPSocket *newSocket;
struct sockaddr_storage *addr;
socklen_t addrLen;
int newSock;
newSocket = [[[isa alloc] init] autorelease];
addrLen = sizeof(struct sockaddr);
@try {
addr = [newSocket allocMemoryWithSize: sizeof(struct sockaddr)];
} @catch (id e) {
[newSocket release];
@throw e;
}
if ((newSock = accept(sock, (struct sockaddr*)addr,
&addrLen)) == INVALID_SOCKET) {
[newSocket release];
@throw [OFAcceptFailedException newWithClass: isa
socket: self];
}
newSocket->sock = newSock;
newSocket->sockAddr = addr;
|
| ︙ | ︙ | |||
395 396 397 398 399 400 401 |
@throw [OFInvalidArgumentException newWithClass: isa
selector: _cmd];
#ifdef HAVE_THREADSAFE_GETADDRINFO
host = [self allocMemoryWithSize: NI_MAXHOST];
@try {
| | | | 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 |
@throw [OFInvalidArgumentException newWithClass: isa
selector: _cmd];
#ifdef HAVE_THREADSAFE_GETADDRINFO
host = [self allocMemoryWithSize: NI_MAXHOST];
@try {
if (getnameinfo((struct sockaddr*)sockAddr, sockAddrLen, host,
NI_MAXHOST, NULL, 0, NI_NUMERICHOST))
@throw [OFAddressTranslationFailedException
newWithClass: isa];
return [OFString stringWithCString: host];
} @finally {
[self freeMemory: host];
}
|
| ︙ | ︙ |