Annotation of mqtt/src/utils.c, revision 1.2.2.3

1.2       misho       1: #include "global.h"
                      2: 
                      3: 
                      4: int
1.2.2.1   misho       5: srv_Socket(cfg_root_t * __restrict cfg)
1.2       misho       6: {
                      7:        int s = -1, n = 1;
1.2.2.1   misho       8:        ait_val_t v;
1.2       misho       9:        u_short port;
1.2.2.2   misho      10:        io_sockaddr_t sa;
1.2       misho      11: 
                     12:        ioTRACE(2);
                     13: 
1.2.2.1   misho      14:        cfg_loadAttribute(cfg, "mqttd", "port", &v, MQTT_PORT);
                     15:        port = strtol(AIT_GET_STR(&v), NULL, 0);
                     16:        AIT_FREE_VAL(&v);
                     17:        cfg_loadAttribute(cfg, "mqttd", "listen", &v, MQTT_HOST);
1.2.2.3 ! misho      18:        if (!io_gethostbyname(AIT_GET_STR(&v), port, &sa)) {
        !            19:                ioLIBERR(io);
        !            20:                AIT_FREE_VAL(&v);
1.2       misho      21:                return -1;
1.2.2.3 ! misho      22:        } else
        !            23:                AIT_FREE_VAL(&v);
1.2       misho      24: 
1.2.2.2   misho      25:        s = socket(sa.ss.ss_family, SOCK_STREAM, 0);
1.2       misho      26:        if (s == -1) {
1.2.2.2   misho      27:                ioSYSERR(0);
1.2       misho      28:                return -1;
                     29:        }
                     30:        if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &n, sizeof n) == -1) {
1.2.2.2   misho      31:                ioSYSERR(0);
1.2       misho      32:                close(s);
                     33:                return -1;
                     34:        }
1.2.2.3 ! misho      35:        if (bind(s, &sa.sa, sa.sa.sa_len) == -1) {
1.2.2.2   misho      36:                ioSYSERR(0);
1.2       misho      37:                close(s);
                     38:                return -1;
                     39:        }
                     40: 
                     41:        return s;
                     42: }
                     43: 
                     44: int
                     45: srv_Close(int s)
                     46: {
                     47:        ioTRACE(2);
                     48: 
                     49:        if (s > STDERR_FILENO)
                     50:                shutdown(s, SHUT_RDWR);
                     51: 
                     52:        return close(s);
                     53: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>