summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/base/downServer.c2
-rw-r--r--src/base/net_multiplayer.c2
-rw-r--r--src/base/server.c10
-rw-r--r--src/base/udp_server.c6
-rw-r--r--src/client/client.c8
-rw-r--r--src/client/client.h2
-rw-r--r--src/net/tcp.c25
-rw-r--r--src/net/tcp.h6
-rw-r--r--src/net/udp.c38
-rw-r--r--src/net/udp.h6
-rw-r--r--src/screen/screen_downArena.c6
11 files changed, 72 insertions, 39 deletions
diff --git a/src/base/downServer.c b/src/base/downServer.c
index 3781ad9..46307cb 100644
--- a/src/base/downServer.c
+++ b/src/base/downServer.c
@@ -127,7 +127,7 @@ static void destroyClient(client_ds_t *client)
int initDownServer(char *ip4, int port4)
{
- sock_server_tcp = bindTcpSocket(ip4, port4, PROTO_TCPv4);
+ sock_server_tcp = bindTcpSocket(ip4, port4);
if( sock_server_tcp == NULL )
{
diff --git a/src/base/net_multiplayer.c b/src/base/net_multiplayer.c
index f59b3b2..198abe7 100644
--- a/src/base/net_multiplayer.c
+++ b/src/base/net_multiplayer.c
@@ -71,7 +71,7 @@ int initNetMuliplayer(int type, char *ip, int port, int proto)
#ifndef PUBLIC_SERVER
case NET_GAME_TYPE_CLIENT:
- if (initClient(ip, port, proto) != 0) {
+ if (initClient(ip, port) != 0) {
fprintf(stderr, _("Unable to inicialize network game as client!\n"));
netGameType = NET_GAME_TYPE_NONE;
return -1;
diff --git a/src/base/server.c b/src/base/server.c
index 2112927..6471b46 100644
--- a/src/base/server.c
+++ b/src/base/server.c
@@ -238,13 +238,21 @@ int initServer(char *ip4, int port4, char *ip6, int port6)
setServerMaxClients(SERVER_MAX_CLIENTS);
setServerTimer();
+ //printf("%s %d %s %d\n", ip4, port4, ip6, port6);
ret = initUdpServer(ip4, port4, ip6, port6);
if (ret == 0) {
return -1;
}
- initDownServer(ip4, port4);
+ if( ip4 != NULL )
+ {
+ initDownServer(ip4, port4);
+ }
+ else if( ip6 != NULL )
+ {
+ initDownServer(ip6, port6);
+ }
return ret;
}
diff --git a/src/base/udp_server.c b/src/base/udp_server.c
index a469a3a..0e211f3 100644
--- a/src/base/udp_server.c
+++ b/src/base/udp_server.c
@@ -93,7 +93,7 @@ int initUdpServer(char *ip4, int port4, char *ip6, int port6)
ret = 0;
if (ip4 != NULL) {
- sock_server_udp = bindUdpSocket(ip4, port4, PROTO_UDPv4);
+ sock_server_udp = bindUdpSocket(ip4, port4);
if (sock_server_udp != NULL) {
ret++;
@@ -104,7 +104,7 @@ int initUdpServer(char *ip4, int port4, char *ip6, int port6)
}
if (ip6 != NULL) {
- sock_server_udp_second = bindUdpSocket(ip6, port6, PROTO_UDPv6);
+ sock_server_udp_second = bindUdpSocket(ip6, port6);
if (sock_server_udp_second != NULL) {
ret++;
@@ -163,7 +163,7 @@ static void eventClientUdpSelect(sock_udp_t * sock_server)
assert(sock_server != NULL);
- sock_client = newSockUdp(sock_server->proto);
+ sock_client = newSockUdp();
isCreateNewClient = FALSE;
memset(listRecvMsg, 0, STR_SIZE);
diff --git a/src/client/client.c b/src/client/client.c
index e92a238..74d6b0a 100644
--- a/src/client/client.c
+++ b/src/client/client.c
@@ -88,9 +88,9 @@ static proto_cmd_client_t *findCmdProto(char *msg)
return NULL;
}
-static int initUdpClient(char *ip, int port, int proto)
+static int initUdpClient(char *ip, int port)
{
- sock_server_udp = connectUdpSocket(ip, port, proto);
+ sock_server_udp = connectUdpSocket(ip, port);
if (sock_server_udp == NULL) {
return -1;
@@ -101,7 +101,7 @@ static int initUdpClient(char *ip, int port, int proto)
return 0;
}
-int initClient(char *ip, int port, int proto)
+int initClient(char *ip, int port)
{
char name[STR_NAME_SIZE];
int ret;
@@ -119,7 +119,7 @@ int initClient(char *ip, int port, int proto)
clientRecvBuffer = newBuffer(CLIENT_BUFFER_LIMIT);
clientSendBuffer = newBuffer(CLIENT_BUFFER_LIMIT);
- ret = initUdpClient(ip, port, proto);
+ ret = initUdpClient(ip, port);
if (ret < 0) {
return -1;
diff --git a/src/client/client.h b/src/client/client.h
index 6795c92..8ff0d3d 100644
--- a/src/client/client.h
+++ b/src/client/client.h
@@ -11,7 +11,7 @@
# define CLIENT_BUFFER_LIMIT 4096
-extern int initClient(char *ip, int port, int proto);
+extern int initClient(char *ip, int port);
extern void sendServer(char *msg);
extern void eventClient();
extern void quitClient();
diff --git a/src/net/tcp.c b/src/net/tcp.c
index d8a40d8..c52e467 100644
--- a/src/net/tcp.c
+++ b/src/net/tcp.c
@@ -21,13 +21,12 @@
#include "tcp.h"
-sock_tcp_t *newSockTcp(int proto)
+sock_tcp_t *newSockTcp(void)
{
sock_tcp_t *new;
new = malloc(sizeof(sock_tcp_t));
memset(new, 0, sizeof(sock_tcp_t));
- new->proto = proto;
return new;
}
@@ -38,7 +37,16 @@ void destroySockTcp(sock_tcp_t * p)
free(p);
}
-sock_tcp_t *bindTcpSocket(char *address, int port, int proto)
+static int getProto(char *str)
+{
+ if( strstr(str, ".") != NULL )return PROTO_TCPv4;
+ if( strstr(str, ":") != NULL )return PROTO_TCPv6;
+
+ assert( ! "Protocol not detected !" );
+ return -1;
+}
+
+sock_tcp_t *bindTcpSocket(char *address, int port)
{
sock_tcp_t *new;
unsigned long param_setsock = 1;
@@ -47,7 +55,8 @@ sock_tcp_t *bindTcpSocket(char *address, int port, int proto)
assert(port > 0 && port < 65535);
- new = newSockTcp(proto);
+ new = newSockTcp();
+ new->proto = getProto(address);
ret = -1; // no Warnings
assert(new != NULL);
@@ -110,7 +119,8 @@ sock_tcp_t *getTcpNewClient(sock_tcp_t * p)
assert(p != NULL);
assert(p->sock >= 0);
- new = newSockTcp(p->proto);
+ new = newSockTcp();
+ new->proto = p->proto;
if (new->proto == PROTO_TCPv4) {
client_len = sizeof(new->sockAddr);
@@ -170,7 +180,7 @@ int getSockTcpPort(sock_tcp_t * p)
return -1;
}
-sock_tcp_t *connectTcpSocket(char *ip, int port, int proto)
+sock_tcp_t *connectTcpSocket(char *ip, int port)
{
sock_tcp_t *new;
int len;
@@ -179,7 +189,8 @@ sock_tcp_t *connectTcpSocket(char *ip, int port, int proto)
assert(ip != NULL);
assert(port > 0 && port < 65535);
- new = newSockTcp(proto);
+ new = newSockTcp();
+ new->proto = getProto(ip);
ret = -1; // no Warnnings
if (new->proto == PROTO_TCPv4) {
diff --git a/src/net/tcp.h b/src/net/tcp.h
index 88b2c4e..4a3b326 100644
--- a/src/net/tcp.h
+++ b/src/net/tcp.h
@@ -23,13 +23,13 @@ typedef struct struct_sock_tcp_t {
# endif
} sock_tcp_t;
-extern sock_tcp_t *newSockTcp(int proto);
+extern sock_tcp_t *newSockTcp(void);
extern void destroySockTcp(sock_tcp_t * p);
-extern sock_tcp_t *bindTcpSocket(char *addresss, int port, int proto);
+extern sock_tcp_t *bindTcpSocket(char *addresss, int port);
extern sock_tcp_t *getTcpNewClient(sock_tcp_t * p);
extern void getSockTcpIp(sock_tcp_t * p, char *str_ip, int len);
extern int getSockTcpPort(sock_tcp_t * p);
-extern sock_tcp_t *connectTcpSocket(char *ip, int port, int proto);
+extern sock_tcp_t *connectTcpSocket(char *ip, int port);
extern int disableNagle(sock_tcp_t * p);
extern int setTcpSockNonBlock(sock_tcp_t * p);
extern int readTcpSocket(sock_tcp_t * p, void *address, int len);
diff --git a/src/net/udp.c b/src/net/udp.c
index 68e943f..6f5a701 100644
--- a/src/net/udp.c
+++ b/src/net/udp.c
@@ -26,13 +26,21 @@
#include "udp.h"
-sock_udp_t *newSockUdp(int proto)
+static int getProto(char *str)
+{
+ if( strstr(str, ".") != NULL )return PROTO_UDPv4;
+ if( strstr(str, ":") != NULL )return PROTO_UDPv6;
+
+ assert( ! "Protocol not detected !" );
+ return -1;
+}
+
+sock_udp_t *newSockUdp(void)
{
sock_udp_t *new;
new = malloc(sizeof(sock_udp_t));
memset(new, 0, sizeof(sock_udp_t));
- new->proto = proto;
return new;
}
@@ -43,14 +51,15 @@ void destroySockUdp(sock_udp_t * p)
free(p);
}
-sock_udp_t *bindUdpSocket(char *address, int port, int proto)
+sock_udp_t *bindUdpSocket(char *address, int port)
{
sock_udp_t *new;
int res = -1; // no warninng
assert(port > 0 && port < 65535);
- new = newSockUdp(proto);
+ new = newSockUdp();
+ new->proto = getProto(address);
assert(new != NULL);
@@ -104,14 +113,15 @@ sock_udp_t *bindUdpSocket(char *address, int port, int proto)
return new;
}
-sock_udp_t *connectUdpSocket(char *address, int port, int proto)
+sock_udp_t *connectUdpSocket(char *address, int port)
{
sock_udp_t *new;
assert(address != NULL);
assert(port > 0 && port < 65536);
- new = newSockUdp(proto);
+ new = newSockUdp();
+ new->proto = getProto(address);
assert(new != NULL);
@@ -182,7 +192,7 @@ int readUdpSocket(sock_udp_t * src, sock_udp_t * dst, void *address, int len)
assert(dst != NULL);
assert(address != NULL);
- if (dst->proto == PROTO_UDPv4) {
+ if (src->proto == PROTO_UDPv4) {
addrlen = sizeof(src->sockAddr);
#ifndef __WIN32
@@ -197,7 +207,7 @@ int readUdpSocket(sock_udp_t * src, sock_udp_t * dst, void *address, int len)
}
#ifdef SUPPORT_IPv6
- if (dst->proto == PROTO_UDPv6) {
+ if (src->proto == PROTO_UDPv6) {
addrlen = sizeof(src->sockAddr6);
size = recvfrom(src->sock, address, len, 0,
@@ -207,6 +217,7 @@ int readUdpSocket(sock_udp_t * src, sock_udp_t * dst, void *address, int len)
#endif
dst->sock = src->sock;
+ dst->proto = src->proto;
if (size < 0) {
char str_ip[STR_IP_SIZE];
@@ -215,6 +226,7 @@ int readUdpSocket(sock_udp_t * src, sock_udp_t * dst, void *address, int len)
fprintf(stderr, _("Unable to read form socket %d %s %d!\n"), size,
str_ip, getSockUdpPort(dst));
+
#ifdef __WIN32__
WSACleanup();
#endif
@@ -233,14 +245,14 @@ int writeUdpSocket(sock_udp_t * src, sock_udp_t * dst, void *address, int len)
assert(dst != NULL);
assert(address != NULL);
- if (dst->proto == PROTO_UDPv4) {
+ if (src->proto == PROTO_UDPv4) {
addrlen = sizeof(src->sockAddr);
size = sendto(src->sock, address, len, 0,
(struct sockaddr *) &dst->sockAddr, addrlen);
}
#ifdef SUPPORT_IPv6
- if (dst->proto == PROTO_UDPv6) {
+ if (src->proto == PROTO_UDPv6) {
addrlen = sizeof(src->sockAddr6);
size = sendto(src->sock, address, len, 0,
@@ -253,8 +265,10 @@ int writeUdpSocket(sock_udp_t * src, sock_udp_t * dst, void *address, int len)
getSockUdpIp(dst, str_ip, STR_IP_SIZE);
- fprintf(stderr, _("Unable to write on socket %d %s %d!\n"), size,
- str_ip, getSockUdpPort(dst));
+ fprintf(stderr, _("Unable to write on socket %d %s %d %d!\n"), size,
+ str_ip, getSockUdpPort(dst), dst->proto);
+
+ //assert(0);
#ifdef __WIN32__
WSACleanup();
#endif
diff --git a/src/net/udp.h b/src/net/udp.h
index 97541c6..c203323 100644
--- a/src/net/udp.h
+++ b/src/net/udp.h
@@ -28,10 +28,10 @@ typedef struct struct_sock_udp_t {
struct sockaddr_in sockAddr;
} sock_udp_t;
-extern sock_udp_t *newSockUdp(int proto);
+extern sock_udp_t *newSockUdp(void);
extern void destroySockUdp(sock_udp_t * p);
-extern sock_udp_t *bindUdpSocket(char *address, int port, int proto);
-extern sock_udp_t *connectUdpSocket(char *address, int port, int proto);
+extern sock_udp_t *bindUdpSocket(char *address, int port);
+extern sock_udp_t *connectUdpSocket(char *address, int port);
extern int setUdpSockNonBlock(sock_udp_t * p);
extern int readUdpSocket(sock_udp_t * src, sock_udp_t * dst, void *address,
int len);
diff --git a/src/screen/screen_downArena.c b/src/screen/screen_downArena.c
index 94b2387..d26621b 100644
--- a/src/screen/screen_downArena.c
+++ b/src/screen/screen_downArena.c
@@ -52,7 +52,7 @@ static int countSendMsg;
static void setStatusString(char *s)
{
- //printf("status -> %s\n", s);
+ printf("status -> %s\n", s);
destroyWidgetLabel(label_status);
label_status = newWidgetLabel(s, WINDOW_SIZE_X / 2, 250, WIDGET_LABEL_CENTER);
}
@@ -62,7 +62,7 @@ static void connectToDownServer()
char status[STR_SIZE];
char msg[STR_PROTO_SIZE];
- sock_server_tcp = connectTcpSocket(getSettingIP(), getSettingPort(), PROTO_TCPv4);
+ sock_server_tcp = connectTcpSocket(getSettingIP(), getSettingPort());
if( sock_server_tcp == NULL )
{
@@ -130,7 +130,7 @@ void startScreenDownArena()
strcpy(str_status, "none");
memset(arenaNetName, 0, STR_SIZE);
- sock_server_udp = connectUdpSocket(getSettingIP(), getSettingPort(), PROTO_UDPv4);
+ sock_server_udp = connectUdpSocket(getSettingIP(), getSettingPort());
if (sock_server_udp == NULL)
{