summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/common/socket.c29
-rw-r--r--src/login/login.c2
-rw-r--r--src/login_sql/login.c2
3 files changed, 10 insertions, 23 deletions
diff --git a/src/common/socket.c b/src/common/socket.c
index 43422da85..fda81521d 100644
--- a/src/common/socket.c
+++ b/src/common/socket.c
@@ -589,42 +589,29 @@ int do_sendrecv(int next)
if(session[rfd.fd_array[i]])
session[rfd.fd_array[i]]->func_recv(rfd.fd_array[i]);
}
-
+#else
+ // otherwise assume that the fd_set is a bit-array and enumerate it in a standard way
+ //TODO: select() returns the number of readable sockets; use that to exit the fd_max loop faster
for (i = 1; i < fd_max; i++)
{
- if(!session[i])
- continue;
-
- if(session[i]->wdata_size)
- session[i]->func_send(i);
-
- if(session[i]->eof) //func_send can't free a session, this is safe.
- { //Finally, even if there is no data to parse, connections signalled eof should be closed, so we call parse_func [Skotlex]
- session[i]->func_parse(i); //This should close the session inmediately.
- }
+ if(FD_ISSET(i,&rfd) && session[i])
+ session[i]->func_recv(i);
}
+#endif
-#else
- // otherwise assume that the fd_set is a bit-array and enumerate it in a standard way
for (i = 1; i < fd_max; i++)
{
if(!session[i])
continue;
- if(FD_ISSET(i,&rfd)){
- //ShowMessage("read:%d\n",i);
- session[i]->func_recv(i);
- }
-
if(session[i]->wdata_size)
session[i]->func_send(i);
-
- if(session[i]->eof)
+
+ if(session[i]->eof) //func_send can't free a session, this is safe.
{ //Finally, even if there is no data to parse, connections signalled eof should be closed, so we call parse_func [Skotlex]
session[i]->func_parse(i); //This should close the session inmediately.
}
}
-#endif
return 0;
}
diff --git a/src/login/login.c b/src/login/login.c
index d3ce7311b..95abd0006 100644
--- a/src/login/login.c
+++ b/src/login/login.c
@@ -3193,7 +3193,7 @@ int parse_login(int fd) {
WFIFOL(fd,8) = account.account_id;
WFIFOL(fd,12) = account.login_id2;
WFIFOL(fd,16) = 0; // in old version, that was for ip (not more used)
- memcpy(WFIFOP(fd,20), account.lastlogin, 24); // in old version, that was for name (not more used)
+ //memcpy(WFIFOP(fd,20), account.lastlogin, 24); // in old version, that was for name (not more used)
WFIFOB(fd,46) = account.sex;
WFIFOSET(fd,47+32*server_num);
if (auth_fifo_pos >= AUTH_FIFO_SIZE)
diff --git a/src/login_sql/login.c b/src/login_sql/login.c
index 9c276c835..ad1ce91f5 100644
--- a/src/login_sql/login.c
+++ b/src/login_sql/login.c
@@ -1656,7 +1656,7 @@ int parse_login(int fd) {
WFIFOL(fd,8)=account.account_id;
WFIFOL(fd,12)=account.login_id2;
WFIFOL(fd,16)=0;
- memcpy(WFIFOP(fd,20),account.lastlogin,24);
+ //memcpy(WFIFOP(fd,20),account.lastlogin,24);
WFIFOB(fd,46)=account.sex;
WFIFOSET(fd,47+32*server_num);
if(auth_fifo_pos>=AUTH_FIFO_SIZE)