summaryrefslogtreecommitdiff
path: root/src/server_eval.c
diff options
context:
space:
mode:
authorJakub Sławiński2006-02-05 15:14:03 +0100
committerJoshua Judson Rosen2014-07-17 21:15:02 +0200
commitb457fec36399c1f7de093d5e92bb4fa453b79c86 (patch)
tree2084c9a78d40213015e6f10e3e9e01bc4c0c51f1 /src/server_eval.c
parentUpdate copyright statements. (diff)
downloadapf-b457fec36399c1f7de093d5e92bb4fa453b79c86.tar.gz
v0.8
- Fixed: infinite loop after buffering message - Fixed: corrupt packets after closing connections in the stopped state - Fixed: bug in mapping user numbers between afclient and afserver - Fixed: premature close of the service connection - Fixed: invalid buffering when the connection is closing - Added: Multiple tunnels in one afclient<->afserver connection
Diffstat (limited to 'src/server_eval.c')
-rw-r--r--src/server_eval.c77
1 files changed, 77 insertions, 0 deletions
diff --git a/src/server_eval.c b/src/server_eval.c
index ef31c8d..a676d3d 100644
--- a/src/server_eval.c
+++ b/src/server_eval.c
@@ -19,12 +19,24 @@
*/
#include <config.h>
+#include <assert.h>
+#include <string.h>
#include "server_eval.h"
+/*
+ * Function name: eval_numofcon
+ * Description: Returns the real connection number on the afserver.
+ * Arguments: ptr - the server realm
+ * client - client number
+ * numofcon - the connection number on the afclient
+ * Returns: The real connection number on the afserver.
+ */
+
int
eval_numofcon(ServerRealm* ptr, int client, int numofcon)
{
+ assert(ptr != NULL);
if ((numofcon >= 0) && (numofcon < ConnectClient_get_limit(ServerRealm_get_clientsTable(ptr)[client]))) {
numofcon = ConnectClient_get_users(ServerRealm_get_clientsTable(ptr)[client])[numofcon];
}
@@ -34,13 +46,78 @@ eval_numofcon(ServerRealm* ptr, int client, int numofcon)
return numofcon;
}
+/*
+ * Function name: eval_usernum
+ * Description: Returns the user number in the connected client on the afserver side.
+ * Arguments: ptr - the connected client
+ * usernum - the connection number on the afserver
+ * Returns: The user number in the connected client on the afserver side.
+ */
+
int
eval_usernum(ConnectClient* ptr, int usernum)
{
int i;
+ assert(ptr != NULL);
for (i = 0; i < ConnectClient_get_limit(ptr); ++i) {
if (ConnectClient_get_users(ptr)[i] == usernum)
return i;
}
return -1;
}
+
+/*
+ * Function name: eval_UsrCliPair
+ * Description: Returns how many UsrCli structures are connected with the current manage port.
+ * Arguments: table - the table of UsrCli structures
+ * index - the current index of the evaluation
+ * host - the name of the host
+ * serv - the name of the service (port)
+ * Returns: How many UsrCli structures are connected with the current manage port.
+ */
+
+int
+eval_UsrCliPair(UsrCli** table, int index, char* host, char* serv)
+{
+ int i;
+ int result = 0;
+ assert(table != NULL);
+ assert(index >= 0);
+ for (i = 0; i < index; ++i) {
+
+ if (UsrCli_get_manageHostName(table[i])) {
+ if (host) {
+ if (strcmp(UsrCli_get_listenHostName(table[i]), host)) {
+ continue;
+ }
+ }
+ else {
+ continue;
+ }
+ }
+ else {
+ if (host) {
+ continue;
+ }
+ }
+
+ if (UsrCli_get_managePortName(table[i])) {
+ if (serv) {
+ if (strcmp(UsrCli_get_managePortName(table[i]), serv)) {
+ continue;
+ }
+ }
+ else {
+ continue;
+ }
+ }
+ else {
+ if (serv) {
+ continue;
+ }
+ }
+
+ result++;
+ }
+ return result;
+}