struct aim_rxcblist_t *handlerlist;
faim_mutex_t active; /* lock around read/writes */
faim_mutex_t seqnum_lock; /* lock around ->seqnum changes */
+ void *sessv;
struct aim_conn_t *next;
};
faim_export int aim_conn_addhandler(struct aim_session_t *, struct aim_conn_t *conn, u_short family, u_short type, aim_rxcallback_t newhandler, u_short flags);
faim_export int aim_clearhandlers(struct aim_conn_t *conn);
+faim_export struct aim_session_t *aim_conn_getsess(struct aim_conn_t *conn);
faim_export void aim_conn_close(struct aim_conn_t *deadconn);
faim_export struct aim_conn_t *aim_newconn(struct aim_session_t *, int type, char *dest);
faim_export int aim_conngetmaxfd(struct aim_session_t *);
faim_export void aim_session_kill(struct aim_session_t *);
faim_export void aim_setupproxy(struct aim_session_t *sess, char *server, char *username, char *password);
faim_export struct aim_conn_t *aim_getconn_type(struct aim_session_t *, int type);
+faim_export struct aim_conn_t *aim_getconn_type_all(struct aim_session_t *, int type);
+faim_export struct aim_conn_t *aim_getconn_fd(struct aim_session_t *, int fd);
/* aim_misc.c */
#define AIM_WARN_ANON 0x01
-faim_export int aim_send_warning(struct aim_session_t *sess, struct aim_conn_t *conn, char *destsn, int anon);
+faim_export int aim_send_warning(struct aim_session_t *sess, struct aim_conn_t *conn, const char *destsn, unsigned long flags);
faim_export unsigned long aim_bos_nop(struct aim_session_t *, struct aim_conn_t *);
faim_export unsigned long aim_flap_nop(struct aim_session_t *sess, struct aim_conn_t *conn);
faim_export unsigned long aim_bos_setidle(struct aim_session_t *, struct aim_conn_t *, u_long);
faim_export unsigned long aim_bos_changevisibility(struct aim_session_t *, struct aim_conn_t *, int, char *);
faim_export unsigned long aim_bos_setbuddylist(struct aim_session_t *, struct aim_conn_t *, char *);
-faim_export unsigned long aim_bos_setprofile(struct aim_session_t *, struct aim_conn_t *, char *, char *, unsigned short);
+faim_export unsigned long aim_bos_setprofile(struct aim_session_t *sess, struct aim_conn_t *conn, const char *profile, const char *awaymsg, unsigned short caps);
faim_export unsigned long aim_bos_setgroupperm(struct aim_session_t *, struct aim_conn_t *, u_long);
faim_export unsigned long aim_bos_clientready(struct aim_session_t *, struct aim_conn_t *);
faim_export unsigned long aim_bos_reqrate(struct aim_session_t *, struct aim_conn_t *);
};
struct aim_filetransfer_priv {
- char sn[MAXSNLEN];
- char cookie[8];
- char ip[30];
- int state;
- struct aim_fileheader_t fh;
+ char sn[MAXSNLEN];
+ char cookie[8];
+ char ip[30];
+ int state;
+ struct aim_fileheader_t fh;
};
struct aim_chat_roominfo {
- u_short exchange;
- char *name;
- u_short instance;
+ unsigned short exchange;
+ char *name;
+ unsigned short instance;
};
#define AIM_IMFLAGS_AWAY 0x01 /* mark as an autoreply */
#define AIM_IMFLAGS_ISO_8859_1 0x08
#define AIM_IMFLAGS_BUDDYREQ 0x10 /* buddy icon requested */
#define AIM_IMFLAGS_HASICON 0x20 /* already has icon (timestamp included) */
+#define AIM_IMFLAGS_SUBENC_MACINTOSH 0x40 /* damn that Steve Jobs! */
struct aim_sendimext_args {
- const char *destsn;
- unsigned short flags;
- const char *msg;
- int msglen;
- int iconlen;
- time_t iconstamp;
- unsigned short iconsum;
+ const char *destsn;
+ unsigned short flags;
+ const char *msg;
+ int msglen;
+ int iconlen;
+ time_t iconstamp;
+ unsigned short iconsum;
};
struct aim_incomingim_ch1_args {
- char *msg;
- int msglen;
- unsigned long icbmflags;
- unsigned short flag1;
- unsigned short flag2;
- int finlen;
- unsigned char fingerprint[10];
- time_t iconstamp;
+ char *msg;
+ int msglen;
+ unsigned long icbmflags;
+ unsigned short flag1;
+ unsigned short flag2;
+ int finlen;
+ unsigned char fingerprint[10];
+ time_t iconstamp;
+ int extdatalen;
+ unsigned char *extdata;
};
struct aim_incomingim_ch2_args {
- unsigned short reqclass;
- unsigned short status;
- union {
- struct {
- unsigned int length;
- time_t timestamp;
- unsigned char *icon;
- } icon;
- struct {
- } voice;
- struct aim_directim_priv *directim;
- struct {
- char *msg;
- char *encoding;
- char *lang;
- struct aim_chat_roominfo roominfo;
- } chat;
- struct {
- char *ip;
- unsigned char *cookie;
- } getfile;
- struct {
- } sendfile;
- } info;
+ unsigned short reqclass;
+ unsigned short status;
+ union {
+ struct {
+ unsigned int length;
+ time_t timestamp;
+ unsigned char *icon;
+ } icon;
+ struct {
+ } voice;
+ struct aim_directim_priv *directim;
+ struct {
+ char *msg;
+ char *encoding;
+ char *lang;
+ struct aim_chat_roominfo roominfo;
+ } chat;
+ struct {
+ char *ip;
+ unsigned char *cookie;
+ } getfile;
+ struct {
+ } sendfile;
+ } info;
};
-faim_export unsigned long aim_send_im_ext(struct aim_session_t *sess, struct aim_conn_t *conn, struct aim_sendimext_args *args);
-faim_export unsigned long aim_send_im(struct aim_session_t *, struct aim_conn_t *, const char *destsn, unsigned short flags, const char *msg);
+faim_export int aim_send_im_ext(struct aim_session_t *sess, struct aim_conn_t *conn, struct aim_sendimext_args *args);
+faim_export int aim_send_im(struct aim_session_t *, struct aim_conn_t *, const char *destsn, unsigned short flags, const char *msg);
faim_export int aim_send_icon(struct aim_session_t *sess, struct aim_conn_t *conn, const char *sn, const unsigned char *icon, int iconlen, time_t stamp, unsigned short iconsum);
faim_export unsigned short aim_iconsum(const unsigned char *buf, int buflen);
faim_export int aim_send_im_direct(struct aim_session_t *, struct aim_conn_t *, char *);