462 |
buffer); |
buffer); |
463 |
if (server_send (server, buf2, strlen (buf2)) <= 0) |
if (server_send (server, buf2, strlen (buf2)) <= 0) |
464 |
{ |
{ |
465 |
irc_display_prefix (server->buffer, PREFIX_ERROR); |
irc_display_prefix (server, server->buffer, PREFIX_ERROR); |
466 |
gui_printf (server->buffer, _("%s error sending data to IRC server\n"), |
gui_printf (server->buffer, _("%s error sending data to IRC server\n"), |
467 |
WEECHAT_ERROR); |
WEECHAT_ERROR); |
468 |
} |
} |
484 |
message = (t_irc_message *) malloc (sizeof (t_irc_message)); |
message = (t_irc_message *) malloc (sizeof (t_irc_message)); |
485 |
if (!message) |
if (!message) |
486 |
{ |
{ |
487 |
irc_display_prefix (server->buffer, PREFIX_ERROR); |
irc_display_prefix (server, server->buffer, PREFIX_ERROR); |
488 |
gui_printf (server->buffer, |
gui_printf (server->buffer, |
489 |
_("%s not enough memory for received IRC message\n"), |
_("%s not enough memory for received IRC message\n"), |
490 |
WEECHAT_ERROR); |
WEECHAT_ERROR); |
497 |
strlen (msg) + 1); |
strlen (msg) + 1); |
498 |
if (!message->data) |
if (!message->data) |
499 |
{ |
{ |
500 |
irc_display_prefix (server->buffer, PREFIX_ERROR); |
irc_display_prefix (server, server->buffer, PREFIX_ERROR); |
501 |
gui_printf (server->buffer, |
gui_printf (server->buffer, |
502 |
_("%s not enough memory for received IRC message\n"), |
_("%s not enough memory for received IRC message\n"), |
503 |
WEECHAT_ERROR); |
WEECHAT_ERROR); |
544 |
strlen (string) + 1); |
strlen (string) + 1); |
545 |
if (!server->unterminated_message) |
if (!server->unterminated_message) |
546 |
{ |
{ |
547 |
irc_display_prefix (server->buffer, PREFIX_ERROR); |
irc_display_prefix (server, server->buffer, PREFIX_ERROR); |
548 |
gui_printf (server->buffer, |
gui_printf (server->buffer, |
549 |
_("%s not enough memory for received IRC message\n"), |
_("%s not enough memory for received IRC message\n"), |
550 |
WEECHAT_ERROR); |
WEECHAT_ERROR); |
557 |
server->unterminated_message = strdup (string); |
server->unterminated_message = strdup (string); |
558 |
if (!server->unterminated_message) |
if (!server->unterminated_message) |
559 |
{ |
{ |
560 |
irc_display_prefix (server->buffer, PREFIX_ERROR); |
irc_display_prefix (server, server->buffer, PREFIX_ERROR); |
561 |
gui_printf (server->buffer, |
gui_printf (server->buffer, |
562 |
_("%s not enough memory for received IRC message\n"), |
_("%s not enough memory for received IRC message\n"), |
563 |
WEECHAT_ERROR); |
WEECHAT_ERROR); |
668 |
command, args)) |
command, args)) |
669 |
{ |
{ |
670 |
case -1: |
case -1: |
671 |
irc_display_prefix (recv_msgq->server->buffer, PREFIX_ERROR); |
irc_display_prefix (recv_msgq->server, |
672 |
|
recv_msgq->server->buffer, PREFIX_ERROR); |
673 |
gui_printf (recv_msgq->server->buffer, |
gui_printf (recv_msgq->server->buffer, |
674 |
_("%s Command '%s' failed!\n"), WEECHAT_ERROR, command); |
_("%s Command '%s' failed!\n"), WEECHAT_ERROR, command); |
675 |
break; |
break; |
676 |
case -2: |
case -2: |
677 |
irc_display_prefix (recv_msgq->server->buffer, PREFIX_ERROR); |
irc_display_prefix (recv_msgq->server, |
678 |
|
recv_msgq->server->buffer, PREFIX_ERROR); |
679 |
gui_printf (recv_msgq->server->buffer, |
gui_printf (recv_msgq->server->buffer, |
680 |
_("%s No command to execute!\n"), WEECHAT_ERROR); |
_("%s No command to execute!\n"), WEECHAT_ERROR); |
681 |
break; |
break; |
682 |
case -3: |
case -3: |
683 |
irc_display_prefix (recv_msgq->server->buffer, PREFIX_ERROR); |
irc_display_prefix (recv_msgq->server, |
684 |
|
recv_msgq->server->buffer, PREFIX_ERROR); |
685 |
gui_printf (recv_msgq->server->buffer, |
gui_printf (recv_msgq->server->buffer, |
686 |
_("%s Unknown command: cmd=%s, host=%s, args=%s\n"), |
_("%s Unknown command: cmd=%s, host=%s, args=%s\n"), |
687 |
WEECHAT_WARNING, command, host, args); |
WEECHAT_WARNING, command, host, args); |
732 |
} |
} |
733 |
else |
else |
734 |
{ |
{ |
735 |
irc_display_prefix (server->buffer, PREFIX_ERROR); |
irc_display_prefix (server, server->buffer, PREFIX_ERROR); |
736 |
gui_printf (server->buffer, |
gui_printf (server->buffer, |
737 |
_("%s cannot read data from socket, disconnecting from server...\n"), |
_("%s cannot read data from socket, disconnecting from server...\n"), |
738 |
WEECHAT_ERROR); |
WEECHAT_ERROR); |
816 |
if (server->autoreconnect) |
if (server->autoreconnect) |
817 |
{ |
{ |
818 |
server->reconnect_start = time (NULL); |
server->reconnect_start = time (NULL); |
819 |
irc_display_prefix (server->buffer, PREFIX_INFO); |
irc_display_prefix (server, server->buffer, PREFIX_INFO); |
820 |
gui_printf (server->buffer, _("%s: Reconnecting to server in %d seconds\n"), |
gui_printf (server->buffer, _("%s: Reconnecting to server in %d seconds\n"), |
821 |
PACKAGE_NAME, server->autoreconnect_delay); |
PACKAGE_NAME, server->autoreconnect_delay); |
822 |
} |
} |
845 |
#ifdef HAVE_GNUTLS |
#ifdef HAVE_GNUTLS |
846 |
if (server->ssl_connected) |
if (server->ssl_connected) |
847 |
{ |
{ |
848 |
gnutls_transport_set_ptr (server->gnutls_sess, (gnutls_transport_ptr) server->sock); |
gnutls_transport_set_ptr (server->gnutls_sess, |
849 |
|
(gnutls_transport_ptr) server->sock); |
850 |
if (gnutls_handshake (server->gnutls_sess) < 0) |
if (gnutls_handshake (server->gnutls_sess) < 0) |
851 |
{ |
{ |
852 |
irc_display_prefix (server->buffer, PREFIX_ERROR); |
irc_display_prefix (server, server->buffer, PREFIX_ERROR); |
853 |
gui_printf (server->buffer, |
gui_printf (server->buffer, |
854 |
_("%s gnutls handshake failed\n"), |
_("%s gnutls handshake failed\n"), |
855 |
WEECHAT_ERROR); |
WEECHAT_ERROR); |
865 |
break; |
break; |
866 |
/* adress not found */ |
/* adress not found */ |
867 |
case '1': |
case '1': |
868 |
irc_display_prefix (server->buffer, PREFIX_ERROR); |
irc_display_prefix (server, server->buffer, PREFIX_ERROR); |
869 |
if (cfg_proxy_use) |
if (cfg_proxy_use) |
870 |
gui_printf (server->buffer, |
gui_printf (server->buffer, |
871 |
_("%s proxy address \"%s\" not found\n"), |
_("%s proxy address \"%s\" not found\n"), |
879 |
break; |
break; |
880 |
/* IP address not found */ |
/* IP address not found */ |
881 |
case '2': |
case '2': |
882 |
irc_display_prefix (server->buffer, PREFIX_ERROR); |
irc_display_prefix (server, server->buffer, PREFIX_ERROR); |
883 |
if (cfg_proxy_use) |
if (cfg_proxy_use) |
884 |
gui_printf (server->buffer, |
gui_printf (server->buffer, |
885 |
_("%s proxy IP address not found\n"), WEECHAT_ERROR); |
_("%s proxy IP address not found\n"), WEECHAT_ERROR); |
891 |
break; |
break; |
892 |
/* connection refused */ |
/* connection refused */ |
893 |
case '3': |
case '3': |
894 |
irc_display_prefix (server->buffer, PREFIX_ERROR); |
irc_display_prefix (server, server->buffer, PREFIX_ERROR); |
895 |
if (cfg_proxy_use) |
if (cfg_proxy_use) |
896 |
gui_printf (server->buffer, |
gui_printf (server->buffer, |
897 |
_("%s proxy connection refused\n"), WEECHAT_ERROR); |
_("%s proxy connection refused\n"), WEECHAT_ERROR); |
903 |
break; |
break; |
904 |
/* proxy fails to connect to server */ |
/* proxy fails to connect to server */ |
905 |
case '4': |
case '4': |
906 |
irc_display_prefix (server->buffer, PREFIX_ERROR); |
irc_display_prefix (server, server->buffer, PREFIX_ERROR); |
907 |
gui_printf (server->buffer, |
gui_printf (server->buffer, |
908 |
_("%s proxy fails to establish connection to server (check username/password if used)\n"), WEECHAT_ERROR); |
_("%s proxy fails to establish connection to " |
909 |
|
"server (check username/password if used)\n"), |
910 |
|
WEECHAT_ERROR); |
911 |
server_close_connection (server); |
server_close_connection (server); |
912 |
server_reconnect_schedule (server); |
server_reconnect_schedule (server); |
913 |
break; |
break; |
1382 |
#ifndef HAVE_GNUTLS |
#ifndef HAVE_GNUTLS |
1383 |
if (server->ssl) |
if (server->ssl) |
1384 |
{ |
{ |
1385 |
irc_display_prefix (server->buffer, PREFIX_ERROR); |
irc_display_prefix (server, server->buffer, PREFIX_ERROR); |
1386 |
gui_printf (server->buffer, |
gui_printf (server->buffer, |
1387 |
_("%s cannot connect with SSL since WeeChat was not built " |
_("%s cannot connect with SSL since WeeChat was not built " |
1388 |
"with GNUtls support\n"), WEECHAT_ERROR); |
"with GNUtls support\n"), WEECHAT_ERROR); |
1389 |
return 0; |
return 0; |
1390 |
} |
} |
1391 |
#endif |
#endif |
1392 |
irc_display_prefix (server->buffer, PREFIX_INFO); |
irc_display_prefix (server, server->buffer, PREFIX_INFO); |
1393 |
if (cfg_proxy_use) |
if (cfg_proxy_use) |
1394 |
{ |
{ |
1395 |
gui_printf (server->buffer, |
gui_printf (server->buffer, |
1429 |
{ |
{ |
1430 |
if (gnutls_init (&server->gnutls_sess, GNUTLS_CLIENT) != 0) |
if (gnutls_init (&server->gnutls_sess, GNUTLS_CLIENT) != 0) |
1431 |
{ |
{ |
1432 |
irc_display_prefix (server->buffer, PREFIX_ERROR); |
irc_display_prefix (server, server->buffer, PREFIX_ERROR); |
1433 |
gui_printf (server->buffer, |
gui_printf (server->buffer, |
1434 |
_("%s gnutls init error\n"), WEECHAT_ERROR); |
_("%s gnutls init error\n"), WEECHAT_ERROR); |
1435 |
return 0; |
return 0; |
1444 |
/* create pipe for child process */ |
/* create pipe for child process */ |
1445 |
if (pipe (child_pipe) < 0) |
if (pipe (child_pipe) < 0) |
1446 |
{ |
{ |
1447 |
irc_display_prefix (server->buffer, PREFIX_ERROR); |
irc_display_prefix (server, server->buffer, PREFIX_ERROR); |
1448 |
gui_printf (server->buffer, |
gui_printf (server->buffer, |
1449 |
_("%s cannot create pipe\n"), WEECHAT_ERROR); |
_("%s cannot create pipe\n"), WEECHAT_ERROR); |
1450 |
return 0; |
return 0; |
1459 |
server->sock = socket ((server->ipv6) ? AF_INET6 : AF_INET, SOCK_STREAM, 0); |
server->sock = socket ((server->ipv6) ? AF_INET6 : AF_INET, SOCK_STREAM, 0); |
1460 |
if (server->sock == -1) |
if (server->sock == -1) |
1461 |
{ |
{ |
1462 |
irc_display_prefix (server->buffer, PREFIX_ERROR); |
irc_display_prefix (server, server->buffer, PREFIX_ERROR); |
1463 |
gui_printf (server->buffer, |
gui_printf (server->buffer, |
1464 |
_("%s cannot create socket\n"), WEECHAT_ERROR); |
_("%s cannot create socket\n"), WEECHAT_ERROR); |
1465 |
return 0; |
return 0; |
1470 |
if (setsockopt (server->sock, SOL_SOCKET, SO_REUSEADDR, |
if (setsockopt (server->sock, SOL_SOCKET, SO_REUSEADDR, |
1471 |
(void *) &set, sizeof (set)) == -1) |
(void *) &set, sizeof (set)) == -1) |
1472 |
{ |
{ |
1473 |
irc_display_prefix (server->buffer, PREFIX_ERROR); |
irc_display_prefix (server, server->buffer, PREFIX_ERROR); |
1474 |
gui_printf (server->buffer, |
gui_printf (server->buffer, |
1475 |
_("%s cannot set socket option \"SO_REUSEADDR\"\n"), |
_("%s cannot set socket option \"SO_REUSEADDR\"\n"), |
1476 |
WEECHAT_WARNING); |
WEECHAT_WARNING); |
1481 |
if (setsockopt (server->sock, SOL_SOCKET, SO_KEEPALIVE, |
if (setsockopt (server->sock, SOL_SOCKET, SO_KEEPALIVE, |
1482 |
(void *) &set, sizeof (set)) == -1) |
(void *) &set, sizeof (set)) == -1) |
1483 |
{ |
{ |
1484 |
irc_display_prefix (server->buffer, PREFIX_ERROR); |
irc_display_prefix (server, server->buffer, PREFIX_ERROR); |
1485 |
gui_printf (server->buffer, |
gui_printf (server->buffer, |
1486 |
_("%s cannot set socket option \"SO_KEEPALIVE\"\n"), |
_("%s cannot set socket option \"SO_KEEPALIVE\"\n"), |
1487 |
WEECHAT_WARNING); |
WEECHAT_WARNING); |
1513 |
void |
void |
1514 |
server_reconnect (t_irc_server *server) |
server_reconnect (t_irc_server *server) |
1515 |
{ |
{ |
1516 |
irc_display_prefix (server->buffer, PREFIX_INFO); |
irc_display_prefix (server, server->buffer, PREFIX_INFO); |
1517 |
gui_printf (server->buffer, _("%s: Reconnecting to server...\n"), |
gui_printf (server->buffer, _("%s: Reconnecting to server...\n"), |
1518 |
PACKAGE_NAME); |
PACKAGE_NAME); |
1519 |
server->reconnect_start = 0; |
server->reconnect_start = 0; |
1563 |
ptr_channel = ptr_channel->next_channel) |
ptr_channel = ptr_channel->next_channel) |
1564 |
{ |
{ |
1565 |
nick_free_all (ptr_channel); |
nick_free_all (ptr_channel); |
1566 |
irc_display_prefix (ptr_channel->buffer, PREFIX_INFO); |
irc_display_prefix (NULL, ptr_channel->buffer, PREFIX_INFO); |
1567 |
gui_printf (ptr_channel->buffer, _("Disconnected from server!\n")); |
gui_printf (ptr_channel->buffer, _("Disconnected from server!\n")); |
1568 |
} |
} |
1569 |
} |
} |
1572 |
|
|
1573 |
if (server->buffer) |
if (server->buffer) |
1574 |
{ |
{ |
1575 |
irc_display_prefix (server->buffer, PREFIX_INFO); |
irc_display_prefix (server, server->buffer, PREFIX_INFO); |
1576 |
gui_printf (server->buffer, _("Disconnected from server!\n")); |
gui_printf (server->buffer, _("Disconnected from server!\n")); |
1577 |
} |
} |
1578 |
|
|
1645 |
} |
} |
1646 |
|
|
1647 |
/* |
/* |
1648 |
|
* server_get_number_buffer: returns position of a server and total number of |
1649 |
|
* buffers with a buffer |
1650 |
|
*/ |
1651 |
|
|
1652 |
|
void |
1653 |
|
server_get_number_buffer (t_irc_server *server, |
1654 |
|
int *server_pos, int *server_total) |
1655 |
|
{ |
1656 |
|
t_irc_server *ptr_server; |
1657 |
|
|
1658 |
|
*server_pos = 0; |
1659 |
|
*server_total = 0; |
1660 |
|
for (ptr_server = irc_servers; ptr_server; |
1661 |
|
ptr_server = ptr_server->next_server) |
1662 |
|
{ |
1663 |
|
if (ptr_server->buffer) |
1664 |
|
{ |
1665 |
|
(*server_total)++; |
1666 |
|
if (ptr_server == server) |
1667 |
|
*server_pos = *server_total; |
1668 |
|
} |
1669 |
|
} |
1670 |
|
} |
1671 |
|
|
1672 |
|
/* |
1673 |
* server_name_already_exists: return 1 if server name already exists |
* server_name_already_exists: return 1 if server name already exists |
1674 |
* otherwise return 0 |
* otherwise return 0 |
1675 |
*/ |
*/ |