| 25 #include "servconn.h" |
25 #include "servconn.h" |
| 26 #include "error.h" |
26 #include "error.h" |
| 27 |
27 |
| 28 static void read_cb(gpointer data, gint source, GaimInputCondition cond); |
28 static void read_cb(gpointer data, gint source, GaimInputCondition cond); |
| 29 |
29 |
| |
30 MsnServConn * |
| |
31 msn_servconn_new(MsnSession *session, MsnServConnType type) |
| |
32 { |
| |
33 MsnServConn *servconn; |
| |
34 |
| |
35 g_return_val_if_fail(session != NULL, NULL); |
| |
36 |
| |
37 servconn = g_new0(MsnServConn, 1); |
| |
38 |
| |
39 servconn->type = type; |
| |
40 |
| |
41 servconn->session = session; |
| |
42 servconn->cmdproc = msn_cmdproc_new(session); |
| |
43 servconn->cmdproc->servconn = servconn; |
| |
44 |
| |
45 if (session->http_method) |
| |
46 { |
| |
47 servconn->http_data = g_new0(MsnHttpMethodData, 1); |
| |
48 servconn->http_data->virgin = TRUE; |
| |
49 } |
| |
50 |
| |
51 servconn->num = session->servconns_count++; |
| |
52 |
| |
53 return servconn; |
| |
54 } |
| |
55 |
| |
56 void |
| |
57 msn_servconn_destroy(MsnServConn *servconn) |
| |
58 { |
| |
59 g_return_if_fail(servconn != NULL); |
| |
60 |
| |
61 if (servconn->processing) |
| |
62 { |
| |
63 servconn->wasted = TRUE; |
| |
64 return; |
| |
65 } |
| |
66 |
| |
67 if (servconn->connected) |
| |
68 msn_servconn_disconnect(servconn); |
| |
69 |
| |
70 if (servconn->http_data != NULL) |
| |
71 g_free(servconn->http_data); |
| |
72 |
| |
73 msn_cmdproc_destroy(servconn->cmdproc); |
| |
74 g_free(servconn); |
| |
75 } |
| |
76 |
| 30 static void |
77 static void |
| 31 show_error(MsnServConn *servconn) |
78 show_error(MsnServConn *servconn) |
| 32 { |
79 { |
| 33 GaimConnection *gc; |
80 GaimConnection *gc; |
| 34 char *tmp; |
81 char *tmp; |
| 66 else |
113 else |
| 67 { |
114 { |
| 68 MsnSwitchBoard *swboard; |
115 MsnSwitchBoard *swboard; |
| 69 swboard = servconn->data; |
116 swboard = servconn->data; |
| 70 swboard->error = MSN_SB_ERROR_CONNECTION; |
117 swboard->error = MSN_SB_ERROR_CONNECTION; |
| 71 /* |
|
| 72 GaimAccount *account; |
|
| 73 char *primary; |
|
| 74 |
|
| 75 account = gaim_connection_get_account(gc); |
|
| 76 primary = g_strdup_printf(_("MSN error for account %s"), |
|
| 77 gaim_account_get_username(account)); |
|
| 78 |
|
| 79 gaim_notify_error(gc, NULL, primary, tmp); |
|
| 80 |
|
| 81 g_free(primary); |
|
| 82 */ |
|
| 83 } |
118 } |
| 84 |
119 |
| 85 g_free(tmp); |
120 g_free(tmp); |
| 86 } |
121 } |
| 87 |
122 |
| 102 else |
137 else |
| 103 { |
138 { |
| 104 servconn->cmdproc->error = MSN_ERROR_CONNECT; |
139 servconn->cmdproc->error = MSN_ERROR_CONNECT; |
| 105 show_error(servconn); |
140 show_error(servconn); |
| 106 } |
141 } |
| 107 } |
|
| 108 |
|
| 109 MsnServConn * |
|
| 110 msn_servconn_new(MsnSession *session, MsnServConnType type) |
|
| 111 { |
|
| 112 MsnServConn *servconn; |
|
| 113 |
|
| 114 g_return_val_if_fail(session != NULL, NULL); |
|
| 115 |
|
| 116 servconn = g_new0(MsnServConn, 1); |
|
| 117 |
|
| 118 servconn->type = type; |
|
| 119 |
|
| 120 servconn->session = session; |
|
| 121 servconn->cmdproc = msn_cmdproc_new(session); |
|
| 122 servconn->cmdproc->servconn = servconn; |
|
| 123 |
|
| 124 if (session->http_method) |
|
| 125 { |
|
| 126 servconn->http_data = g_new0(MsnHttpMethodData, 1); |
|
| 127 servconn->http_data->virgin = TRUE; |
|
| 128 } |
|
| 129 |
|
| 130 servconn->num = session->servconns_count++; |
|
| 131 |
|
| 132 return servconn; |
|
| 133 } |
|
| 134 |
|
| 135 void |
|
| 136 msn_servconn_destroy(MsnServConn *servconn) |
|
| 137 { |
|
| 138 g_return_if_fail(servconn != NULL); |
|
| 139 |
|
| 140 if (servconn->processing) |
|
| 141 { |
|
| 142 servconn->wasted = TRUE; |
|
| 143 return; |
|
| 144 } |
|
| 145 |
|
| 146 if (servconn->connected) |
|
| 147 msn_servconn_disconnect(servconn); |
|
| 148 |
|
| 149 if (servconn->http_data != NULL) |
|
| 150 g_free(servconn->http_data); |
|
| 151 |
|
| 152 #if 0 |
|
| 153 if (servconn->rx_buf != NULL) |
|
| 154 g_free(servconn->rx_buf); |
|
| 155 #endif |
|
| 156 |
|
| 157 msn_cmdproc_destroy(servconn->cmdproc); |
|
| 158 g_free(servconn); |
|
| 159 } |
142 } |
| 160 |
143 |
| 161 gboolean |
144 gboolean |
| 162 msn_servconn_connect(MsnServConn *servconn, const char *host, int port) |
145 msn_servconn_connect(MsnServConn *servconn, const char *host, int port) |
| 163 { |
146 { |