aboutsummaryrefslogtreecommitdiffstats
path: root/apps/clients.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/clients.c')
-rw-r--r--apps/clients.c199
1 files changed, 109 insertions, 90 deletions
diff --git a/apps/clients.c b/apps/clients.c
index 5971a67..0a38095 100644
--- a/apps/clients.c
+++ b/apps/clients.c
@@ -10,6 +10,9 @@ static char rcsid[] = "$Id$";
/*
* $Log$
+ * Revision 1.25 2008/05/09 12:35:57 james
+ * *** empty log message ***
+ *
* Revision 1.24 2008/03/11 17:56:04 james
* *** empty log message ***
*
@@ -104,51 +107,53 @@ client_initialize (Client * c, Context * ctx)
void
client_execute_message (Client * client, IPC_Msg * m, Context * c)
{
- switch (m->hdr.type) {
- case IPC_MSG_TYPE_NOOP:
- break;
- case IPC_MSG_TYPE_DEBUG:
- log_f (c->l, "<debug message %s>", m->debug.msg);
- break;
- case IPC_MSG_TYPE_KEY:
- vt102_send (c, m->key.key);
- break;
- case IPC_MSG_TYPE_SETBAUD:
- tty_set_baud (c->t, m->setbaud.baud);
- tty_parse_reset (c);
- log_f (c->l, "<baud changed to %d>", m->setbaud.baud);
- break;
- case IPC_MSG_TYPE_SENDBREAK:
- log_f (c->l, "<break sent>");
- tty_send_break (c->t);
- break;
- case IPC_MSG_TYPE_SETFLOW:
- log_f (c->l, "<flow control turned %s>", m->setflow.flow ? "on" : "off");
- tty_set_flow (c->t, m->setflow.flow);
- break;
- case IPC_MSG_TYPE_SETANSI:
- vt102_set_ansi (c->v, m->setansi.ansi);
- break;
- case IPC_MSG_TYPE_HANGUP:
- log_f (c->l, "<hangup initiated>");
- tty_hangup (c->t);
- break;
- case IPC_MSG_TYPE_SETSIZE:
- vt102_resize (c, m->setsize.winsize);
- break;
- case IPC_MSG_TYPE_RESET:
- vt102_reset (c);
- break;
- case IPC_MSG_TYPE_INITIALIZE:
- client_initialize (client, c);
- break;
- case IPC_MSG_TYPE_KILLME:
- client->dead++;
- break;
-
- default:
- log_f (c->l, "<Unhandled message type %d>", m->hdr.type);
- }
+ switch (m->hdr.type)
+ {
+ case IPC_MSG_TYPE_NOOP:
+ break;
+ case IPC_MSG_TYPE_DEBUG:
+ log_f (c->l, "<debug message %s>", m->debug.msg);
+ break;
+ case IPC_MSG_TYPE_KEY:
+ vt102_send (c, m->key.key);
+ break;
+ case IPC_MSG_TYPE_SETBAUD:
+ tty_set_baud (c->t, m->setbaud.baud);
+ tty_parse_reset (c);
+ log_f (c->l, "<baud changed to %d>", m->setbaud.baud);
+ break;
+ case IPC_MSG_TYPE_SENDBREAK:
+ log_f (c->l, "<break sent>");
+ tty_send_break (c->t);
+ break;
+ case IPC_MSG_TYPE_SETFLOW:
+ log_f (c->l, "<flow control turned %s>",
+ m->setflow.flow ? "on" : "off");
+ tty_set_flow (c->t, m->setflow.flow);
+ break;
+ case IPC_MSG_TYPE_SETANSI:
+ vt102_set_ansi (c->v, m->setansi.ansi);
+ break;
+ case IPC_MSG_TYPE_HANGUP:
+ log_f (c->l, "<hangup initiated>");
+ tty_hangup (c->t);
+ break;
+ case IPC_MSG_TYPE_SETSIZE:
+ vt102_resize (c, m->setsize.winsize);
+ break;
+ case IPC_MSG_TYPE_RESET:
+ vt102_reset (c);
+ break;
+ case IPC_MSG_TYPE_INITIALIZE:
+ client_initialize (client, c);
+ break;
+ case IPC_MSG_TYPE_KILLME:
+ client->dead++;
+ break;
+
+ default:
+ log_f (c->l, "<Unhandled message type %d>", m->hdr.type);
+ }
}
@@ -197,18 +202,23 @@ clients_reap (Clients * cs, Context * ctx)
Client **p, *c;
- for (p = &cs->head; *p;) {
- Client *c = *p;
+ for (p = &cs->head; *p;)
+ {
+ Client *c = *p;
- if (c->dead) {
- *p = c->next;
- client_free (c);
- cs->n--;
- log_f (ctx->l, "<client %p disconnected - now %d clients>", c, cs->n);
- } else {
- p = &(c->next);
+ if (c->dead)
+ {
+ *p = c->next;
+ client_free (c);
+ cs->n--;
+ log_f (ctx->l, "<client %p disconnected - now %d clients>", c,
+ cs->n);
+ }
+ else
+ {
+ p = &(c->next);
+ }
}
- }
}
Clients *
@@ -227,9 +237,10 @@ clients_pre_select (Clients * cs, fd_set * rfds, fd_set * wfds)
{
Client *c;
- for (c = cs->head; c; c = c->next) {
- socket_pre_select (c->s, rfds, wfds);
- }
+ for (c = cs->head; c; c = c->next)
+ {
+ socket_pre_select (c->s, rfds, wfds);
+ }
}
void
@@ -239,21 +250,24 @@ clients_post_select (Clients * cs, Context * ctx, fd_set * rfds,
Client *c;
int deaded = 0;
- for (c = cs->head; c; c = c->next) {
- if (socket_post_select (c->s, rfds, wfds)) {
- c->dead++;
- deaded++;
- }
+ for (c = cs->head; c; c = c->next)
+ {
+ if (socket_post_select (c->s, rfds, wfds))
+ {
+ c->dead++;
+ deaded++;
+ }
+
+ if (c->s->msg)
+ {
+ client_execute_message (c, c->s->msg, ctx);
+ socket_consume_msg (c->s);
+ if (c->dead)
+ deaded++;
+ }
- if (c->s->msg) {
- client_execute_message (c, c->s->msg, ctx);
- socket_consume_msg (c->s);
- if (c->dead)
- deaded++;
}
- }
-
if (deaded)
clients_reap (cs, ctx);
}
@@ -264,9 +278,10 @@ clients_shutdown (Clients * cs, Context * ctx)
{
Client *c;
- for (c = cs->head; c; c = c->next) {
- c->dead++;
- }
+ for (c = cs->head; c; c = c->next)
+ {
+ c->dead++;
+ }
clients_reap (cs, ctx);
@@ -300,11 +315,12 @@ send_status (Clients * cs, char *msg)
strncpy (m->status, msg, IPC_MAX_BUF);
m->status[IPC_MAX_BUF - 1] = 0;
- for (c = cs->head; c; c = c->next) {
- if (!c->dead && c->initialized)
- if (ipc_msg_send (c->s, (IPC_Msg *) m))
- c->dead++;
- }
+ for (c = cs->head; c; c = c->next)
+ {
+ if (!c->dead && c->initialized)
+ if (ipc_msg_send (c->s, (IPC_Msg *) m))
+ c->dead++;
+ }
return len;
}
@@ -328,11 +344,12 @@ send_output (Clients * cs, void *buf, int len)
m->len = len;
memcpy (m->term, buf, len);
- for (c = cs->head; c; c = c->next) {
- if (!c->dead && c->initialized)
- if (ipc_msg_send (c->s, (IPC_Msg *) m))
- c->dead++;
- }
+ for (c = cs->head; c; c = c->next)
+ {
+ if (!c->dead && c->initialized)
+ if (ipc_msg_send (c->s, (IPC_Msg *) m))
+ c->dead++;
+ }
return len;
@@ -346,16 +363,18 @@ send_history (History * h, Client * c)
HISTORY_INC (h, rptr);
HISTORY_INC (h, rptr);
- while (rptr != h->wptr) {
- History_ent *l = &h->lines[rptr];
- if (l->valid) {
+ while (rptr != h->wptr)
+ {
+ History_ent *l = &h->lines[rptr];
+ if (l->valid)
+ {
- if (ipc_msg_send_history (c->s, l))
- c->dead++;
+ if (ipc_msg_send_history (c->s, l))
+ c->dead++;
+ }
+ HISTORY_INC (h, rptr);
}
- HISTORY_INC (h, rptr);
- }
}
void