Mercurial > pidgin
comparison src/protocols/msn/slp.c @ 10773:888d4c328be5
[gaim-migrate @ 12382]
Patch 1149564 from Felipe Contreras:
"[MSN] Cleanups and fixes
I know it fixes a multiple conversation close
notification but it probably fixes more stuff.
I don't know exactly what are the diferences with what
Stu did."
I munged it a bit, to make it compile and stuff.
Please test this, I might have broken it.
committer: Tailor Script <tailor@pidgin.im>
author | Stu Tomlinson <stu@nosnilmot.com> |
---|---|
date | Sat, 02 Apr 2005 16:38:33 +0000 |
parents | f52ab405f1ab |
children | bda4b39a22b8 |
comparison
equal
deleted
inserted
replaced
10772:12aa8ce77077 | 10773:888d4c328be5 |
---|---|
29 | 29 |
30 #include "object.h" | 30 #include "object.h" |
31 #include "user.h" | 31 #include "user.h" |
32 #include "switchboard.h" | 32 #include "switchboard.h" |
33 | 33 |
34 /* #include "slplink.h" */ | |
35 /* #include "directconn.h" */ | |
36 | |
37 static void send_ok(MsnSlpCall *slpcall, const char *branch, | 34 static void send_ok(MsnSlpCall *slpcall, const char *branch, |
38 const char *type, const char *content); | 35 const char *type, const char *content); |
39 | 36 |
40 static void send_decline(MsnSlpCall *slpcall, const char *branch, | 37 static void send_decline(MsnSlpCall *slpcall, const char *branch, |
41 const char *type, const char *content); | 38 const char *type, const char *content); |
122 send_decline(slpcall, slpcall->branch, "application/x-msnmsgr-sessionreqbody", | 119 send_decline(slpcall, slpcall->branch, "application/x-msnmsgr-sessionreqbody", |
123 content); | 120 content); |
124 | 121 |
125 g_free(content); | 122 g_free(content); |
126 msn_slplink_unleash(slpcall->slplink); | 123 msn_slplink_unleash(slpcall->slplink); |
124 | |
125 msn_slp_call_destroy(slpcall); | |
127 } | 126 } |
128 } | 127 } |
129 } | 128 } |
130 | 129 |
131 void | 130 void |
751 GaimConnection *gc; | 750 GaimConnection *gc; |
752 const char *who; | 751 const char *who; |
753 | 752 |
754 gc = slpcall->slplink->session->account->gc; | 753 gc = slpcall->slplink->session->account->gc; |
755 who = slpcall->slplink->remote_user; | 754 who = slpcall->slplink->remote_user; |
756 | 755 |
757 conv = gaim_find_conversation_with_account(GAIM_CONV_ANY, who, gc->account); | 756 conv = gaim_find_conversation_with_account(GAIM_CONV_ANY, who, gc->account); |
758 | 757 |
759 /* FIXME: it would be better if we wrote the data as we received it | 758 /* FIXME: it would be better if we wrote the data as we received it |
760 instead of all at once, calling write multiple times and | 759 instead of all at once, calling write multiple times and |
761 close once at the very end | 760 close once at the very end |
762 */ | 761 */ |
763 gaim_conv_custom_smiley_write(conv, slpcall->data_info, data, size); | 762 gaim_conv_custom_smiley_write(conv, slpcall->data_info, data, size); |
764 gaim_conv_custom_smiley_close(conv, slpcall->data_info ); | 763 gaim_conv_custom_smiley_close(conv, slpcall->data_info ); |
765 | 764 #ifdef MSN_DEBUG_UD |
766 gaim_debug_info("msn", "Got smiley: %s\n", slpcall->data_info); | 765 gaim_debug_info("msn", "Got smiley: %s\n", slpcall->data_info); |
766 #endif | |
767 } | 767 } |
768 | 768 |
769 void | 769 void |
770 msn_emoticon_msg(MsnCmdProc *cmdproc, MsnMessage *msg) | 770 msn_emoticon_msg(MsnCmdProc *cmdproc, MsnMessage *msg) |
771 { | 771 { |
839 { | 839 { |
840 MsnUser *user; | 840 MsnUser *user; |
841 | 841 |
842 g_return_if_fail(userlist != NULL); | 842 g_return_if_fail(userlist != NULL); |
843 | 843 |
844 #ifdef MSN_DEBUG_UD | |
844 gaim_debug_info("msn", "Releasing buddy icon request\n"); | 845 gaim_debug_info("msn", "Releasing buddy icon request\n"); |
846 #endif | |
845 | 847 |
846 while (userlist->buddy_icon_window > 0) | 848 while (userlist->buddy_icon_window > 0) |
847 { | 849 { |
848 GQueue *queue; | 850 GQueue *queue; |
849 GaimAccount *account; | 851 GaimAccount *account; |
860 username = user->passport; | 862 username = user->passport; |
861 | 863 |
862 msn_request_user_display(user); | 864 msn_request_user_display(user); |
863 userlist->buddy_icon_window--; | 865 userlist->buddy_icon_window--; |
864 | 866 |
867 #ifdef MSN_DEBUG_UD | |
865 gaim_debug_info("msn", "buddy_icon_window=%d\n", | 868 gaim_debug_info("msn", "buddy_icon_window=%d\n", |
866 userlist->buddy_icon_window); | 869 userlist->buddy_icon_window); |
870 #endif | |
867 } | 871 } |
868 } | 872 } |
869 | 873 |
870 void | 874 void |
871 msn_queue_buddy_icon_request(MsnUser *user) | 875 msn_queue_buddy_icon_request(MsnUser *user) |
904 MsnUserList *userlist; | 908 MsnUserList *userlist; |
905 | 909 |
906 userlist = user->userlist; | 910 userlist = user->userlist; |
907 queue = userlist->buddy_icon_requests; | 911 queue = userlist->buddy_icon_requests; |
908 | 912 |
913 #ifdef MSN_DEBUG_UD | |
909 gaim_debug_info("msn", "Queueing buddy icon request: %s\n", | 914 gaim_debug_info("msn", "Queueing buddy icon request: %s\n", |
910 user->passport); | 915 user->passport); |
916 #endif | |
911 | 917 |
912 g_queue_push_tail(queue, user); | 918 g_queue_push_tail(queue, user); |
913 | 919 |
920 #ifdef MSN_DEBUG_UD | |
914 gaim_debug_info("msn", "buddy_icon_window=%d\n", | 921 gaim_debug_info("msn", "buddy_icon_window=%d\n", |
915 userlist->buddy_icon_window); | 922 userlist->buddy_icon_window); |
923 #endif | |
916 | 924 |
917 if (userlist->buddy_icon_window > 0) | 925 if (userlist->buddy_icon_window > 0) |
918 msn_release_buddy_icon_request(userlist); | 926 msn_release_buddy_icon_request(userlist); |
919 } | 927 } |
920 } | 928 } |
929 GSList *sl; | 937 GSList *sl; |
930 | 938 |
931 g_return_if_fail(slpcall != NULL); | 939 g_return_if_fail(slpcall != NULL); |
932 | 940 |
933 info = slpcall->data_info; | 941 info = slpcall->data_info; |
942 #ifdef MSN_DEBUG_UD | |
934 gaim_debug_info("msn", "Got User Display: %s\n", info); | 943 gaim_debug_info("msn", "Got User Display: %s\n", info); |
944 #endif | |
935 | 945 |
936 userlist = slpcall->slplink->session->userlist; | 946 userlist = slpcall->slplink->session->userlist; |
937 account = slpcall->slplink->session->account; | 947 account = slpcall->slplink->session->account; |
938 | 948 |
939 /* TODO: I think we need better buddy icon core functions. */ | 949 /* TODO: I think we need better buddy icon core functions. */ |
964 { | 974 { |
965 MsnUserList *userlist; | 975 MsnUserList *userlist; |
966 | 976 |
967 g_return_if_fail(slpcall != NULL); | 977 g_return_if_fail(slpcall != NULL); |
968 | 978 |
979 #ifdef MSN_DEBUG_UD | |
969 gaim_debug_info("msn", "End User Display\n"); | 980 gaim_debug_info("msn", "End User Display\n"); |
981 #endif | |
982 | |
983 /* Maybe the slplink was destroyed. */ | |
984 if (slpcall->slplink == NULL) | |
985 return; | |
970 | 986 |
971 userlist = slpcall->slplink->session->userlist; | 987 userlist = slpcall->slplink->session->userlist; |
972 | 988 |
973 /* If the session is being destroyed we better stop doing anything. */ | 989 /* If the session is being destroyed we better stop doing anything. */ |
974 if (slpcall->slplink->session->destroying) | 990 if (slpcall->slplink->session->destroying) |
975 return; | 991 return; |
976 | 992 |
977 /* Free one window slot */ | 993 /* Free one window slot */ |
978 userlist->buddy_icon_window++; | 994 userlist->buddy_icon_window++; |
979 | 995 |
996 #ifdef MSN_DEBUG_UD | |
980 gaim_debug_info("msn", "buddy_icon_window=%d\n", | 997 gaim_debug_info("msn", "buddy_icon_window=%d\n", |
981 userlist->buddy_icon_window); | 998 userlist->buddy_icon_window); |
999 #endif | |
982 | 1000 |
983 msn_release_buddy_icon_request(userlist); | 1001 msn_release_buddy_icon_request(userlist); |
984 } | 1002 } |
985 | 1003 |
986 void | 1004 void |
1014 gchar *data = NULL; | 1032 gchar *data = NULL; |
1015 gsize len = 0; | 1033 gsize len = 0; |
1016 const char *my_info = NULL; | 1034 const char *my_info = NULL; |
1017 GSList *sl; | 1035 GSList *sl; |
1018 | 1036 |
1037 #ifdef MSN_DEBUG_UD | |
1019 gaim_debug_info("msn", "Requesting our own user display\n"); | 1038 gaim_debug_info("msn", "Requesting our own user display\n"); |
1039 #endif | |
1020 | 1040 |
1021 my_obj = msn_user_get_object(session->user); | 1041 my_obj = msn_user_get_object(session->user); |
1022 | 1042 |
1023 if (my_obj != NULL) | 1043 if (my_obj != NULL) |
1024 { | 1044 { |
1042 } | 1062 } |
1043 | 1063 |
1044 /* Free one window slot */ | 1064 /* Free one window slot */ |
1045 session->userlist->buddy_icon_window++; | 1065 session->userlist->buddy_icon_window++; |
1046 | 1066 |
1067 #ifdef MSN_DEBUG_UD | |
1047 gaim_debug_info("msn", "buddy_icon_window=%d\n", | 1068 gaim_debug_info("msn", "buddy_icon_window=%d\n", |
1048 session->userlist->buddy_icon_window); | 1069 session->userlist->buddy_icon_window); |
1070 #endif | |
1049 | 1071 |
1050 msn_release_buddy_icon_request(session->userlist); | 1072 msn_release_buddy_icon_request(session->userlist); |
1051 } | 1073 } |
1052 } | 1074 } |