--- mqtt/src/utils.c 2011/11/30 00:12:30 1.1.2.2 +++ mqtt/src/utils.c 2012/04/11 15:08:27 1.2.2.1 @@ -2,21 +2,25 @@ int -srv_Socket(sl_config * __restrict cfg) +srv_Socket(cfg_root_t * __restrict cfg) { int s = -1, n = 1; struct hostent *host; - char szStr[STRSIZ]; + ait_val_t v; u_short port; struct sockaddr_storage ss; struct sockaddr_in *sin = (struct sockaddr_in*) &ss; struct sockaddr_in6 *sin6 = (struct sockaddr_in6*) &ss; - cfg_LoadAttribute(cfg, CFG("mqttd"), CFG("port"), CFG(szStr), sizeof szStr, MQTT_PORT); - port = strtol(szStr, NULL, 0); - cfg_LoadAttribute(cfg, CFG("mqttd"), CFG("listen"), CFG(szStr), sizeof szStr, MQTT_HOST); + ioTRACE(2); - host = gethostbyname(szStr); + cfg_loadAttribute(cfg, "mqttd", "port", &v, MQTT_PORT); + port = strtol(AIT_GET_STR(&v), NULL, 0); + AIT_FREE_VAL(&v); + cfg_loadAttribute(cfg, "mqttd", "listen", &v, MQTT_HOST); + + host = gethostbyname(AIT_GET_STR(&v)); + AIT_FREE_VAL(&v); if (!host) { printf("Error:: resolver #%d - %s\n", h_errno, hstrerror(h_errno)); return -1; @@ -39,7 +43,7 @@ srv_Socket(sl_config * __restrict cfg) return -1; } - s = socket(ss.ss_family, SOCK_STREAM, IPPROTO_TCP); + s = socket(ss.ss_family, SOCK_STREAM, 0); if (s == -1) { printf("Error:: socket() #%d - %s\n", errno, strerror(errno)); return -1; @@ -61,6 +65,10 @@ srv_Socket(sl_config * __restrict cfg) int srv_Close(int s) { - shutdown(s, SHUT_RDWR); + ioTRACE(2); + + if (s > STDERR_FILENO) + shutdown(s, SHUT_RDWR); + return close(s); }