Merge branch 'master' of git.dolda2000.com:/srv/git/r/doldaconnect
authorFredrik Tolf <fredrik@dolda2000.com>
Sat, 1 Sep 2007 12:15:44 +0000 (14:15 +0200)
committerFredrik Tolf <fredrik@dolda2000.com>
Sat, 1 Sep 2007 12:15:44 +0000 (14:15 +0200)
1  2 
clients/gui-shell/dsh.c

diff --combined clients/gui-shell/dsh.c
@@@ -48,13 -48,13 +48,14 @@@ struct trinfo 
      int ostate;
      int opos, spos, speed;
      time_t lastprog;
+     int warned;
      double sprog;
  };
  
  void updatewrite(void);
  
  int remote = 0;
 +char *server;
  GtkStatusIcon *tray;
  pid_t dpid = 0, dcpid = 0;
  int connected = 0;
@@@ -288,11 -288,14 +289,14 @@@ void updatetrinfo(void
            if(tri->opos != tr->curpos) {
                tri->opos = tr->curpos;
                tri->lastprog = now;
+               tri->warned = 0;
            }
- #ifdef NOTIFY
-           if((tr->state = DC_TRNS_MAIN) && (now - tri->lastprog > 600)) {
-               if(dcpid == 0)
+ #ifdef HAVE_NOTIFY
+           if((tr->state = DC_TRNS_MAIN) && (now - tri->lastprog > 600) && !tri->warned) {
+               if(dcpid == 0) {
                    notify(&trnote, "transfer.error", _("Transfer stalled"), _("The transfer of %ls from %ls has not made progress for 10 minutes"), getfilename(tr->path), tr->peernick);
+                   tri->warned = 1;
+               }
            }
  #endif
            if((tr->state == DC_TRNS_MAIN) && (dnow - tri->sprog > 10)) {
@@@ -379,7 -382,7 +383,7 @@@ void updatewrite(void
  
  void connectdc(void)
  {
 -    if((dcfd = dc_connect(remote?NULL:dc_srv_local)) < 0) {
 +    if((dcfd = dc_connect(server)) < 0) {
        msgbox(GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Could not connect to server: %s"), strerror(errno));
        exit(1);
      }
@@@ -544,20 -547,14 +548,20 @@@ int main(int argc, char **argv
      textdomain(PACKAGE);
      signal(SIGCHLD, sighandler);
      dc_init();
 +    server = dc_srv_local;
      gtk_init(&argc, &argv);
  #ifdef HAVE_NOTIFY
      notify_init("Dolda Connect");
  #endif
 -    while((c = getopt(argc, argv, "rh")) != -1) {
 +    while((c = getopt(argc, argv, "rhs:")) != -1) {
        switch(c) {
        case 'r':
            remote = 1;
 +          server = NULL;
 +          break;
 +      case 's':
 +          remote = 1;
 +          server = optarg;
            break;
        case 'h':
            printf("usage: doldacond-shell [-hr]\n");