mirror of
https://github.com/gnustep/libs-base.git
synced 2025-05-31 08:41:03 +00:00
Various minor windows bugfixes and documentation cleanups.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@13167 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
276f72343e
commit
a7641b814c
6 changed files with 148 additions and 28 deletions
|
@ -1447,14 +1447,22 @@ static Class tcpPortClass;
|
|||
NSLog(@"unable to create socket - %s", GSLastErrorStr(errno));
|
||||
DESTROY(port);
|
||||
}
|
||||
#ifndef __MINGW__
|
||||
/*
|
||||
* Under unix, SO_REUSEADDR means that the port can be reused
|
||||
* immediately that this porcess exits. Under windoze it means
|
||||
* that multiple processes can serve the same port simultaneously.
|
||||
* We don't want that windows behavior!
|
||||
*/
|
||||
else if (setsockopt(desc, SOL_SOCKET, SO_REUSEADDR, (char*)&reuse,
|
||||
sizeof(reuse)) < 0)
|
||||
sizeof(reuse)) < 0)
|
||||
{
|
||||
(void) close(desc);
|
||||
NSLog(@"unable to set reuse on socket - %s",
|
||||
GSLastErrorStr(errno));
|
||||
DESTROY(port);
|
||||
}
|
||||
#endif
|
||||
else if (bind(desc, (struct sockaddr *)&sockaddr,
|
||||
sizeof(sockaddr)) < 0)
|
||||
{
|
||||
|
@ -1664,12 +1672,20 @@ static Class tcpPortClass;
|
|||
{
|
||||
NSLog(@"unable to create socket - %s", GSLastErrorStr(errno));
|
||||
}
|
||||
#ifndef __MINGW__
|
||||
/*
|
||||
* Under unix, SO_REUSEADDR means that the port can be reused
|
||||
* immediately that this porcess exits. Under windoze it means
|
||||
* that multiple processes can serve the same port simultaneously.
|
||||
* We don't want that windows behavior!
|
||||
*/
|
||||
else if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char*)&opt,
|
||||
sizeof(opt)) < 0)
|
||||
{
|
||||
(void)close(sock);
|
||||
NSLog(@"unable to set reuse on socket - %s", GSLastErrorStr(errno));
|
||||
}
|
||||
#endif
|
||||
else if ((handle = [GSTcpHandle handleWithDescriptor: sock]) == nil)
|
||||
{
|
||||
(void)close(sock);
|
||||
|
|
|
@ -38,6 +38,8 @@
|
|||
#include <Foundation/NSHost.h>
|
||||
#include <Foundation/NSByteOrder.h>
|
||||
|
||||
#include "../Tools/gdomap.h"
|
||||
|
||||
#if defined(__MINGW__)
|
||||
#include <winsock2.h>
|
||||
#else
|
||||
|
@ -104,8 +106,9 @@ getAddr(NSString* name, NSString* svc, NSString* pcl, struct sockaddr_in *sin)
|
|||
struct servent *sp;
|
||||
|
||||
if (pcl)
|
||||
proto = [pcl cString];
|
||||
|
||||
{
|
||||
proto = [pcl lossyCString];
|
||||
}
|
||||
memset(sin, '\0', sizeof(*sin));
|
||||
sin->sin_family = AF_INET;
|
||||
|
||||
|
@ -122,11 +125,11 @@ getAddr(NSString* name, NSString* svc, NSString* pcl, struct sockaddr_in *sin)
|
|||
name = [host address];
|
||||
|
||||
#ifndef HAVE_INET_ATON
|
||||
sin->sin_addr.s_addr = inet_addr([name cString]);
|
||||
sin->sin_addr.s_addr = inet_addr([name lossyCString]);
|
||||
if (sin->sin_addr.s_addr == INADDR_NONE)
|
||||
return NO;
|
||||
#else
|
||||
if (inet_aton([name cString], &sin->sin_addr) == 0)
|
||||
if (inet_aton([name lossyCString], &sin->sin_addr) == 0)
|
||||
return NO;
|
||||
#endif
|
||||
}
|
||||
|
@ -138,14 +141,15 @@ getAddr(NSString* name, NSString* svc, NSString* pcl, struct sockaddr_in *sin)
|
|||
sin->sin_port = 0;
|
||||
return YES;
|
||||
}
|
||||
else if ((sp = getservbyname([svc cString], proto)) == 0)
|
||||
else if ((sp = getservbyname([svc lossyCString], proto)) == 0)
|
||||
{
|
||||
const char* ptr = [svc cString];
|
||||
const char* ptr = [svc lossyCString];
|
||||
int val = atoi(ptr);
|
||||
|
||||
while (isdigit(*ptr))
|
||||
ptr++;
|
||||
|
||||
{
|
||||
ptr++;
|
||||
}
|
||||
if (*ptr == '\0' && val <= 0xffff)
|
||||
{
|
||||
gsu16 v = val;
|
||||
|
@ -153,8 +157,21 @@ getAddr(NSString* name, NSString* svc, NSString* pcl, struct sockaddr_in *sin)
|
|||
sin->sin_port = GSSwapHostI16ToBig(v);
|
||||
return YES;
|
||||
}
|
||||
else if (strcmp(ptr, "gdomap") == 0)
|
||||
{
|
||||
gsu16 v;
|
||||
#ifdef GDOMAP_PORT_OVERRIDE
|
||||
v = GDOMAP_PORT_OVERRIDE
|
||||
#else
|
||||
v = 538; // IANA allocated port
|
||||
#endif
|
||||
sin->sin_port = GSSwapHostI16ToBig(v);
|
||||
return YES;
|
||||
}
|
||||
else
|
||||
return NO;
|
||||
{
|
||||
return NO;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -37,6 +37,8 @@
|
|||
#include <Foundation/NSHost.h>
|
||||
#include <Foundation/NSByteOrder.h>
|
||||
|
||||
#include "../Tools/gdomap.h"
|
||||
|
||||
#include <winsock2.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
|
@ -71,7 +73,7 @@ getAddr(NSString* name, NSString* svc, NSString* pcl, struct sockaddr_in *sin)
|
|||
struct servent *sp;
|
||||
|
||||
if (pcl)
|
||||
proto = [pcl cString];
|
||||
proto = [pcl lossyCString];
|
||||
|
||||
memset(sin, '\0', sizeof(*sin));
|
||||
sin->sin_family = AF_INET;
|
||||
|
@ -89,11 +91,11 @@ getAddr(NSString* name, NSString* svc, NSString* pcl, struct sockaddr_in *sin)
|
|||
name = [host address];
|
||||
|
||||
#ifndef HAVE_INET_ATON
|
||||
sin->sin_addr.s_addr = inet_addr([name cString]);
|
||||
sin->sin_addr.s_addr = inet_addr([name lossyCString]);
|
||||
if (sin->sin_addr.s_addr == INADDR_NONE)
|
||||
return NO;
|
||||
#else
|
||||
if (inet_aton([name cString], &sin->sin_addr) == 0)
|
||||
if (inet_aton([name lossyCString], &sin->sin_addr) == 0)
|
||||
return NO;
|
||||
#endif
|
||||
}
|
||||
|
@ -105,9 +107,9 @@ getAddr(NSString* name, NSString* svc, NSString* pcl, struct sockaddr_in *sin)
|
|||
sin->sin_port = 0;
|
||||
return YES;
|
||||
}
|
||||
else if ((sp = getservbyname([svc cString], proto)) == 0)
|
||||
else if ((sp = getservbyname([svc lossyCString], proto)) == 0)
|
||||
{
|
||||
const char* ptr = [svc cString];
|
||||
const char* ptr = [svc lossyCString];
|
||||
int val = atoi(ptr);
|
||||
|
||||
while (isdigit(*ptr))
|
||||
|
@ -120,8 +122,21 @@ getAddr(NSString* name, NSString* svc, NSString* pcl, struct sockaddr_in *sin)
|
|||
sin->sin_port = GSSwapHostI16ToBig(v);
|
||||
return YES;
|
||||
}
|
||||
else if (strcmp(ptr, "gdomap") == 0)
|
||||
{
|
||||
gsu16 v;
|
||||
#ifdef GDOMAP_PORT_OVERRIDE
|
||||
v = GDOMAP_PORT_OVERRIDE
|
||||
#else
|
||||
v = 538; // IANA allocated port
|
||||
#endif
|
||||
sin->sin_port = GSSwapHostI16ToBig(v);
|
||||
return YES;
|
||||
}
|
||||
else
|
||||
return NO;
|
||||
{
|
||||
return NO;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -307,8 +322,6 @@ getAddr(NSString* name, NSString* svc, NSString* pcl, struct sockaddr_in *sin)
|
|||
return nil;
|
||||
}
|
||||
|
||||
setsockopt(net, SOL_SOCKET, SO_REUSEADDR, (char *)&status, sizeof(status));
|
||||
|
||||
if (bind(net, (struct sockaddr *)&sin, sizeof(sin)) < 0)
|
||||
{
|
||||
NSLog(@"unable to bind to port %s:%d - %s",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue