Restarting ocserv doesn't clean up all workers

Niels Peen niels at peen.ch
Tue Oct 7 06:02:55 PDT 2014


> So if the client disconnected and a packet with wrong checksum is
> received, that block occurs, as ocserv depended on select() to check for
> data. I've modified ocserv to use non-blocking sockets in master to
> avoid that. It seems to work fine in my setup, but I'd like to have more
> testing prior to a release.

After 20+ hours, there seem to be no negative effects. 

I did notice something else, possibly related. A worker that’s not shut 
down after the DPD timeout has long passed:

Oct  7 17:43:15 yocimuvu ocserv[5087]: sec-mod: received request from pid 3079 and uid 65534
Oct  7 18:51:01 yocimuvu ocserv[3079]: worker: XXXX:1066 worker-vpn.c:984: have not received UDP any message or DPD for long (199 secs, DPD is 90)
Oct  7 18:55:06 yocimuvu ocserv[3079]: worker: XXXX:1066 worker-vpn.c:984: have not received UDP any message or DPD for long (181 secs, DPD is 90)
Oct  7 18:55:36 yocimuvu ocserv[3079]: worker: XXXX:1066 worker-vpn.c:984: have not received UDP any message or DPD for long (211 secs, DPD is 90)
Oct  7 18:56:09 yocimuvu ocserv[3079]: worker: XXXX:1066 worker-vpn.c:984: have not received UDP any message or DPD for long (244 secs, DPD is 90)
Oct  7 19:04:44 yocimuvu ocserv[3079]: worker: XXXX:1066 worker-vpn.c:984: have not received UDP any message or DPD for long (185 secs, DPD is 90)
Oct  7 19:05:14 yocimuvu ocserv[3079]: worker: XXXX:1066 worker-vpn.c:984: have not received UDP any message or DPD for long (215 secs, DPD is 90)
Oct  7 19:19:11 yocimuvu ocserv[3079]: worker: XXXX:1066 worker-vpn.c:984: have not received UDP any message or DPD for long (181 secs, DPD is 90)
Oct  7 19:19:41 yocimuvu ocserv[3079]: worker: XXXX:1066 worker-vpn.c:984: have not received UDP any message or DPD for long (211 secs, DPD is 90)
Oct  7 19:23:24 yocimuvu ocserv[3079]: worker: XXXX:1066 worker-vpn.c:984: have not received UDP any message or DPD for long (189 secs, DPD is 90)
Oct  7 19:35:40 yocimuvu ocserv[3079]: worker: XXXX:1066 worker-vpn.c:984: have not received UDP any message or DPD for long (207 secs, DPD is 90)
Oct  7 19:51:30 yocimuvu ocserv[3079]: worker: XXXX:1066 worker-vpn.c:984: have not received UDP any message or DPD for long (193 secs, DPD is 90)
Oct  7 20:03:12 yocimuvu ocserv[3079]: worker: XXXX:1066 worker-vpn.c:984: have not received UDP any message or DPD for long (190 secs, DPD is 90)
Oct  7 20:03:45 yocimuvu ocserv[3079]: worker: XXXX:1066 worker-vpn.c:984: have not received UDP any message or DPD for long (223 secs, DPD is 90)
Oct  7 20:17:07 yocimuvu ocserv[3079]: worker: XXXX:1066 worker-vpn.c:984: have not received UDP any message or DPD for long (183 secs, DPD is 90)
Oct  7 20:17:42 yocimuvu ocserv[3079]: worker: XXXX:1066 worker-vpn.c:984: have not received UDP any message or DPD for long (218 secs, DPD is 90)
Oct  7 20:23:27 yocimuvu ocserv[3079]: worker: XXXX:1066 worker-vpn.c:984: have not received UDP any message or DPD for long (182 secs, DPD is 90)
Oct  7 20:34:21 yocimuvu ocserv[3079]: worker: XXXX:1066 worker-vpn.c:984: have not received UDP any message or DPD for long (212 secs, DPD is 90)
Oct  7 20:48:20 yocimuvu ocserv[3079]: worker: XXXX:1066 worker-vpn.c:984: have not received UDP any message or DPD for long (187 secs, DPD is 90)
Oct  7 20:48:51 yocimuvu ocserv[3079]: worker: XXXX:1066 worker-vpn.c:984: have not received UDP any message or DPD for long (218 secs, DPD is 90)
Oct  7 20:49:21 yocimuvu ocserv[3079]: worker: XXXX:1066 worker-vpn.c:984: have not received UDP any message or DPD for long (248 secs, DPD is 90)

