Make sure select() callbacks are not called multiple times

the unix select function returns a set of file descriptors to be
handled. the result-loop (the loop after the select()) is called again,
if more than one descriptor is removed by the callback funtion. this may
lead to a another call to the callback function, because the bits of the
FD_SETs do not change and still set.

i think we must clear these bits, if they are handled, so the handler
will not be called twice in case of a "restart" of that loop.
diff --git a/openbsc/src/select.c b/openbsc/src/select.c
index c11f3a5..bed9649 100644
--- a/openbsc/src/select.c
+++ b/openbsc/src/select.c
@@ -95,14 +95,20 @@
 	llist_for_each_entry_safe(ufd, tmp, &bsc_fds, list) {
 		int flags = 0;
 
-		if (FD_ISSET(ufd->fd, &readset))
+		if (FD_ISSET(ufd->fd, &readset)) {
 			flags |= BSC_FD_READ;
+			FD_CLR(ufd->fd, &readset);
+		}
 
-		if (FD_ISSET(ufd->fd, &writeset))
+		if (FD_ISSET(ufd->fd, &writeset)) {
 			flags |= BSC_FD_WRITE;
+			FD_CLR(ufd->fd, &writeset);
+		}
 
-		if (FD_ISSET(ufd->fd, &exceptset))
+		if (FD_ISSET(ufd->fd, &exceptset)) {
 			flags |= BSC_FD_EXCEPT;
+			FD_CLR(ufd->fd, &exceptset);
+		}
 
 		if (flags) {
 			work = 1;