projects
/
NeonServV5.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
*** VERSION 5.5.0 ***
[NeonServV5.git]
/
src
/
ClientSocket.c
diff --git
a/src/ClientSocket.c
b/src/ClientSocket.c
index eab5204dfc720fd08395bba0457750fe2b375062..cdf76f4fea8ef9113c4d309b553d8c473144f971 100644
(file)
--- a/
src/ClientSocket.c
+++ b/
src/ClientSocket.c
@@
-1,4
+1,4
@@
-/* ClientSocket.c - NeonServ v5.
3
+/* ClientSocket.c - NeonServ v5.
5
* Copyright (C) 2011-2012 Philipp Kreil (pk910)
*
* This program is free software: you can redistribute it and/or modify
* Copyright (C) 2011-2012 Philipp Kreil (pk910)
*
* This program is free software: you can redistribute it and/or modify
@@
-74,6
+74,7
@@
struct ClientSocket* create_socket(char *host, int port, char *bindto, char *pas
client->ident = strdup(ident);
client->realname = strdup(realname);
client->user = NULL;
client->ident = strdup(ident);
client->realname = strdup(realname);
client->user = NULL;
+ client->network_name = NULL;
client->flags = 0;
client->bufferpos = 0;
client->traffic_in = 0;
client->flags = 0;
client->bufferpos = 0;
client->traffic_in = 0;
@@
-105,6
+106,7
@@
int connect_socket(struct ClientSocket *client) {
#ifndef WIN32
static int _connect_socket(struct ClientSocket *client) {
if((client->flags & SOCKET_FLAG_CONNECTED)) return 1;
#ifndef WIN32
static int _connect_socket(struct ClientSocket *client) {
if((client->flags & SOCKET_FLAG_CONNECTED)) return 1;
+ client->connection_time = time(0);
int sock;
struct addrinfo hints, *res;
int sock;
struct addrinfo hints, *res;
@@
-206,7
+208,6
@@
static int _connect_socket(struct ClientSocket *client) {
client->sock = sock;
client->flags |= SOCKET_FLAG_CONNECTED | SOCKET_FLAG_RECONNECT;
client->sock = sock;
client->flags |= SOCKET_FLAG_CONNECTED | SOCKET_FLAG_RECONNECT;
- client->connection_time = time(0);
if(client->flags & SOCKET_FLAG_SSL) {
ssl_connect(client);
if(client->flags & SOCKET_FLAG_SSL) {
ssl_connect(client);
@@
-232,6
+233,7
@@
static int _connect_socket(struct ClientSocket *client) {
#else
static int _connect_socket(struct ClientSocket *client) {
if((client->flags & SOCKET_FLAG_CONNECTED)) return 1;
#else
static int _connect_socket(struct ClientSocket *client) {
if((client->flags & SOCKET_FLAG_CONNECTED)) return 1;
+ client->connection_time = time(0);
struct hostent *host;
struct sockaddr_in addr;
int sock;
struct hostent *host;
struct sockaddr_in addr;
int sock;
@@
-261,7
+263,6
@@
static int _connect_socket(struct ClientSocket *client) {
client->sock = sock;
client->flags |= SOCKET_FLAG_CONNECTED | SOCKET_FLAG_RECONNECT;
client->sock = sock;
client->flags |= SOCKET_FLAG_CONNECTED | SOCKET_FLAG_RECONNECT;
- client->connection_time = time(0);
if(client->flags & SOCKET_FLAG_SSL) {
if(client->flags & SOCKET_FLAG_SSL) {
@@
-344,6
+345,8
@@
static void destroy_socket(struct ClientSocket *client, int free_socket) {
free(client->bind);
if(client->pass)
free(client->pass);
free(client->bind);
if(client->pass)
free(client->pass);
+ if(client->network_name)
+ free(client->network_name);
free(client);
} else if(client->flags & SOCKET_FLAG_FAST_JUMP) {
client->flags &= ~SOCKET_FLAG_FAST_JUMP;
free(client);
} else if(client->flags & SOCKET_FLAG_FAST_JUMP) {
client->flags &= ~SOCKET_FLAG_FAST_JUMP;
@@
-359,16
+362,17
@@
int write_socket_force(struct ClientSocket *client, char* msg, int len) {
#else
putlog(LOGLEVEL_RAW, "[send %d] %s", len, msg);
#endif
#else
putlog(LOGLEVEL_RAW, "[send %d] %s", len, msg);
#endif
+ int ret = 1;
if(!(client->flags & SOCKET_FLAG_HAVE_SSL) || ssl_write(client, msg, len) == -2) {
#ifdef WIN32
if(!(client->flags & SOCKET_FLAG_HAVE_SSL) || ssl_write(client, msg, len) == -2) {
#ifdef WIN32
- send(client->sock, msg, len, 0);
+
ret =
send(client->sock, msg, len, 0);
#else
#else
- write(client->sock, msg, len);
+
ret =
write(client->sock, msg, len);
#endif
}
client->traffic_out += len;
DESYNCHRONIZE(synchronized);
#endif
}
client->traffic_out += len;
DESYNCHRONIZE(synchronized);
- return
1
;
+ return
ret
;
}
int write_socket(struct ClientSocket *client, char* msg, int len) {
}
int write_socket(struct ClientSocket *client, char* msg, int len) {
@@
-441,10
+445,6
@@
int socket_loop(int timeout_seconds) {
timeout.tv_sec = timeout_seconds;
timeout.tv_usec = 0;
ret = select(ret + 1, &fds, NULL, NULL, &timeout);
timeout.tv_sec = timeout_seconds;
timeout.tv_usec = 0;
ret = select(ret + 1, &fds, NULL, NULL, &timeout);
- if(ret == 0) {
- DESYNCHRONIZE(synchronized_recv);
- return 1;
- }
for (sock = sockets->data; sock; sock = next) {
next = sock->next;
if((sock->flags & (SOCKET_FLAG_CONNECTED | SOCKET_FLAG_QUITTED)) == SOCKET_FLAG_CONNECTED && FD_ISSET(sock->sock, &fds)) {
for (sock = sockets->data; sock; sock = next) {
next = sock->next;
if((sock->flags & (SOCKET_FLAG_CONNECTED | SOCKET_FLAG_QUITTED)) == SOCKET_FLAG_CONNECTED && FD_ISSET(sock->sock, &fds)) {
@@
-534,7
+534,7
@@
int socket_loop(int timeout_seconds) {
if(is_synchronized) {
DESYNCHRONIZE(synchronized_recv);
}
if(is_synchronized) {
DESYNCHRONIZE(synchronized_recv);
}
- return
(ret + 1)
;
+ return
1
;
}
void
}
void
@@
-580,6
+580,8
@@
void free_sockets() {
free(client->bind);
if(client->pass)
free(client->pass);
free(client->bind);
if(client->pass)
free(client->pass);
+ if(client->network_name)
+ free(client->network_name);
free(client);
}
free(sockets);
free(client);
}
free(sockets);