summaryrefslogtreecommitdiff
path: root/src/server_remove.c
diff options
context:
space:
mode:
authorJakub Sławiński2005-08-05 21:45:31 +0200
committerJoshua Judson Rosen2014-07-17 21:14:59 +0200
commit43e8714797d40bcf63efab428dcd25f9caf1d52b (patch)
tree796974a873a97f2a44f872f3dd3587508e35aa64 /src/server_remove.c
parentv0.7.1 (diff)
downloadapf-43e8714797d40bcf63efab428dcd25f9caf1d52b.tar.gz
v0.7.2
- Added: http proxy basic authorization - Fixed: logging initialization after some value checking - Fixed: auto-reconnect failure when --nossl option is set - Added: auto-reconnect when afserver is not reachable on start - Added: auto-reconnect after normal afserver quit - Added: per user statistics: idle time, amount of downloaded/uploaded bytes and current download/upload rate - Added: support for https proxies - Added: possibility to bind sockets on different interfaces - Fixed: receiving incomplete headers from afclient - Fixed: close user connections by afclient
Diffstat (limited to 'src/server_remove.c')
-rw-r--r--src/server_remove.c63
1 files changed, 29 insertions, 34 deletions
diff --git a/src/server_remove.c b/src/server_remove.c
index de2df66..003c484 100644
--- a/src/server_remove.c
+++ b/src/server_remove.c
@@ -24,37 +24,35 @@ void
remove_client(RealmT* ptr, int client, fd_set* set, fd_set* wset, int* con)
{
int i;
- if (ptr->clitable[client].ready == 3) {
+ if (ConnectClient_get_state(ptr->clitable[client]) == CONNECTCLIENT_STATE_ACCEPTED) {
for (i = 0; i < ptr->usernum; ++i) {
- if (ptr->contable[i].whatcli == client) {
- if (ptr->contable[i].state != S_STATE_CLEAR) {
- ptr->contable[i].state = S_STATE_CLEAR;
- FD_CLR(ptr->contable[i].connfd, set);
- FD_CLR(ptr->contable[i].connfd, wset);
- close(ptr->contable[i].connfd);
+ if (ConnectUser_get_whatClient(ptr->contable[i]) == client) {
+ if (ConnectUser_get_state(ptr->contable[i]) != S_STATE_CLEAR) {
+ ConnectUser_set_state(ptr->contable[i], S_STATE_CLEAR);
+ FD_CLR(ConnectUser_get_connFd(ptr->contable[i]), set);
+ FD_CLR(ConnectUser_get_connFd(ptr->contable[i]), wset);
+ close(ConnectUser_get_connFd(ptr->contable[i]));
ptr->usercon--;
}
}
}
}
- for (i=0; i<ptr->clitable[client].usernum; ++i) {
- ptr->clitable[client].users[i] = -1;
+ for (i = 0; i < ConnectClient_get_limit(ptr->clitable[client]); ++i) {
+ ConnectClient_get_users(ptr->clitable[client])[i] = -1;
}
if ((ptr->clinum != client) && (ptr->baseport == 1)) {
- close(ptr->clitable[client].listenfd);
- FD_CLR(ptr->clitable[client].listenfd, set);
+ close(ConnectClient_get_listenFd(ptr->clitable[client]));
+ FD_CLR(ConnectClient_get_listenFd(ptr->clitable[client]), set);
}
- if (ptr->clitable[client].clientid) {
- free(ptr->clitable[client].clientid);
- ptr->clitable[client].clientid = NULL;
- }
- ptr->clitable[client].usercon = 0;
- close(ptr->clitable[client].cliconn.commfd);
- FD_CLR(ptr->clitable[client].cliconn.commfd, set);
- if (ptr->clitable[client].ready == 2)
+ ConnectClient_set_sClientId(ptr->clitable[client], NULL);
+ ConnectClient_set_connected(ptr->clitable[client], 0);
+ close(SslFd_get_fd(ConnectClient_get_sslFd(ptr->clitable[client])));
+ FD_CLR(SslFd_get_fd(ConnectClient_get_sslFd(ptr->clitable[client])), set);
+ if (ConnectClient_get_state(ptr->clitable[client]) == CONNECTCLIENT_STATE_AUTHORIZING) {
(*con)--;
- SSL_clear(ptr->clitable[client].cliconn.ssl);
- ptr->clitable[client].ready = 0;
+ }
+ SSL_clear(SslFd_get_ssl(ConnectClient_get_sslFd(ptr->clitable[client])));
+ ConnectClient_set_state(ptr->clitable[client], CONNECTCLIENT_STATE_FREE);
ptr->clicon--;
}
@@ -62,23 +60,20 @@ void
remove_raclient(RealmT* ptr, int client, fd_set* set, fd_set* wset, int* con)
{
int i;
- for (i=0; i<ptr->raclitable[client].usernum; ++i) {
- ptr->raclitable[client].users[i] = -1;
- }
- if (ptr->raclitable[client].clientid) {
- free(ptr->raclitable[client].clientid);
- ptr->raclitable[client].clientid = NULL;
+ for (i = 0; i < ConnectClient_get_limit(ptr->raclitable[client]); ++i) {
+ ConnectClient_get_users(ptr->raclitable[client])[i] = -1;
}
- ptr->raclitable[client].usercon = 0;
- close(ptr->raclitable[client].cliconn.commfd);
- FD_CLR(ptr->raclitable[client].cliconn.commfd, set);
- if (ptr->raclitable[client].ready == 2) {
+ ConnectClient_set_sClientId(ptr->raclitable[client], NULL);
+ ConnectClient_set_connected(ptr->raclitable[client], 0);
+ close(SslFd_get_fd(ConnectClient_get_sslFd(ptr->raclitable[client])));
+ FD_CLR(SslFd_get_fd(ConnectClient_get_sslFd(ptr->raclitable[client])), set);
+ if (ConnectClient_get_state(ptr->raclitable[client]) == CONNECTCLIENT_STATE_AUTHORIZING) {
(*con)--;
}
- SSL_clear(ptr->raclitable[client].cliconn.ssl);
+ SSL_clear(SslFd_get_ssl(ConnectClient_get_sslFd(ptr->raclitable[client])));
ptr->clicon--;
- if (ptr->raclitable[client].ready == 3) {
+ if (ConnectClient_get_state(ptr->raclitable[client]) == CONNECTCLIENT_STATE_ACCEPTED) {
ptr->raclicon--;
}
- ptr->raclitable[client].ready = 0;
+ ConnectClient_set_state(ptr->raclitable[client], CONNECTCLIENT_STATE_FREE);
}