Understand new connect stanza.
[doldaconnect.git] / clients / gtk2 / main.c
index bd0cdda..aebeaac 100644 (file)
@@ -1067,16 +1067,20 @@ void handleresps(void)
     {
        if(!wcscmp(resp->cmdname, L".connect"))
        {
-           if(resp->code == 200)
+           if(resp->code != 201)
            {
+               msgbox(GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("The server refused the connection"));
+               dc_disconnect();
+               dcdisconnected();
+           } else if(dc_checkprotocol(resp, DC_LATEST)) {
+               msgbox(GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Server protocol revision mismatch"));
+               dc_disconnect();
+               dcdisconnected();
+           } else {
                tosbuf = 0x10; /* Minimum cost */
                setsockopt(dcfd, SOL_IP, IP_TOS, &tosbuf, sizeof(tosbuf));
                updatesbar(_("Connected"));
                dc_loginasync(connectas, 1, loginconv, logincallback, NULL);
-           } else {
-               msgbox(GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("The server refused the connection"));
-               dc_disconnect();
-               dcdisconnected();
            }
        } else if(!wcscmp(resp->cmdname, L".notify")) {
            dc_uimisc_handlenotify(resp);
@@ -1361,7 +1365,7 @@ void cb_main_lsres_activate(GtkWidget *widget, gpointer data)
 
 void dcconnect(char *host)
 {
-    dcfd = dc_connect(host, -1);
+    dcfd = dc_connect(host);
     if(dcfd < 0)
     {
        msgbox(GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Could not connect:\n\n%s"), strerror(errno));
@@ -2575,7 +2579,7 @@ int main(int argc, char **argv)
     dc_init();
     signal(SIGCHLD, SIG_IGN);
     pubhubaddr = sstrdup("http://www.hublist.org/PublicHubList.xml.bz2");
-    dcserver = sstrdup("localhost");
+    dcserver = sstrdup("");
     if((pwent = getpwuid(getuid())) == NULL)
     {
        fprintf(stderr, "could not get your passwd data");