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 }