jcr_main_stream_error.c.patch   [plain text]


--- mu-conference_0.8/src/jcomp/jcr_main_stream_error.c	2007-05-20 12:55:58.000000000 -0700
+++ mu-conference_0.8_apple/src/jcomp/jcr_main_stream_error.c	2009-03-27 13:41:10.000000000 -0700
@@ -35,8 +35,10 @@
   XML_SetCharacterDataHandler(jcr->parser, (void *)jcr_cdata);
   XML_SetUserData(jcr->parser, NULL);
 
-  while (jcr_socket_connect()) {
-    sleep(2);
+  if (jcr_socket_connect()) {
+    log_notice(JDBG, "Failed to connect to remote server.");
+    jcr->stream_state = _STREAM_ERROR;
+    return;
   }
 
   jcr->gio = g_io_channel_unix_new(jcr->fd);
@@ -53,17 +55,8 @@
 void jcr_main_close_stream(void) {
   extern jcr_instance jcr;
 
-  log_warn(JDBG, "Server stream error, resetting");
-  jcr->stream_state = _STREAM_ERROR;
-  g_thread_join(jcr->dthread);
-
-  g_source_remove(jcr->gmain_watch_source);
-  g_io_channel_shutdown(jcr->gio, TRUE, NULL);
-  g_io_channel_unref(jcr->gio);
-  g_io_channel_unref(jcr->gio);
-  close(jcr->fd);
-  
+  log_warn(JDBG, "Server stream error, shutting down.");
 
-  sleep(2);
-  jcr_main_new_stream();
+  jcr->stream_state = _STREAM_ERROR;
+  g_main_loop_quit(jcr->gmain);
 }