# HG changeset patch # User Olaf Wintermann # Date 1606991091 -3600 # Node ID 533f9097d71237cfd09c74fbd83b774656b77112 # Parent c459019a3ed34499c9b96fc51a5de9d32519b7b1 fix kqueue event handler diff -r c459019a3ed3 -r 533f9097d712 src/server/daemon/event_bsd.c --- a/src/server/daemon/event_bsd.c Sun Nov 01 09:46:57 2020 +0100 +++ b/src/server/daemon/event_bsd.c Thu Dec 03 11:24:51 2020 +0100 @@ -82,15 +82,32 @@ numchanges = 0; for(int i=0;ifn) { - int ep = event->events; - if(event->fn(ev, event)) { - if(event->events != ep) { - changes[numchanges++].filter = ev_convert2sys_events(ep); + u_short kev_flag = 0; + int saved_ev = event->events; + if(!event->fn(ev, event)) { + // ret 0 => remove event + kev_flag = EV_DELETE; + + if(event->finish) { + event->finish(ev, event); } - } else if(event->finish) { - changes[numchanges++].filter = ev_convert2sys_events(ep); - event->finish(ev, event); + } else if(saved_ev != event->events) { + // events changed + kev_flag = EV_ADD; + events[i].filter = ev_convert2sys_events(event->events); + } + + if(kev_flag) { + // copy current event to changelist + changes[numchanges] = events[i]; + changes[numchanges].flags = kev_flag; + numchanges++; } } } diff -r c459019a3ed3 -r 533f9097d712 src/server/safs/service.c --- a/src/server/safs/service.c Sun Nov 01 09:46:57 2020 +0100 +++ b/src/server/safs/service.c Thu Dec 03 11:24:51 2020 +0100 @@ -637,7 +637,7 @@ // send response header http_start_response(sn, rq); // send content - // TODO: fix: send_range_aio is unstable + // TODO: fix: send_range_aio is unstable #96 //ret = send_range_aio(sn, rq, fd, offset, length, NULL, 0); //if(ret == REQ_PROCESSING) { // return ret; diff -r c459019a3ed3 -r 533f9097d712 src/server/webdav/operation.c --- a/src/server/webdav/operation.c Sun Nov 01 09:46:57 2020 +0100 +++ b/src/server/webdav/operation.c Thu Dec 03 11:24:51 2020 +0100 @@ -330,7 +330,7 @@ req->removecount = remove_count; req->userdata = NULL; - // check if we need to open the file because the backend want's it + // check if we need to open the file because the backend wants it if(!file && (dav->settings & WS_WEBDAV_PROPPATCH_USE_VFS) == WS_WEBDAV_PROPPATCH_USE_VFS) {