Mercurial > pidgin
annotate src/protocols/msn/session.c @ 6764:6d0d4e9149b9
[gaim-migrate @ 7296]
well, jabber.org is being a pain in the moment, as is my server. but this seems to work, so here it is. Jabber SSL support. Make sure you set the port to 5223 and check the "Use SSL" checkbox in the account editor.
committer: Tailor Script <tailor@pidgin.im>
| author | Nathan Walp <nwalp@pidgin.im> |
|---|---|
| date | Sat, 06 Sep 2003 16:04:41 +0000 |
| parents | 6c95f01aaf49 |
| children | f5c483cdd1d8 |
| rev | line source |
|---|---|
| 5309 | 1 /** |
| 2 * @file session.c MSN session functions | |
| 3 * | |
| 4 * gaim | |
| 5 * | |
| 6 * Copyright (C) 2003 Christian Hammond <chipx86@gnupdate.org> | |
|
6701
b7e113a59b51
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
7 * |
| 5309 | 8 * This program is free software; you can redistribute it and/or modify |
| 9 * it under the terms of the GNU General Public License as published by | |
| 10 * the Free Software Foundation; either version 2 of the License, or | |
| 11 * (at your option) any later version. | |
| 12 * | |
| 13 * This program is distributed in the hope that it will be useful, | |
| 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 16 * GNU General Public License for more details. | |
| 17 * | |
| 18 * You should have received a copy of the GNU General Public License | |
| 19 * along with this program; if not, write to the Free Software | |
| 20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 21 */ | |
| 22 #include "msn.h" | |
| 23 #include "session.h" | |
| 24 #include "dispatch.h" | |
| 25 | |
| 26 MsnSession * | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5518
diff
changeset
|
27 msn_session_new(GaimAccount *account, const char *server, int port) |
| 5309 | 28 { |
| 29 MsnSession *session; | |
| 30 | |
| 31 g_return_val_if_fail(account != NULL, NULL); | |
| 32 | |
| 33 session = g_new0(MsnSession, 1); | |
| 34 | |
| 35 session->account = account; | |
| 36 session->dispatch_server = g_strdup(server); | |
| 37 session->dispatch_port = port; | |
| 38 | |
|
5518
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5427
diff
changeset
|
39 session->users = msn_users_new(); |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5427
diff
changeset
|
40 session->groups = msn_groups_new(); |
| 5309 | 41 |
|
6738
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6726
diff
changeset
|
42 #ifdef HAVE_SSL |
|
6701
b7e113a59b51
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
43 session->protocol_ver = 9; |
|
6726
3c234b619685
[gaim-migrate @ 7253]
Christian Hammond <chipx86@chipx86.com>
parents:
6701
diff
changeset
|
44 #else |
|
3c234b619685
[gaim-migrate @ 7253]
Christian Hammond <chipx86@chipx86.com>
parents:
6701
diff
changeset
|
45 session->protocol_ver = 7; |
|
3c234b619685
[gaim-migrate @ 7253]
Christian Hammond <chipx86@chipx86.com>
parents:
6701
diff
changeset
|
46 #endif |
|
6701
b7e113a59b51
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
47 |
| 5309 | 48 return session; |
| 49 } | |
| 50 | |
| 51 void | |
| 52 msn_session_destroy(MsnSession *session) | |
| 53 { | |
| 54 g_return_if_fail(session != NULL); | |
| 55 | |
| 56 if (session->connected) | |
| 57 msn_session_disconnect(session); | |
| 58 | |
| 59 if (session->dispatch_server != NULL) | |
| 60 g_free(session->dispatch_server); | |
| 61 | |
| 62 while (session->switches != NULL) | |
| 63 msn_switchboard_destroy(session->switches->data); | |
| 64 | |
| 65 while (session->lists.forward) | |
| 66 msn_user_destroy(session->lists.forward->data); | |
| 67 | |
| 68 g_slist_free(session->lists.allow); | |
| 69 g_slist_free(session->lists.block); | |
| 70 | |
|
5518
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5427
diff
changeset
|
71 msn_groups_destroy(session->groups); |
| 5309 | 72 msn_users_destroy(session->users); |
| 73 | |
| 5427 | 74 g_free(session->passport_info.kv); |
| 75 g_free(session->passport_info.sid); | |
| 76 g_free(session->passport_info.mspauth); | |
| 77 g_free(session->passport_info.file); | |
| 78 | |
| 5309 | 79 g_free(session); |
| 80 } | |
| 81 | |
| 82 gboolean | |
| 83 msn_session_connect(MsnSession *session) | |
| 84 { | |
| 85 g_return_val_if_fail(session != NULL, FALSE); | |
| 86 g_return_val_if_fail(!session->connected, TRUE); | |
| 87 | |
| 88 session->connected = TRUE; | |
| 89 | |
| 90 session->dispatch_conn = msn_dispatch_new(session, | |
| 91 session->dispatch_server, | |
| 92 session->dispatch_port); | |
| 93 | |
| 94 if (msn_servconn_connect(session->dispatch_conn)) | |
| 95 return TRUE; | |
| 96 | |
| 97 return FALSE; | |
| 98 } | |
| 99 | |
| 100 void | |
| 101 msn_session_disconnect(MsnSession *session) | |
| 102 { | |
| 103 g_return_if_fail(session != NULL); | |
| 104 g_return_if_fail(session->connected); | |
| 105 | |
| 106 if (session->dispatch_conn != NULL) { | |
| 107 msn_servconn_destroy(session->dispatch_conn); | |
| 108 session->dispatch_conn = NULL; | |
| 109 } | |
| 110 | |
| 111 while (session->switches != NULL) { | |
| 112 MsnSwitchBoard *board = (MsnSwitchBoard *)session->switches->data; | |
| 113 | |
| 114 msn_switchboard_destroy(board); | |
| 115 } | |
| 116 | |
| 117 if (session->notification_conn != NULL) { | |
| 118 msn_servconn_destroy(session->notification_conn); | |
| 119 session->notification_conn = NULL; | |
| 120 } | |
| 121 } | |
| 122 | |
| 123 MsnSwitchBoard * | |
| 124 msn_session_open_switchboard(MsnSession *session) | |
| 125 { | |
| 126 MsnSwitchBoard *swboard; | |
| 127 | |
| 128 g_return_val_if_fail(session != NULL, NULL); | |
| 129 | |
| 130 if (msn_servconn_send_command(session->notification_conn, | |
| 131 "XFR", "SB") < 0) { | |
| 132 return NULL; | |
| 133 } | |
| 134 | |
| 135 swboard = msn_switchboard_new(session); | |
| 136 | |
| 137 return swboard; | |
| 138 } | |
| 139 | |
| 140 MsnSwitchBoard * | |
| 141 msn_session_find_switch_with_passport(const MsnSession *session, | |
| 142 const char *passport) | |
| 143 { | |
| 144 GList *l; | |
| 145 MsnSwitchBoard *swboard; | |
| 146 | |
| 147 g_return_val_if_fail(session != NULL, NULL); | |
| 148 g_return_val_if_fail(passport != NULL, NULL); | |
| 149 | |
| 150 for (l = session->switches; l != NULL; l = l->next) { | |
| 151 swboard = (MsnSwitchBoard *)l->data; | |
| 152 | |
|
5351
2aa7e4237142
[gaim-migrate @ 5727]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
153 if (!swboard->hidden && |
|
2aa7e4237142
[gaim-migrate @ 5727]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
154 !g_ascii_strcasecmp(passport, |
| 5309 | 155 msn_user_get_passport(swboard->user))) { |
| 156 return swboard; | |
| 157 } | |
| 158 } | |
| 159 | |
| 160 return NULL; | |
| 161 } | |
| 162 | |
| 163 MsnSwitchBoard * | |
| 164 msn_session_find_switch_with_id(const MsnSession *session, int chat_id) | |
| 165 { | |
| 166 GList *l; | |
| 167 MsnSwitchBoard *swboard; | |
| 168 | |
| 169 g_return_val_if_fail(session != NULL, NULL); | |
| 170 g_return_val_if_fail(chat_id > 0, NULL); | |
| 171 | |
| 172 for (l = session->switches; l != NULL; l = l->next) { | |
| 173 swboard = (MsnSwitchBoard *)l->data; | |
| 174 | |
| 175 if (swboard->chat_id == chat_id) | |
| 176 return swboard; | |
| 177 } | |
| 178 | |
| 179 return NULL; | |
| 180 } | |
| 181 | |
| 182 MsnSwitchBoard * | |
| 183 msn_session_find_unused_switch(const MsnSession *session) | |
| 184 { | |
| 185 GList *l; | |
| 186 MsnSwitchBoard *swboard; | |
| 187 | |
| 188 g_return_val_if_fail(session != NULL, NULL); | |
| 189 | |
| 190 for (l = session->switches; l != NULL; l = l->next) { | |
| 191 swboard = (MsnSwitchBoard *)l->data; | |
| 192 | |
|
5354
8a74fbcb7bcb
[gaim-migrate @ 5730]
Christian Hammond <chipx86@chipx86.com>
parents:
5351
diff
changeset
|
193 if (!swboard->in_use) |
| 5309 | 194 return swboard; |
| 195 } | |
| 196 | |
| 197 return NULL; | |
| 198 } | |
| 199 |
