Mercurial > pidgin.yaz
comparison src/proxy.c @ 14108:7a205b430d19
[gaim-migrate @ 16742]
Removing the "error_cb" parameter for gaim_proxy_connect(), changing it
back to how it was. As I started making changes to oscar to support
canceling connection attempts, I realized that having a separate callback
for errors would result in more code duplication than was needed.
Originally I thought the separate callback would make things cleaner.
Anyway, sorry for the noise.
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Mon, 14 Aug 2006 04:43:38 +0000 |
parents | eec0c7fd8529 |
children | c3167a1dd817 |
comparison
equal
deleted
inserted
replaced
14107:c0ee28af3ca2 | 14108:7a205b430d19 |
---|---|
38 #include "proxy.h" | 38 #include "proxy.h" |
39 #include "util.h" | 39 #include "util.h" |
40 | 40 |
41 struct _GaimProxyConnectInfo { | 41 struct _GaimProxyConnectInfo { |
42 GaimProxyConnectFunction connect_cb; | 42 GaimProxyConnectFunction connect_cb; |
43 GaimProxyErrorFunction error_cb; | |
44 gpointer data; | 43 gpointer data; |
45 char *host; | 44 char *host; |
46 int port; | 45 int port; |
47 int fd; | 46 int fd; |
48 guint inpa; | 47 guint inpa; |
322 } | 321 } |
323 | 322 |
324 static void | 323 static void |
325 gaim_proxy_connect_info_connected(GaimProxyConnectInfo *connect_info) | 324 gaim_proxy_connect_info_connected(GaimProxyConnectInfo *connect_info) |
326 { | 325 { |
327 connect_info->connect_cb(connect_info->data, connect_info->fd); | 326 connect_info->connect_cb(connect_info->data, connect_info->fd, NULL); |
328 | 327 |
329 /* | 328 /* |
330 * We've passed the file descriptor to the protocol, so it's no longer | 329 * We've passed the file descriptor to the protocol, so it's no longer |
331 * our responsibility, and we should be careful not to free it when | 330 * our responsibility, and we should be careful not to free it when |
332 * we destroy the connect_info. | 331 * we destroy the connect_info. |
346 * good error_message. | 345 * good error_message. |
347 */ | 346 */ |
348 static void | 347 static void |
349 gaim_proxy_connect_info_error(GaimProxyConnectInfo *connect_info, const gchar *error_message) | 348 gaim_proxy_connect_info_error(GaimProxyConnectInfo *connect_info, const gchar *error_message) |
350 { | 349 { |
351 if (connect_info->error_cb == NULL) | 350 connect_info->connect_cb(connect_info->data, -1, error_message); |
352 { | |
353 /* | |
354 * TODO | |
355 * While we're transitioning to the new gaim_proxy_connect() | |
356 * code, not all callers supply an error_cb. If this is the | |
357 * case then they're expecting connect_cb to be called with | |
358 * an fd of -1 in the case of an error. Once all callers have | |
359 * been changed this whole if statement should be removed. | |
360 */ | |
361 connect_info->connect_cb(connect_info->data, -1); | |
362 gaim_proxy_connect_info_destroy(connect_info); | |
363 return; | |
364 } | |
365 | |
366 connect_info->error_cb(connect_info->data, error_message); | |
367 gaim_proxy_connect_info_destroy(connect_info); | 351 gaim_proxy_connect_info_destroy(connect_info); |
368 } | 352 } |
369 | 353 |
370 #if defined(__unix__) || defined(__APPLE__) | 354 #if defined(__unix__) || defined(__APPLE__) |
371 | 355 |
2337 return gpi; | 2321 return gpi; |
2338 } | 2322 } |
2339 | 2323 |
2340 GaimProxyConnectInfo * | 2324 GaimProxyConnectInfo * |
2341 gaim_proxy_connect(GaimAccount *account, const char *host, int port, | 2325 gaim_proxy_connect(GaimAccount *account, const char *host, int port, |
2342 GaimProxyConnectFunction connect_cb, | 2326 GaimProxyConnectFunction connect_cb, gpointer data) |
2343 GaimProxyErrorFunction error_cb, gpointer data) | |
2344 { | 2327 { |
2345 const char *connecthost = host; | 2328 const char *connecthost = host; |
2346 int connectport = port; | 2329 int connectport = port; |
2347 GaimProxyConnectInfo *connect_info; | 2330 GaimProxyConnectInfo *connect_info; |
2348 | 2331 |
2349 g_return_val_if_fail(host != NULL, NULL); | 2332 g_return_val_if_fail(host != NULL, NULL); |
2350 g_return_val_if_fail(port > 0, NULL); | 2333 g_return_val_if_fail(port > 0, NULL); |
2351 g_return_val_if_fail(connect_cb != NULL, NULL); | 2334 g_return_val_if_fail(connect_cb != NULL, NULL); |
2352 /* g_return_val_if_fail(error_cb != NULL, NULL); *//* TODO: Soon! */ | |
2353 | 2335 |
2354 connect_info = g_new0(GaimProxyConnectInfo, 1); | 2336 connect_info = g_new0(GaimProxyConnectInfo, 1); |
2355 connect_info->fd = -1; | 2337 connect_info->fd = -1; |
2356 connect_info->connect_cb = connect_cb; | 2338 connect_info->connect_cb = connect_cb; |
2357 connect_info->error_cb = error_cb; | |
2358 connect_info->data = data; | 2339 connect_info->data = data; |
2359 connect_info->host = g_strdup(host); | 2340 connect_info->host = g_strdup(host); |
2360 connect_info->port = port; | 2341 connect_info->port = port; |
2361 connect_info->gpi = gaim_proxy_get_setup(account); | 2342 connect_info->gpi = gaim_proxy_get_setup(account); |
2362 | 2343 |
2402 /* | 2383 /* |
2403 * Combine some of this code with gaim_proxy_connect() | 2384 * Combine some of this code with gaim_proxy_connect() |
2404 */ | 2385 */ |
2405 GaimProxyConnectInfo * | 2386 GaimProxyConnectInfo * |
2406 gaim_proxy_connect_socks5(GaimProxyInfo *gpi, const char *host, int port, | 2387 gaim_proxy_connect_socks5(GaimProxyInfo *gpi, const char *host, int port, |
2407 GaimProxyConnectFunction connect_cb, | 2388 GaimProxyConnectFunction connect_cb, gpointer data) |
2408 GaimProxyErrorFunction error_cb, gpointer data) | |
2409 { | 2389 { |
2410 GaimProxyConnectInfo *connect_info; | 2390 GaimProxyConnectInfo *connect_info; |
2411 | 2391 |
2412 g_return_val_if_fail(host != NULL, NULL); | 2392 g_return_val_if_fail(host != NULL, NULL); |
2413 g_return_val_if_fail(port > 0, NULL); | 2393 g_return_val_if_fail(port > 0, NULL); |
2414 g_return_val_if_fail(connect_cb != NULL, NULL); | 2394 g_return_val_if_fail(connect_cb != NULL, NULL); |
2415 /* g_return_val_if_fail(error_cb != NULL, NULL); *//* TODO: Soon! */ | |
2416 | 2395 |
2417 connect_info = g_new0(GaimProxyConnectInfo, 1); | 2396 connect_info = g_new0(GaimProxyConnectInfo, 1); |
2418 connect_info->fd = -1; | 2397 connect_info->fd = -1; |
2419 connect_info->connect_cb = connect_cb; | 2398 connect_info->connect_cb = connect_cb; |
2420 connect_info->error_cb = error_cb; | |
2421 connect_info->data = data; | 2399 connect_info->data = data; |
2422 connect_info->host = g_strdup(host); | 2400 connect_info->host = g_strdup(host); |
2423 connect_info->port = port; | 2401 connect_info->port = port; |
2424 connect_info->gpi = gpi; | 2402 connect_info->gpi = gpi; |
2425 | 2403 |