Gilles Chanteperdrix wrote:
> Jan Kiszka wrote:
>> Matthieu Nottale wrote:
>>> Hi,
>>>
>>> I believe I found a bug in the Xenomai Posix skin while trying to use
>>> boost::asio: The accept() call in asychronous mode
>>> fails with ENOPEM instead of EAGAIN. Other than that, the call 'works'
>>> in the sense that calling it again after a connection is established
>>> returns a new file descriptor.
>> On what kind of file descriptor descriping what kind of socket are you
>> calling accept()? So far I'm not aware of any RTDM driver providing the
>> corresponding service - well, at least not a public one (our RT-TCP
>> stack is yet to be released). Or is it intended to pass the call to
>> plain Linux, switching the caller into secondary more?
> 
> There's a sample attached. Yes, it is a TCP stream. Howeve accept is
> wrapped, so it may happen that EPERM is the result of the wrapping.
> 

Oops, missed that. Indeed, patch below should fix it.

Jan

diff --git a/src/skins/posix/rtdm.c b/src/skins/posix/rtdm.c
index 6e347fb..4e6685f 100644
--- a/src/skins/posix/rtdm.c
+++ b/src/skins/posix/rtdm.c
@@ -404,18 +404,21 @@ int __wrap_accept(int fd, struct sockaddr *addr, 
socklen_t * addrlen)
 
                pthread_setcanceltype(oldtype, NULL);
 
-               if (fd >= 0)
-                       fd += __rtdm_fd_start;
+               if (fd < 0)
+                       return set_errno(fd);
+
+               return fd + __rtdm_fd_start;
        } else {
                fd = __real_accept(fd, addr, addrlen);
 
                if (fd >= __rtdm_fd_start) {
                        __real_close(fd);
-                       fd = -EMFILE;
+                       errno = EMFILE;
+                       fd = -1;
                }
-       }
 
-       return set_errno(fd);
+               return fd;
+       }
 }
 
 int __wrap_getsockname(int fd, struct sockaddr *name, socklen_t * namelen)

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core

Reply via email to