fallback to discovery if fail to connect to server for 30 seconds, send name every connection
Adrian Smith
10 years ago
652 | 652 | struct sockaddr_in serv_addr; |
653 | 653 | static char fixed_cap[128], var_cap[128] = ""; |
654 | 654 | bool reconnect = false; |
655 | unsigned failed_connect = 0; | |
655 | 656 | int i; |
656 | 657 | |
657 | 658 | wake_create(wake_e); |
696 | 697 | |
697 | 698 | if (connect(sock, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) { |
698 | 699 | |
699 | LOG_INFO("unable to connect to server"); | |
700 | LOG_INFO("unable to connect to server %u", failed_connect++); | |
700 | 701 | sleep(5); |
701 | 702 | |
703 | // rediscover server if it was not set at startup | |
704 | if (!addr && failed_connect > 5) { | |
705 | slimproto_ip = serv_addr.sin_addr.s_addr = discover_server(); | |
706 | } | |
707 | ||
702 | 708 | } else { |
703 | 709 | |
704 | 710 | LOG_INFO("connected"); |
706 | 712 | set_nosigpipe(sock); |
707 | 713 | |
708 | 714 | var_cap[0] = '\0'; |
715 | ||
716 | failed_connect = 0; | |
709 | 717 | |
710 | 718 | #if !WIN |
711 | 719 | // check if this is a local player now we are connected & signal to server via 'loc' format |
733 | 741 | |
734 | 742 | if (name) { |
735 | 743 | sendSETDName(name); |
736 | name = NULL; | |
737 | 744 | } |
738 | 745 | |
739 | 746 | slimproto_run(); |