Just in case this helps:

#1  0x000000000040ae1f in connect_handler (ws=ws at entry=0x19142f0) at worker-vpn.c:1932
        req = 0x1914308
        rfds = {fds_bits = {8592, 0 <repeats 15 times>}}
        e = <optimized out>
        max = 13
        ret = <optimized out>
        t = 2048
        p = <optimized out>
        tv = {tv_sec = 10, tv_nsec = 0}
        tls_pending = 0
        dtls_pending = 0
        i = <optimized out>
        tnow = {tv_sec = 1412686871, tv_nsec = 394033000}
        proto_overhead = 28
        ip6 = <optimized out>
        sl = 4
        emptyset = {__val = {0 <repeats 16 times>}}  
        blockset = {__val = {16384, 0 <repeats 15 times>}}
#2  0x000000000040cb84 in vpn_server (ws=ws at entry=0x19142f0) at worker-vpn.c:829
        buf = "CONNECT /CSCOSSLC/tunnel HTTP/1.1\r\nHost: XXXX\r\nUser-Agent: OpenConnect VPN Agent (Java) v5.99-unknown\r\nCookie: webvpn=6i0hfAc2pOSZg6MFm7Ps0RZ5D6SHNoOWzdb79CcsSgURxiV705Yn0mq1WiC6uO9qvrobMqeb"...
        ret = <optimized out>
        nparsed = <optimized out>
        nrecvd = <optimized out>
        session = 0x1ba3e30
        parser = {type = 0, flags = 0, state = 18, header_state = 0, index = 0, nread = 0, content_length = 18446744073709551615, http_major = 1, http_minor = 1, status_code = 0, method = 5, http_errno = 0, 
          upgrade = 1, data = 0x19142f0}
        settings = {on_message_begin = 0, on_url = 0x409000 <url_cb>, on_status = 0, on_header_field = 0x4097c0 <header_field_cb>, on_header_value = 0x409840 <header_value_cb>, 
          on_headers_complete = 0x4097a0 <header_complete_cb>, on_body = 0x409100 <body_cb>, on_message_complete = 0x408ed0 <message_complete_cb>}
        requests_left = <optimized out>
#3  0x000000000040772f in main (argc=<optimized out>, argv=<optimized out>) at main.c:1158
        stype = 0
        fd = 8
        pid = <optimized out>
        e = <optimized out>
        ltmp = <optimized out>
        ctmp = <optimized out>
        cpos = <optimized out>
        rd_set = {fds_bits = {16, 0 <repeats 15 times>}}
        wr_set = {fds_bits = {0 <repeats 16 times>}}
        n = 16
        ret = <optimized out>
        flags = <optimized out>
        ts = {tv_sec = 30, tv_nsec = 0}
        cmd_fd = {12, 13}
        ws = 0x19142f0
        worker_pool = <optimized out>
        main_pool = 0x190a4c0
        set = <optimized out>
        s = 0x1914550
        emptyset = {__val = {0 <repeats 16 times>}}
        blockset = {__val = {90115, 0 <repeats 15 times>}}
        creds = {xcred = 0x190b8a0, cprio = 0x1910840, dh_params = 0x18f1760}

Regards,
Niels


More information about the openconnect-devel mailing list