diff --git a/src/config.c b/src/config.c index 0f778a08..7a8b7ed6 100644 --- a/src/config.c +++ b/src/config.c @@ -89,7 +89,7 @@ int config_parse_file(const char *filename) doc = xmlParseFile(_config_filename); if (doc == NULL) { - return -1; + return CONFIG_EPARSE; } node = xmlDocGetRootElement(doc); diff --git a/src/config.h b/src/config.h index 1a81b4b2..d9b29933 100644 --- a/src/config.h +++ b/src/config.h @@ -4,6 +4,7 @@ #define CONFIG_EINSANE -1 #define CONFIG_ENOROOT -2 #define CONFIG_EBADROOT -3 +#define CONFIG_EPARSE -4 typedef struct ice_config_dir_tag { diff --git a/src/main.c b/src/main.c index 53578042..df36caeb 100644 --- a/src/main.c +++ b/src/main.c @@ -277,6 +277,8 @@ int main(int argc, char **argv) fprintf(stderr, "parse error\n"); break; } + _shutdown_subsystems(); + return 1; } } else if (res == -1) { _print_usage(); diff --git a/src/net/sock.c b/src/net/sock.c index 28645061..3a4c00c7 100644 --- a/src/net/sock.c +++ b/src/net/sock.c @@ -214,9 +214,9 @@ int sock_write_bytes(sock_t sock, const char *buff, const int len) return SOCK_ERROR; } else if (len <= 0) { return SOCK_ERROR; - } else if (!sock_valid_socket(sock)) { + } /*else if (!sock_valid_socket(sock)) { return SOCK_ERROR; - } + } */ return send(sock, buff, len, 0); } @@ -251,9 +251,8 @@ int sock_write(sock_t sock, const char *fmt, ...) int sock_read_bytes(sock_t sock, char *buff, const int len) { -// int ret; - if (!sock_valid_socket(sock)) return 0; + /*if (!sock_valid_socket(sock)) return 0; */ if (!buff) return 0; if (len <= 0) return 0; @@ -273,9 +272,9 @@ int sock_read_line(sock_t sock, char *buff, const int len) char c = '\0'; int read_bytes, pos; - if (!sock_valid_socket(sock)) { + /*if (!sock_valid_socket(sock)) { return 0; - } else if (!buff) { + } else*/ if (!buff) { return 0; } else if (len <= 0) { return 0; @@ -490,6 +489,7 @@ int sock_accept(sock_t serversock, char *ip, int len) ret = accept(serversock, (struct sockaddr *)&sin, &slen); if (ret >= 0 && ip != NULL) { + // inet_ntoa is not reentrant, we should protect this strncpy(ip, inet_ntoa(sin.sin_addr), len); sock_set_nolinger(ret); sock_set_keepalive(ret);