aboutsummaryrefslogtreecommitdiffstats
path: root/protocols/msn/msn.h
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/msn/msn.h')
-rw-r--r--protocols/msn/msn.h81
1 files changed, 19 insertions, 62 deletions
diff --git a/protocols/msn/msn.h b/protocols/msn/msn.h
index 0ef71083..3827c992 100644
--- a/protocols/msn/msn.h
+++ b/protocols/msn/msn.h
@@ -31,7 +31,6 @@
#define TYPING_NOTIFICATION_MESSAGE "\r\r\rBEWARE, ME R TYPINK MESSAGE!!!!\r\r\r"
#define NUDGE_MESSAGE "\r\r\rSHAKE THAT THING\r\r\r"
#define GROUPCHAT_SWITCHBOARD_MESSAGE "\r\r\rME WANT TALK TO MANY PEOPLE\r\r\r"
-#define SB_KEEPALIVE_MESSAGE "\r\r\rDONT HANG UP ON ME!\r\r\r"
#ifdef DEBUG_MSN
#define debug(text ...) imcb_log(ic, text);
@@ -67,11 +66,20 @@
#define MSN_CAP1 0xC000
#define MSN_CAP2 0x0000
-#define MSN_MESSAGE_HEADERS "MIME-Version: 1.0\r\n" \
+#define MSN_MESSAGE_HEADERS \
+ "Routing: 1.0\r\n" \
+ "To: 1:%s\r\n" \
+ "From: 1:%s;epid={%s}\r\n" \
+ "\r\n" \
+ "Reliability: 1.0\r\n" \
+ "\r\n" \
+ "Messaging: 2.0\r\n" \
+ "Message-Type: Text\r\n" \
+ "Content-Length: %zd\r\n" \
"Content-Type: text/plain; charset=UTF-8\r\n" \
- "User-Agent: BitlBee " BITLBEE_VERSION "\r\n" \
- "X-MMS-IM-Format: FN=MS%20Shell%20Dlg; EF=; CO=0; CS=0; PF=0\r\n" \
- "\r\n"
+ "X-MMS-IM-Format: FN=Segoe%%20UI; EF=; CO=0; CS=0; PF=0\r\n" \
+ "\r\n" \
+ "%s"
#define MSN_TYPING_HEADERS "MIME-Version: 1.0\r\n" \
"Content-Type: text/x-msmsgscontrol\r\n" \
@@ -84,10 +92,6 @@
"ID: 1\r\n" \
"\r\n"
-#define MSN_SB_KEEPALIVE_HEADERS "MIME-Version: 1.0\r\n" \
- "Content-Type: text/x-ping\r\n" \
- "\r\n\r\n"
-
#define PROFILE_URL "http://members.msn.com/"
typedef enum {
@@ -98,7 +102,7 @@ typedef enum {
MSN_EMAIL_UNVERIFIED = 16,
} msn_flags_t;
-struct msn_handler_data {
+struct msn_data {
int fd, inpa;
int rxlen;
char *rxq;
@@ -106,17 +110,8 @@ struct msn_handler_data {
int msglen;
char *cmd_text;
- /* Either ic or sb */
- gpointer data;
-
- int (*exec_command) (struct msn_handler_data *handler, char **cmd, int count);
- int (*exec_message) (struct msn_handler_data *handler, char *msg, int msglen, char **cmd, int count);
-};
-
-struct msn_data {
struct im_connection *ic;
- struct msn_handler_data ns[1];
msn_flags_t flags;
int trId;
@@ -125,9 +120,6 @@ struct msn_data {
char *uuid;
GSList *msgq, *grpq, *soapq;
- GSList *switchboards;
- int sb_failures;
- time_t first_sb_failure;
const struct msn_away_state *away_state;
GSList *groups;
@@ -140,26 +132,6 @@ struct msn_data {
int adl_todo;
};
-struct msn_switchboard {
- struct im_connection *ic;
-
- /* The following two are also in the handler. TODO: Clean up. */
- int fd;
- gint inp;
- struct msn_handler_data *handler;
- gint keepalive;
-
- int trId;
- int ready;
-
- int session;
- char *key;
-
- GSList *msgq;
- char *who;
- struct groupchat *chat;
-};
-
struct msn_away_state {
char code[4];
char name[16];
@@ -204,8 +176,6 @@ struct msn_group {
/* Bitfield values for msn_status_code.flags */
#define STATUS_FATAL 1
#define STATUS_SB_FATAL 2
-#define STATUS_SB_IM_SPARE 4 /* Make one-to-one conversation switchboard available again, invite failed. */
-#define STATUS_SB_CHAT_SPARE 8 /* Same, but also for groupchats (not used yet). */
extern int msn_chat_id;
extern const struct msn_away_state msn_away_state_list[];
@@ -217,17 +187,18 @@ extern const struct msn_status_code msn_status_code_list[];
connection), the callback should check whether it's still listed here
before doing *anything* else. */
extern GSList *msn_connections;
-extern GSList *msn_switchboards;
/* ns.c */
int msn_ns_write(struct im_connection *ic, int fd, const char *fmt, ...) G_GNUC_PRINTF(3, 4);
-gboolean msn_ns_connect(struct im_connection *ic, struct msn_handler_data *handler, const char *host, int port);
-void msn_ns_close(struct msn_handler_data *handler);
+gboolean msn_ns_connect(struct im_connection *ic, const char *host, int port);
+void msn_ns_close(struct msn_data *handler);
void msn_auth_got_passport_token(struct im_connection *ic, const char *token, const char *error);
void msn_auth_got_contact_list(struct im_connection *ic);
int msn_ns_finish_login(struct im_connection *ic);
int msn_ns_sendmessage(struct im_connection *ic, struct bee_user *bu, const char *text);
void msn_ns_oim_send_queue(struct im_connection *ic, GSList **msgq);
+int msn_ns_command(struct msn_data *md, char **cmd, int num_parts);
+int msn_ns_message(struct msn_data *md, char *msg, int msglen, char **cmd, int num_parts);
/* msn_util.c */
int msn_buddy_list_add(struct im_connection *ic, msn_buddy_flags_t list, const char *who, const char *realname_,
@@ -235,7 +206,7 @@ int msn_buddy_list_add(struct im_connection *ic, msn_buddy_flags_t list, const c
int msn_buddy_list_remove(struct im_connection *ic, msn_buddy_flags_t list, const char *who, const char *group);
void msn_buddy_ask(bee_user_t *bu);
char **msn_linesplit(char *line);
-int msn_handler(struct msn_handler_data *h);
+int msn_handler(struct msn_data *h);
void msn_msgq_purge(struct im_connection *ic, GSList **list);
char *msn_p11_challenge(char *challenge);
gint msn_domaintree_cmp(gconstpointer a_, gconstpointer b_);
@@ -250,18 +221,4 @@ const struct msn_away_state *msn_away_state_by_code(char *code);
const struct msn_away_state *msn_away_state_by_name(char *name);
const struct msn_status_code *msn_status_by_number(int number);
-/* sb.c */
-int msn_sb_write(struct msn_switchboard *sb, const char *fmt, ...) G_GNUC_PRINTF(2, 3);;
-struct msn_switchboard *msn_sb_create(struct im_connection *ic, char *host, int port, char *key, int session);
-struct msn_switchboard *msn_sb_by_handle(struct im_connection *ic, const char *handle);
-struct msn_switchboard *msn_sb_by_chat(struct groupchat *c);
-struct msn_switchboard *msn_sb_spare(struct im_connection *ic);
-int msn_sb_sendmessage(struct msn_switchboard *sb, char *text);
-struct groupchat *msn_sb_to_chat(struct msn_switchboard *sb);
-void msn_sb_destroy(struct msn_switchboard *sb);
-gboolean msn_sb_connected(gpointer data, gint source, b_input_condition cond);
-int msn_sb_write_msg(struct im_connection *ic, struct msn_message *m);
-void msn_sb_start_keepalives(struct msn_switchboard *sb, gboolean initial);
-void msn_sb_stop_keepalives(struct msn_switchboard *sb);
-
#endif //_MSN_H