diff options
Diffstat (limited to 'src/libjin/3rdparty/tekcos')
-rw-r--r-- | src/libjin/3rdparty/tekcos/tekcos.c | 56 | ||||
-rw-r--r-- | src/libjin/3rdparty/tekcos/tekcos.h | 6 |
2 files changed, 31 insertions, 31 deletions
diff --git a/src/libjin/3rdparty/tekcos/tekcos.c b/src/libjin/3rdparty/tekcos/tekcos.c index a1fc94e..0eed75b 100644 --- a/src/libjin/3rdparty/tekcos/tekcos.c +++ b/src/libjin/3rdparty/tekcos/tekcos.c @@ -91,12 +91,11 @@ const char* tk_hltostr(uint32 ip) /* TCP socket */ /********************************************/ -tk_TCPsocket* tk_tcp_open(tk_IPaddress ip) +tk_TCPsocket tk_tcp_open(tk_IPaddress ip) { - tk_TCPsocket* sk; - sk = (tk_TCPsocket*)malloc(sizeof(tk_TCPsocket)); - sk->id = socket(AF_INET, SOCK_STREAM, 0); - if (sk->id == INVALID_SOCKET) + tk_TCPsocket sk; + sk.id = socket(AF_INET, SOCK_STREAM, 0); + if (sk.id == INVALID_SOCKET) { state = TK_COULDNETCREATESOCKET; goto error; @@ -115,36 +114,36 @@ tk_TCPsocket* tk_tcp_open(tk_IPaddress ip) if (ip.host != INADDR_NONE && ip.host != INADDR_ANY) { addr.sin_addr.s_addr = htonl(ip.host); - if (connect(sk->id, (const struct sockaddr*)&addr, sizeof(addr)) == SOCKET_ERROR) + if (connect(sk.id, (const struct sockaddr*)&addr, sizeof(addr)) == SOCKET_ERROR) { state = TK_CONNECTFAILED; goto error; } - sk->type = SOCKET_TCLIENT; + sk.type = SOCKET_TCLIENT; } else { addr.sin_addr.s_addr = htonl(INADDR_ANY); - if (bind(sk->id, (const struct sockaddr*)&addr, sizeof(addr)) == SOCKET_ERROR) + if (bind(sk.id, (const struct sockaddr*)&addr, sizeof(addr)) == SOCKET_ERROR) { state = TK_BINDSOCKETFAILED; goto error; } - if (listen(sk->id, 8) == SOCKET_ERROR) + if (listen(sk.id, 8) == SOCKET_ERROR) { state = TK_LISTENSOCKETFAILED; goto error; } - sk->type = SOCKET_TSERVER; + sk.type = SOCKET_TSERVER; } - sk->remote.host = ntohl(addr.sin_addr.s_addr); - sk->remote.port = ntohs(addr.sin_port); + sk.remote.host = ntohl(addr.sin_addr.s_addr); + sk.remote.port = ntohs(addr.sin_port); return sk; error: - return 0; + return sk; } int tk_tcp_close(tk_TCPsocket* sk) @@ -217,10 +216,11 @@ error: return 0; } -tk_TCPsocket* tk_tcp_accept(tk_TCPsocket* server) +tk_TCPsocket tk_tcp_accept(tk_TCPsocket* server) { // client socket - tk_TCPsocket* csk = (tk_TCPsocket*) malloc(sizeof(tk_TCPsocket)); + tk_TCPsocket csk; + memset(&csk, 0, sizeof(csk)); if (server->type != SOCKET_TSERVER) { state = TK_WRONGSOCKETTPYE; @@ -229,21 +229,21 @@ tk_TCPsocket* tk_tcp_accept(tk_TCPsocket* server) struct sockaddr_in addr; memset(&addr, 0, sizeof(addr)); int addr_len = sizeof(addr); - csk->id = accept(server->id, (struct sockaddr *)&addr, &addr_len); - if (csk->id == INVALID_SOCKET) + csk.id = accept(server->id, (struct sockaddr *)&addr, &addr_len); + if (csk.id == INVALID_SOCKET) { state = TK_INVALIDSOCKET; goto error; } - csk->remote.host = ntohl(addr.sin_addr.s_addr); - csk->remote.port = ntohs(addr.sin_port); + csk.remote.host = ntohl(addr.sin_addr.s_addr); + csk.remote.port = ntohs(addr.sin_port); - csk->type = SOCKET_TCLIENT; + csk.type = SOCKET_TCLIENT; return csk; error: - return 0; + return csk; } int tk_tcp_nonblocking(tk_TCPsocket* sk) @@ -304,12 +304,12 @@ int tk_tcp_blocking(tk_TCPsocket* sk) * ***************************************************/ -tk_UDPsocket* tk_udp_open(uint16 portnumber) +tk_UDPsocket tk_udp_open(uint16 portnumber) { - tk_UDPsocket* sk; - sk = (tk_UDPsocket*)malloc(sizeof(tk_UDPsocket)); - sk->id = socket(AF_INET, SOCK_DGRAM, 0); - if (sk->id == INVALID_SOCKET) + tk_UDPsocket sk; + memset(&sk, 0, sizeof(sk)); + sk.id = socket(AF_INET, SOCK_DGRAM, 0); + if (sk.id == INVALID_SOCKET) { state = TK_COULDNETCREATESOCKET; goto error; @@ -325,12 +325,12 @@ tk_UDPsocket* tk_udp_open(uint16 portnumber) addr.sin_addr.s_addr = htonl(INADDR_ANY); addr.sin_port = htons(portnumber); addr.sin_family = AF_INET; - bind(sk->id, (const struct sockaddr*)&addr, sizeof(addr)); + bind(sk.id, (const struct sockaddr*)&addr, sizeof(addr)); return sk; } error: - return 0; + return sk; } int tk_udp_sendto(tk_UDPsocket* sk, tk_UDPpack* pack) diff --git a/src/libjin/3rdparty/tekcos/tekcos.h b/src/libjin/3rdparty/tekcos/tekcos.h index 0ec22fd..c78771a 100644 --- a/src/libjin/3rdparty/tekcos/tekcos.h +++ b/src/libjin/3rdparty/tekcos/tekcos.h @@ -55,11 +55,11 @@ typedef struct // INADDR_ANY, creeate a listenning server socket, // otherwise, connect to a remote server with given // ip address. -tk_TCPsocket* tk_tcp_open(tk_IPaddress ip); +tk_TCPsocket tk_tcp_open(tk_IPaddress ip); int tk_tcp_close(tk_TCPsocket* sk); int tk_tcp_send(tk_TCPsocket* client, const void* buffer, int bsize, int* len); int tk_tcp_recv(tk_TCPsocket* client, char* buffer, int bsize, int* len); -tk_TCPsocket* tk_tcp_accept(tk_TCPsocket* server); +tk_TCPsocket tk_tcp_accept(tk_TCPsocket* server); int tk_tcp_nonblocking(tk_TCPsocket* sk); int tk_tcp_blocking(tk_TCPsocket* sk); @@ -82,7 +82,7 @@ typedef struct char* data; // data }tk_UDPpack; -tk_UDPsocket* tk_udp_open(uint16 portnumber); +tk_UDPsocket tk_udp_open(uint16 portnumber); int tk_udp_close(tk_UDPsocket* sk); int tk_udp_sendto(tk_UDPsocket* sk, tk_UDPpack* pack); int tk_udp_recvfrom(tk_UDPsocket* sk, tk_UDPpack* pack); |