version 1.100, 2002/08/21 20:10:28 |
version 1.101, 2002/08/22 19:27:53 |
|
|
extern char *__progname; |
extern char *__progname; |
|
|
static void |
static void |
|
close_socket(SocketEntry *e) |
|
{ |
|
shutdown(e->fd, SHUT_RDWR); |
|
close(e->fd); |
|
e->fd = -1; |
|
e->type = AUTH_UNUSED; |
|
buffer_free(&e->input); |
|
buffer_free(&e->output); |
|
buffer_free(&e->request); |
|
} |
|
|
|
static void |
idtab_init(void) |
idtab_init(void) |
{ |
{ |
int i; |
int i; |
|
|
cp = buffer_ptr(&e->input); |
cp = buffer_ptr(&e->input); |
msg_len = GET_32BIT(cp); |
msg_len = GET_32BIT(cp); |
if (msg_len > 256 * 1024) { |
if (msg_len > 256 * 1024) { |
shutdown(e->fd, SHUT_RDWR); |
close_socket(e); |
close(e->fd); |
|
e->fd = -1; |
|
e->type = AUTH_UNUSED; |
|
buffer_free(&e->input); |
|
buffer_free(&e->output); |
|
buffer_free(&e->request); |
|
return; |
return; |
} |
} |
if (buffer_len(&e->input) < msg_len + 4) |
if (buffer_len(&e->input) < msg_len + 4) |
|
|
break; |
break; |
} while (1); |
} while (1); |
if (len <= 0) { |
if (len <= 0) { |
shutdown(sockets[i].fd, SHUT_RDWR); |
close_socket(&sockets[i]); |
close(sockets[i].fd); |
|
sockets[i].fd = -1; |
|
sockets[i].type = AUTH_UNUSED; |
|
buffer_free(&sockets[i].input); |
|
buffer_free(&sockets[i].output); |
|
buffer_free(&sockets[i].request); |
|
break; |
break; |
} |
} |
buffer_consume(&sockets[i].output, len); |
buffer_consume(&sockets[i].output, len); |
|
|
break; |
break; |
} while (1); |
} while (1); |
if (len <= 0) { |
if (len <= 0) { |
shutdown(sockets[i].fd, SHUT_RDWR); |
close_socket(&sockets[i]); |
close(sockets[i].fd); |
|
sockets[i].fd = -1; |
|
sockets[i].type = AUTH_UNUSED; |
|
buffer_free(&sockets[i].input); |
|
buffer_free(&sockets[i].output); |
|
buffer_free(&sockets[i].request); |
|
break; |
break; |
} |
} |
buffer_append(&sockets[i].input, buf, len); |
buffer_append(&sockets[i].input, buf, len); |