+ /* Ignore SIGPIPE */
+ if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) {
+ guacd_log_info("Could not set handler for SIGPIPE to ignore. SIGPIPE may cause termination of the daemon.");
+ }
+
+ /* Ignore SIGCHLD (force automatic removal of children) */
+ if (signal(SIGCHLD, SIG_IGN) == SIG_ERR) {
+ guacd_log_info("Could not set handler for SIGCHLD to ignore. Child processes may pile up in the process table.");
+ }
+
+ /* Handle the case where we have a supplied fd */
+ if (suppliedfd != -1) {
+ if (xmlconfig)
+ guacd_handle_connection_xml(suppliedfd, xmlconfig);
+ else
+ guacd_handle_connection(suppliedfd);
+ goto exit;
+ }
+