comparison libpurple/proxy.c @ 21121:35b4f1dc4c8d

replace most calls to strerror with calls to g_strerror. strerror will return a locale-specific string in the locale-specific encoding, which isn't guaranteed to be UTF-8. g_strerror will always return a UTF-8 string. I left gg and zephyr untouched, since gg doesn't include glib headers yet, and zephyr does something weird with a #define for strerror. Someone more familliar with those should take a look. And the win32 guys should check and see if I screwed something up, since they had strerror #defined to something else. This should fix #2247 (and maybe some mystery crashes)
author Nathan Walp <nwalp@pidgin.im>
date Sat, 03 Nov 2007 17:52:28 +0000
parents 787b3897ba9f
children 01e814b7556b
comparison
equal deleted inserted replaced
21120:0cc12e6909e2 21121:35b4f1dc4c8d
427 427
428 if (ret != 0 || error != 0) { 428 if (ret != 0 || error != 0) {
429 if (ret != 0) 429 if (ret != 0)
430 error = errno; 430 error = errno;
431 purple_debug_info("proxy", "Error connecting to %s:%d (%s).\n", 431 purple_debug_info("proxy", "Error connecting to %s:%d (%s).\n",
432 connect_data->host, connect_data->port, strerror(error)); 432 connect_data->host, connect_data->port, g_strerror(error));
433 433
434 purple_proxy_connect_data_disconnect(connect_data, strerror(error)); 434 purple_proxy_connect_data_disconnect(connect_data, g_strerror(error));
435 return; 435 return;
436 } 436 }
437 437
438 purple_proxy_connect_data_connected(connect_data); 438 purple_proxy_connect_data_connected(connect_data);
439 } 439 }
456 456
457 connect_data->fd = socket(addr->sa_family, SOCK_STREAM, 0); 457 connect_data->fd = socket(addr->sa_family, SOCK_STREAM, 0);
458 if (connect_data->fd < 0) 458 if (connect_data->fd < 0)
459 { 459 {
460 purple_proxy_connect_data_disconnect_formatted(connect_data, 460 purple_proxy_connect_data_disconnect_formatted(connect_data,
461 _("Unable to create socket:\n%s"), strerror(errno)); 461 _("Unable to create socket:\n%s"), g_strerror(errno));
462 return; 462 return;
463 } 463 }
464 464
465 flags = fcntl(connect_data->fd, F_GETFL); 465 flags = fcntl(connect_data->fd, F_GETFL);
466 fcntl(connect_data->fd, F_SETFL, flags | O_NONBLOCK); 466 fcntl(connect_data->fd, F_SETFL, flags | O_NONBLOCK);
476 connect_data->inpa = purple_input_add(connect_data->fd, 476 connect_data->inpa = purple_input_add(connect_data->fd,
477 PURPLE_INPUT_WRITE, socket_ready_cb, connect_data); 477 PURPLE_INPUT_WRITE, socket_ready_cb, connect_data);
478 } 478 }
479 else 479 else
480 { 480 {
481 purple_proxy_connect_data_disconnect(connect_data, strerror(errno)); 481 purple_proxy_connect_data_disconnect(connect_data, g_strerror(errno));
482 } 482 }
483 } 483 }
484 else 484 else
485 { 485 {
486 /* 486 /*
494 ret = purple_input_get_error(connect_data->fd, &error); 494 ret = purple_input_get_error(connect_data->fd, &error);
495 if ((ret != 0) || (error != 0)) 495 if ((ret != 0) || (error != 0))
496 { 496 {
497 if (ret != 0) 497 if (ret != 0)
498 error = errno; 498 error = errno;
499 purple_proxy_connect_data_disconnect(connect_data, strerror(error)); 499 purple_proxy_connect_data_disconnect(connect_data, g_strerror(error));
500 return; 500 return;
501 } 501 }
502 502
503 /* 503 /*
504 * We want to call the "connected" callback eventually, but we 504 * We want to call the "connected" callback eventually, but we
532 if (errno == EAGAIN) 532 if (errno == EAGAIN)
533 /* No worries */ 533 /* No worries */
534 return; 534 return;
535 535
536 /* Error! */ 536 /* Error! */
537 purple_proxy_connect_data_disconnect(connect_data, strerror(errno)); 537 purple_proxy_connect_data_disconnect(connect_data, g_strerror(errno));
538 return; 538 return;
539 } 539 }
540 if (ret < request_len) { 540 if (ret < request_len) {
541 connect_data->written_len += ret; 541 connect_data->written_len += ret;
542 return; 542 return;
591 /* No worries */ 591 /* No worries */
592 return; 592 return;
593 593
594 /* Error! */ 594 /* Error! */
595 purple_proxy_connect_data_disconnect_formatted(connect_data, 595 purple_proxy_connect_data_disconnect_formatted(connect_data,
596 _("Lost connection with server:\n%s"), strerror(errno)); 596 _("Lost connection with server:\n%s"), g_strerror(errno));
597 return; 597 return;
598 } 598 }
599 599
600 connect_data->read_len += len; 600 connect_data->read_len += len;
601 p[len] = '\0'; 601 p[len] = '\0';
830 ret = purple_input_get_error(connect_data->fd, &error); 830 ret = purple_input_get_error(connect_data->fd, &error);
831 if ((ret != 0) || (error != 0)) 831 if ((ret != 0) || (error != 0))
832 { 832 {
833 if (ret != 0) 833 if (ret != 0)
834 error = errno; 834 error = errno;
835 purple_proxy_connect_data_disconnect(connect_data, strerror(error)); 835 purple_proxy_connect_data_disconnect(connect_data, g_strerror(error));
836 return; 836 return;
837 } 837 }
838 838
839 purple_debug_info("proxy", "Using CONNECT tunneling for %s:%d\n", 839 purple_debug_info("proxy", "Using CONNECT tunneling for %s:%d\n",
840 connect_data->host, connect_data->port); 840 connect_data->host, connect_data->port);
897 897
898 connect_data->fd = socket(addr->sa_family, SOCK_STREAM, 0); 898 connect_data->fd = socket(addr->sa_family, SOCK_STREAM, 0);
899 if (connect_data->fd < 0) 899 if (connect_data->fd < 0)
900 { 900 {
901 purple_proxy_connect_data_disconnect_formatted(connect_data, 901 purple_proxy_connect_data_disconnect_formatted(connect_data,
902 _("Unable to create socket:\n%s"), strerror(errno)); 902 _("Unable to create socket:\n%s"), g_strerror(errno));
903 return; 903 return;
904 } 904 }
905 905
906 flags = fcntl(connect_data->fd, F_GETFL); 906 flags = fcntl(connect_data->fd, F_GETFL);
907 fcntl(connect_data->fd, F_SETFL, flags | O_NONBLOCK); 907 fcntl(connect_data->fd, F_SETFL, flags | O_NONBLOCK);
935 purple_proxy_connect_data_connected(connect_data); 935 purple_proxy_connect_data_connected(connect_data);
936 } 936 }
937 } 937 }
938 else 938 else
939 { 939 {
940 purple_proxy_connect_data_disconnect(connect_data, strerror(errno)); 940 purple_proxy_connect_data_disconnect(connect_data, g_strerror(errno));
941 } 941 }
942 } 942 }
943 else 943 else
944 { 944 {
945 purple_debug_info("proxy", "Connected immediately.\n"); 945 purple_debug_info("proxy", "Connected immediately.\n");
976 purple_proxy_connect_data_connected(connect_data); 976 purple_proxy_connect_data_connected(connect_data);
977 return; 977 return;
978 } 978 }
979 } 979 }
980 980
981 purple_proxy_connect_data_disconnect(connect_data, strerror(errno)); 981 purple_proxy_connect_data_disconnect(connect_data, g_strerror(errno));
982 } 982 }
983 983
984 static void 984 static void
985 s4_canwrite(gpointer data, gint source, PurpleInputCondition cond) 985 s4_canwrite(gpointer data, gint source, PurpleInputCondition cond)
986 { 986 {
1001 ret = purple_input_get_error(connect_data->fd, &error); 1001 ret = purple_input_get_error(connect_data->fd, &error);
1002 if ((ret != 0) || (error != 0)) 1002 if ((ret != 0) || (error != 0))
1003 { 1003 {
1004 if (ret != 0) 1004 if (ret != 0)
1005 error = errno; 1005 error = errno;
1006 purple_proxy_connect_data_disconnect(connect_data, strerror(error)); 1006 purple_proxy_connect_data_disconnect(connect_data, g_strerror(error));
1007 return; 1007 return;
1008 } 1008 }
1009 1009
1010 /* 1010 /*
1011 * The socks4 spec doesn't include support for doing host name 1011 * The socks4 spec doesn't include support for doing host name
1056 1056
1057 connect_data->fd = socket(addr->sa_family, SOCK_STREAM, 0); 1057 connect_data->fd = socket(addr->sa_family, SOCK_STREAM, 0);
1058 if (connect_data->fd < 0) 1058 if (connect_data->fd < 0)
1059 { 1059 {
1060 purple_proxy_connect_data_disconnect_formatted(connect_data, 1060 purple_proxy_connect_data_disconnect_formatted(connect_data,
1061 _("Unable to create socket:\n%s"), strerror(errno)); 1061 _("Unable to create socket:\n%s"), g_strerror(errno));
1062 return; 1062 return;
1063 } 1063 }
1064 1064
1065 flags = fcntl(connect_data->fd, F_GETFL); 1065 flags = fcntl(connect_data->fd, F_GETFL);
1066 fcntl(connect_data->fd, F_SETFL, flags | O_NONBLOCK); 1066 fcntl(connect_data->fd, F_SETFL, flags | O_NONBLOCK);
1076 connect_data->inpa = purple_input_add(connect_data->fd, 1076 connect_data->inpa = purple_input_add(connect_data->fd,
1077 PURPLE_INPUT_WRITE, s4_canwrite, connect_data); 1077 PURPLE_INPUT_WRITE, s4_canwrite, connect_data);
1078 } 1078 }
1079 else 1079 else
1080 { 1080 {
1081 purple_proxy_connect_data_disconnect(connect_data, strerror(errno)); 1081 purple_proxy_connect_data_disconnect(connect_data, g_strerror(errno));
1082 } 1082 }
1083 } 1083 }
1084 else 1084 else
1085 { 1085 {
1086 purple_debug_info("proxy", "Connected immediately.\n"); 1086 purple_debug_info("proxy", "Connected immediately.\n");
1136 /* No worries */ 1136 /* No worries */
1137 return; 1137 return;
1138 1138
1139 /* Error! */ 1139 /* Error! */
1140 purple_proxy_connect_data_disconnect_formatted(connect_data, 1140 purple_proxy_connect_data_disconnect_formatted(connect_data,
1141 _("Lost connection with server:\n%s"), strerror(errno)); 1141 _("Lost connection with server:\n%s"), g_strerror(errno));
1142 return; 1142 return;
1143 } 1143 }
1144 1144
1145 connect_data->read_len += len; 1145 connect_data->read_len += len;
1146 1146
1245 /* No worries */ 1245 /* No worries */
1246 return; 1246 return;
1247 1247
1248 /* Error! */ 1248 /* Error! */
1249 purple_proxy_connect_data_disconnect_formatted(connect_data, 1249 purple_proxy_connect_data_disconnect_formatted(connect_data,
1250 _("Lost connection with server:\n%s"), strerror(errno)); 1250 _("Lost connection with server:\n%s"), g_strerror(errno));
1251 return; 1251 return;
1252 } 1252 }
1253 1253
1254 connect_data->read_len += len; 1254 connect_data->read_len += len;
1255 if (connect_data->read_len < 2) 1255 if (connect_data->read_len < 2)
1345 /* No worries */ 1345 /* No worries */
1346 return; 1346 return;
1347 1347
1348 /* Error! */ 1348 /* Error! */
1349 purple_proxy_connect_data_disconnect_formatted(connect_data, 1349 purple_proxy_connect_data_disconnect_formatted(connect_data,
1350 _("Lost connection with server:\n%s"), strerror(errno)); 1350 _("Lost connection with server:\n%s"), g_strerror(errno));
1351 return; 1351 return;
1352 } 1352 }
1353 1353
1354 connect_data->read_len += len; 1354 connect_data->read_len += len;
1355 if (connect_data->read_len < 2) 1355 if (connect_data->read_len < 2)
1473 /* No worries */ 1473 /* No worries */
1474 return; 1474 return;
1475 1475
1476 /* Error! */ 1476 /* Error! */
1477 purple_proxy_connect_data_disconnect_formatted(connect_data, 1477 purple_proxy_connect_data_disconnect_formatted(connect_data,
1478 _("Lost connection with server:\n%s"), strerror(errno)); 1478 _("Lost connection with server:\n%s"), g_strerror(errno));
1479 return; 1479 return;
1480 } 1480 }
1481 1481
1482 connect_data->read_len += len; 1482 connect_data->read_len += len;
1483 if (connect_data->read_len < 2) 1483 if (connect_data->read_len < 2)
1582 ret = purple_input_get_error(connect_data->fd, &error); 1582 ret = purple_input_get_error(connect_data->fd, &error);
1583 if ((ret != 0) || (error != 0)) 1583 if ((ret != 0) || (error != 0))
1584 { 1584 {
1585 if (ret != 0) 1585 if (ret != 0)
1586 error = errno; 1586 error = errno;
1587 purple_proxy_connect_data_disconnect(connect_data, strerror(error)); 1587 purple_proxy_connect_data_disconnect(connect_data, g_strerror(error));
1588 return; 1588 return;
1589 } 1589 }
1590 1590
1591 i = 0; 1591 i = 0;
1592 buf[0] = 0x05; /* SOCKS version 5 */ 1592 buf[0] = 0x05; /* SOCKS version 5 */
1627 1627
1628 connect_data->fd = socket(addr->sa_family, SOCK_STREAM, 0); 1628 connect_data->fd = socket(addr->sa_family, SOCK_STREAM, 0);
1629 if (connect_data->fd < 0) 1629 if (connect_data->fd < 0)
1630 { 1630 {
1631 purple_proxy_connect_data_disconnect_formatted(connect_data, 1631 purple_proxy_connect_data_disconnect_formatted(connect_data,
1632 _("Unable to create socket:\n%s"), strerror(errno)); 1632 _("Unable to create socket:\n%s"), g_strerror(errno));
1633 return; 1633 return;
1634 } 1634 }
1635 1635
1636 flags = fcntl(connect_data->fd, F_GETFL); 1636 flags = fcntl(connect_data->fd, F_GETFL);
1637 fcntl(connect_data->fd, F_SETFL, flags | O_NONBLOCK); 1637 fcntl(connect_data->fd, F_SETFL, flags | O_NONBLOCK);
1647 connect_data->inpa = purple_input_add(connect_data->fd, 1647 connect_data->inpa = purple_input_add(connect_data->fd,
1648 PURPLE_INPUT_WRITE, s5_canwrite, connect_data); 1648 PURPLE_INPUT_WRITE, s5_canwrite, connect_data);
1649 } 1649 }
1650 else 1650 else
1651 { 1651 {
1652 purple_proxy_connect_data_disconnect(connect_data, strerror(errno)); 1652 purple_proxy_connect_data_disconnect(connect_data, g_strerror(errno));
1653 } 1653 }
1654 } 1654 }
1655 else 1655 else
1656 { 1656 {
1657 purple_debug_info("proxy", "Connected immediately.\n"); 1657 purple_debug_info("proxy", "Connected immediately.\n");