/*
- * Copyright (C) 1997-2007 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 1997-2009 Andre Noll <maan@systemlinux.org>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/**
* data specific to a client task
*/
-struct private_client_data {
+struct client_task {
/** the state of the connection */
int status;
- /** the file descriptor */
- int fd;
+ /** The file descriptor and the rc4 keys. */
+ struct rc4_context rc4c;
/** the configuration (including the command) */
struct client_args_info conf;
/** the config file for client options */
char *key_file;
/** paraslash user name */
char *user;
- /** session key for receiving data */
- RC4_KEY rc4_recv_key;
- /** session key for sending data */
- RC4_KEY rc4_send_key;
/** the client task structure */
struct task task;
- /** non-zero if task is unregistered */
- int error;
/** the buffer used for handshake and receiving */
- char buf[CLIENT_BUFSIZE];
+ char *buf;
/** number of bytes loaded in \p buf */
size_t loaded;
/** non-zero if the pre_select hook added \p fd to the read fd set */
int check_r;
/** non-zero if the pre_select hook added \p fd to the write fd set */
int check_w;
- /** the decrypted challenge */
- long unsigned challenge_nr;
/** pointer to the data to be sent to para_server */
char *inbuf;
/** number of bytes loaded in \p inbuf */
int *in_error;
};
-void client_close(struct private_client_data *pcd);
-int client_open(int argc, char *argv[], struct private_client_data **pcd_ptr);
+void client_close(struct client_task *ct);
+int client_open(int argc, char *argv[], struct client_task **ct,
+ int *loglevel);