aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2008-08-29 09:37:11 +0200
committerMax Kellermann <max@duempel.org>2008-08-29 09:37:11 +0200
commit8811c0e05943edbcb3d7203ef4f61ec89423718a (patch)
tree666d7e4ecd907f3a7d4c648085ec655efda9aa38 /src
parent8b1b82b36374e95bcef8195fcd15e4014e73567d (diff)
export the function client_is_expired()
Instead of passing the pointer to the "expired" flag to processListOfCommands(), this function should use the client API to check this flag. We can now remove the "global_expired" hack introduced recently.
Diffstat (limited to 'src')
-rw-r--r--src/client.c9
-rw-r--r--src/client.h2
-rw-r--r--src/command.c4
-rw-r--r--src/command.h3
4 files changed, 6 insertions, 12 deletions
diff --git a/src/client.c b/src/client.c
index 7f47aacd..f0942762 100644
--- a/src/client.c
+++ b/src/client.c
@@ -129,21 +129,17 @@ static void set_send_buf_size(struct client *client)
}
}
-static inline int client_is_expired(const struct client *client)
+int client_is_expired(const struct client *client)
{
return client->fd < 0;
}
-static int global_expired;
-
static inline void client_set_expired(struct client *client)
{
if (client->fd >= 0) {
xclose(client->fd);
client->fd = -1;
}
-
- global_expired = 1;
}
static void client_init(struct client *client, int fd)
@@ -341,11 +337,8 @@ static int client_process_line(struct client *client)
if (strcmp(line, CLIENT_LIST_MODE_END) == 0) {
DEBUG("client %i: process command "
"list\n", client->num);
-
- global_expired = 0;
ret = processListOfCommands(client,
&(client->permission),
- &global_expired,
client->cmd_list_OK,
client->cmd_list);
DEBUG("client %i: process command "
diff --git a/src/client.h b/src/client.h
index db4bc202..dc67c044 100644
--- a/src/client.h
+++ b/src/client.h
@@ -37,6 +37,8 @@ void client_new(int fd, const struct sockaddr *addr);
*/
int client_get_fd(struct client *client);
+int client_is_expired(const struct client *client);
+
int client_print(int fd, const char *buffer, size_t len);
#endif
diff --git a/src/command.c b/src/command.c
index f2468d0b..c0adf3a1 100644
--- a/src/command.c
+++ b/src/command.c
@@ -1235,7 +1235,7 @@ static int processCommandInternal(struct client *client,
return ret;
}
-int processListOfCommands(struct client *client, int *permission, int *expired,
+int processListOfCommands(struct client *client, int *permission,
int listOK, struct strnode *list)
{
int fd = client_get_fd(client);
@@ -1249,7 +1249,7 @@ int processListOfCommands(struct client *client, int *permission, int *expired,
cur->data);
ret = processCommandInternal(client, permission, cur->data, cur);
DEBUG("processListOfCommands: command returned %i\n", ret);
- if (ret != 0 || (*expired) != 0)
+ if (ret != 0 || client_is_expired(client))
goto out;
else if (listOK)
fdprintf(fd, "list_OK\n");
diff --git a/src/command.h b/src/command.h
index 030e0376..d421b874 100644
--- a/src/command.h
+++ b/src/command.h
@@ -29,8 +29,7 @@
struct client;
-int processListOfCommands(struct client *client,
- int *permission, int *expired,
+int processListOfCommands(struct client *client, int *permission,
int listOK, struct strnode *list);
int processCommand(struct client *client,