Index: kismet_curses.cc
===================================================================
RCS file: /home/dragorn/cvs/kismet/kismet-devel/kismet_curses.cc,v
retrieving revision 1.27
diff -u -r1.27 kismet_curses.cc
--- kismet_curses.cc	2002/09/11 15:18:29	1.27
+++ kismet_curses.cc	2002/09/14 14:01:44
@@ -53,6 +53,7 @@
 int sound = -1;
 int speech = -1;
 unsigned int metric = 0;
+unsigned int reconnect = 0;
 
 int group_track = 0;
 string configdir, groupfile;
@@ -103,6 +104,7 @@
            "  -g, --gui <type>             GUI type to create (curses, panel)\n"
            "  -c, --columns <list>         Columns to display initially (comma seperated)\n"
            "  -C, --client-columns <list>  Columns to display for client info\n"
+           "  -r, --reconnect              Try to reconnect server after error\n"
            "  -v, --version                Kismet version\n"
            "  -h, --help                   What do you think you're reading?\n");
     exit(1);
@@ -365,6 +367,7 @@
         { "version", no_argument, 0, 'v' },
         { "columns", required_argument, 0, 'c' },
         { "client-columns", required_argument, 0, 'C'},
+        { "reconnect", no_argument, 0, 'r' },
         { 0, 0, 0, 0 }
     };
     int option_index;
@@ -377,7 +380,7 @@
     signal(SIGPIPE, SIG_IGN);
 
     while(1) {
-        int r = getopt_long(argc, argv, "f:c:qs:hvg:u:",
+        int r = getopt_long(argc, argv, "f:c:qs:hvg:u:r",
                             long_options, &option_index);
         if (r < 0) break;
         switch(r) {
@@ -410,6 +413,9 @@
         case 'C':
             clientcolumns = optarg;
             break;
+        case 'r':
+            reconnect = 1;
+            break;
         default:
             Usage(argv[0]);
             break;
@@ -766,8 +772,10 @@
                 if ((pollret = kismet_serv.Poll()) < 0) {
                     snprintf(status, STATUS_MAX, "TCP error: %s", kismet_serv.FetchError());
                     gui->WriteStatus(status);
+                    if (reconnect)
+                        while (kismet_serv.Connect(guiport, guihost) < 0)
+                            sleep(1);
                 }
-
                 if (pollret != 0) {
                     if (pollret == CLIENT_ALERT)
                         if (sound == 1)
