src/protocols/msn/session.c

changeset 8808
1cb5ddf6b625
parent 8661
9fdfb3108ab1
child 8831
060f87f65f48
equal deleted inserted replaced
8807:128d3dae0196 8808:1cb5ddf6b625
156 156
157 MsnSwitchBoard * 157 MsnSwitchBoard *
158 msn_session_open_switchboard(MsnSession *session) 158 msn_session_open_switchboard(MsnSession *session)
159 { 159 {
160 MsnSwitchBoard *swboard; 160 MsnSwitchBoard *swboard;
161 161 MsnCmdProc *cmdproc;
162 g_return_val_if_fail(session != NULL, NULL); 162
163 163 g_return_val_if_fail(session != NULL, NULL);
164 if (msn_servconn_send_command(session->notification_conn, "XFR", "SB") < 0) 164
165 { 165 cmdproc = session->notification_conn->cmdproc;
166
167 msn_cmdproc_send(cmdproc, "XFR", "%s", "SB");
168
169 if (cmdproc->error)
166 return NULL; 170 return NULL;
167 }
168 171
169 swboard = msn_switchboard_new(session); 172 swboard = msn_switchboard_new(session);
170 173
171 return swboard; 174 return swboard;
172 } 175 }
173 176
174 gboolean 177 gboolean
175 msn_session_change_status(MsnSession *session, const char *state) 178 msn_session_change_status(MsnSession *session, const char *state)
176 { 179 {
177 MsnUser *user = session->user; 180 MsnCmdProc *cmdproc;
181 MsnUser *user;
178 MsnObject *msnobj; 182 MsnObject *msnobj;
179 char buf[MSN_BUF_LEN];
180 183
181 g_return_val_if_fail(session != NULL, FALSE); 184 g_return_val_if_fail(session != NULL, FALSE);
182 g_return_val_if_fail(state != NULL, FALSE); 185 g_return_val_if_fail(state != NULL, FALSE);
183 186
187 user = session->user;
184 msnobj = msn_user_get_object(user); 188 msnobj = msn_user_get_object(user);
185 189
186 if (state != session->away_state) 190 if (state != session->away_state)
187 { 191 {
188 if (session->away_state != NULL) 192 if (session->away_state != NULL)
189 g_free(session->away_state); 193 g_free(session->away_state);
190 194
191 session->away_state = g_strdup(state); 195 session->away_state = g_strdup(state);
192 } 196 }
193 197
198 cmdproc = session->notification_conn->cmdproc;
199
194 if (msnobj == NULL) 200 if (msnobj == NULL)
195 g_snprintf(buf, sizeof(buf), "%s %d", state, MSN_CLIENT_ID); 201 {
202 msn_cmdproc_send(cmdproc, "CHG", "%s %d", state, MSN_CLIENT_ID);
203 }
196 else 204 else
197 { 205 {
198 char *msnobj_str = msn_object_to_string(msnobj); 206 char *msnobj_str = msn_object_to_string(msnobj);
199 207
200 g_snprintf(buf, sizeof(buf), "%s %d %s", state, MSN_CLIENT_ID, 208 msn_cmdproc_send(cmdproc, "CHG", "%s %d %s", state, MSN_CLIENT_ID,
201 gaim_url_encode(msnobj_str)); 209 gaim_url_encode(msnobj_str));
202 210
203 g_free(msnobj_str); 211 g_free(msnobj_str);
204 }
205
206 if (!msn_servconn_send_command(session->notification_conn, "CHG", buf))
207 {
208 gaim_connection_error(gaim_account_get_connection(session->account),
209 _("Write error"));
210
211 return FALSE;
212 } 212 }
213 213
214 return TRUE; 214 return TRUE;
215 } 215 }
216 216

mercurial