Fix invalid socket and file descriptor is not a socket test
authorBogdan Drutu <bogdandrutu@gmail.com>
Sat, 4 Jun 2011 08:31:53 +0000 (11:31 +0300)
committerBogdan Drutu <bogdandrutu@gmail.com>
Sat, 4 Jun 2011 08:31:53 +0000 (11:31 +0300)
src/raw/swift_raw.c

index 4f26551..12f8fb5 100644 (file)
@@ -142,20 +142,14 @@ ssize_t sw_sendto(int __fd, __const void *__buf, size_t __n,
        struct msghdr __msgh;
        struct sockaddr_sw *__sw_addr = (struct sockaddr_sw *) __addr;
 
-       printf("=== ADDR: %s ===", ntohl(__sw_addr->sin_addr.s_addr));
        list = list_elem_from_socket(__fd);
-       if (list == NULL) {
-               errno = EBADF;
-               goto sock_err;
-       }
-
-
-       if (list->bind_state == STATE_NOTBOUND) {
-               errno = EDESTADDRREQ;
+       if (list != NULL && list->bind_state == STATE_NOTBOUND) {
+               errno = EAFNOSUPPORT;
                goto sock_err;
        }
  
-       
+       printf("=== ADDR: %s ===\n", ntohl(__sw_addr->sin_addr.s_addr));
+
        /* Specify the components of the message in an "iovec".   */
        __iov[0].iov_base = (void *) __buf;
        __iov[0].iov_len = __n;