comparison src/protocols/msn/httpmethod.c @ 8207:aa44049e8891

[gaim-migrate @ 8930] This doesn't fix HTTP method, but it does add debug info and prevent sending PNGs when using HTTP method, since that would cause a disconnect. committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Wed, 04 Feb 2004 06:26:54 +0000
parents 99ffabc6ce73
children f24172f53650
comparison
equal deleted inserted replaced
8206:e0d16895a0e3 8207:aa44049e8891
48 static gboolean 48 static gboolean
49 http_poll(gpointer data) 49 http_poll(gpointer data)
50 { 50 {
51 MsnServConn *servconn = data; 51 MsnServConn *servconn = data;
52 52
53 #if 0
54 gaim_debug_info("msn", "Polling server %s.\n", 53 gaim_debug_info("msn", "Polling server %s.\n",
55 servconn->http_data->gateway_ip); 54 servconn->http_data->gateway_ip);
56 #endif
57 msn_http_servconn_poll(servconn); 55 msn_http_servconn_poll(servconn);
58 56
59 servconn->http_data->timer = 0; 57 servconn->http_data->timer = 0;
58
59 gaim_debug(GAIM_DEBUG_INFO, "msn", "Returning from http_poll\n");
60 60
61 return FALSE; 61 return FALSE;
62 } 62 }
63 63
64 static void 64 static void
65 stop_timer(MsnServConn *servconn) 65 stop_timer(MsnServConn *servconn)
66 { 66 {
67 if (servconn->http_data->timer) 67 if (servconn->http_data->timer)
68 { 68 {
69 gaim_debug(GAIM_DEBUG_INFO, "msn", "Stopping timer\n");
69 g_source_remove(servconn->http_data->timer); 70 g_source_remove(servconn->http_data->timer);
70 servconn->http_data->timer = 0; 71 servconn->http_data->timer = 0;
71 } 72 }
72 } 73 }
73 74
74 static void 75 static void
75 start_timer(MsnServConn *servconn) 76 start_timer(MsnServConn *servconn)
76 { 77 {
77 stop_timer(servconn); 78 stop_timer(servconn);
78 79
80 gaim_debug(GAIM_DEBUG_INFO, "msn", "Starting timer\n");
79 servconn->http_data->timer = g_timeout_add(5000, http_poll, servconn); 81 servconn->http_data->timer = g_timeout_add(5000, http_poll, servconn);
80 } 82 }
81 83
82 size_t 84 size_t
83 msn_http_servconn_write(MsnServConn *servconn, const char *buf, size_t size, 85 msn_http_servconn_write(MsnServConn *servconn, const char *buf, size_t size,
160 servconn->fd, temp); 162 servconn->fd, temp);
161 #endif 163 #endif
162 164
163 s = 0; 165 s = 0;
164 needed = strlen(temp); 166 needed = strlen(temp);
165 167
166 do { 168 do {
167 res = write(servconn->fd, temp, needed); 169 res = write(servconn->fd, temp, needed);
168 if (res >= 0) 170 if (res >= 0)
169 s += res; 171 s += res;
170 else if (errno != EAGAIN) { 172 else if (errno != EAGAIN) {
172 gaim_connection_error(servconn->session->account->gc, msg); 174 gaim_connection_error(servconn->session->account->gc, msg);
173 g_free(msg); 175 g_free(msg);
174 return -1; 176 return -1;
175 } 177 }
176 } while (s < needed); 178 } while (s < needed);
177 179
178 g_free(temp); 180 g_free(temp);
179 181
180 servconn->http_data->waiting_response = TRUE; 182 servconn->http_data->waiting_response = TRUE;
181 183
182 servconn->http_data->virgin = FALSE; 184 servconn->http_data->virgin = FALSE;
215 "\r\n", 217 "\r\n",
216 servconn->http_data->gateway_ip, 218 servconn->http_data->gateway_ip,
217 servconn->http_data->session_id, 219 servconn->http_data->session_id,
218 servconn->http_data->gateway_ip); 220 servconn->http_data->gateway_ip);
219 221
220 #if 0
221 gaim_debug_misc("msn", "Writing to HTTP: {%s}\n", temp); 222 gaim_debug_misc("msn", "Writing to HTTP: {%s}\n", temp);
222 #endif
223 223
224 s = write(servconn->fd, temp, strlen(temp)); 224 s = write(servconn->fd, temp, strlen(temp));
225 225
226 g_free(temp); 226 g_free(temp);
227 227
250 g_return_val_if_fail(size > 0, FALSE); 250 g_return_val_if_fail(size > 0, FALSE);
251 g_return_val_if_fail(ret_buf != NULL, FALSE); 251 g_return_val_if_fail(ret_buf != NULL, FALSE);
252 g_return_val_if_fail(ret_size != NULL, FALSE); 252 g_return_val_if_fail(ret_size != NULL, FALSE);
253 g_return_val_if_fail(error != NULL, FALSE); 253 g_return_val_if_fail(error != NULL, FALSE);
254 254
255 #if 0
256 gaim_debug_info("msn", "parsing data {%s} from fd %d\n", buf, servconn->fd); 255 gaim_debug_info("msn", "parsing data {%s} from fd %d\n", buf, servconn->fd);
257 #endif
258 servconn->http_data->waiting_response = FALSE; 256 servconn->http_data->waiting_response = FALSE;
259 257
260 gc = gaim_account_get_connection(servconn->session->account); 258 gc = gaim_account_get_connection(servconn->session->account);
261 259
262 /* Healthy defaults. */ 260 /* Healthy defaults. */
298 296
299 headers = g_strndup(buf, s - buf); 297 headers = g_strndup(buf, s - buf);
300 s += 4; /* Skip \r\n */ 298 s += 4; /* Skip \r\n */
301 body = g_strndup(s, size - (s - buf)); 299 body = g_strndup(s, size - (s - buf));
302 300
303 #if 0
304 gaim_debug_misc("msn", "Incoming HTTP buffer: {%s\r\n%s}", headers, body); 301 gaim_debug_misc("msn", "Incoming HTTP buffer: {%s\r\n%s}", headers, body);
305 #endif
306 302
307 if ((s = strstr(headers, "Content-Length: ")) != NULL) 303 if ((s = strstr(headers, "Content-Length: ")) != NULL)
308 { 304 {
309 s += strlen("Content-Length: "); 305 s += strlen("Content-Length: ");
310 306