| 23334:b59937f4ab22 | 23338:bf7332b531d3 |
|---|---|
| 183 */ | 183 */ |
| 184 static void | 184 static void |
| 185 sighandler(int sig) | 185 sighandler(int sig) |
| 186 { | 186 { |
| 187 switch (sig) { | 187 switch (sig) { |
| 188 case SIGHUP: | |
| 189 purple_debug_warning("sighandler", "Caught signal %d\n", sig); | |
| 190 purple_connections_disconnect_all(); | |
| 191 break; | |
| 192 case SIGSEGV: | 188 case SIGSEGV: |
| 193 fprintf(stderr, "%s", segfault_message); | 189 fprintf(stderr, "%s", segfault_message); |
| 194 abort(); | 190 abort(); |
| 195 break; | 191 break; |
| 196 #if defined(USE_GSTREAMER) && !defined(GST_CAN_DISABLE_FORKING) | 192 #if defined(USE_GSTREAMER) && !defined(GST_CAN_DISABLE_FORKING) |
| 215 /* Restore signal catching */ | 211 /* Restore signal catching */ |
| 216 signal(SIGCHLD, sighandler); | 212 signal(SIGCHLD, sighandler); |
| 217 break; | 213 break; |
| 218 default: | 214 default: |
| 219 purple_debug_warning("sighandler", "Caught signal %d\n", sig); | 215 purple_debug_warning("sighandler", "Caught signal %d\n", sig); |
| 220 purple_connections_disconnect_all(); | 216 purple_core_quit(); |
| 221 | |
| 222 purple_plugins_unload_all(); | |
| 223 | |
| 224 if (gtk_main_level()) | |
| 225 gtk_main_quit(); | |
| 226 exit(0); | |
| 227 } | 217 } |
| 228 } | 218 } |
| 229 #endif | 219 #endif |
| 230 | 220 |
| 231 static int | 221 static int |