Changeset 520:97b25e01e6a7 in roaraudio


Ignore:
Timestamp:
08/15/08 15:09:11 (16 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

this code changes seems not to work for me but are 100% correct acccording to the manpages I have here, as far as I understand, strange.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroar/socket.c

    r514 r520  
    302302 
    303303 
    304  if ( type == ROAR_SOCKET_TYPE_INET ) { 
     304 if ( type == ROAR_SOCKET_TYPE_INET || type == ROAR_SOCKET_TYPE_INET6 ) { 
    305305 
    306306  if ( (he = gethostbyname(host)) == NULL ) { 
     
    310310  } 
    311311 
    312   memcpy((struct in_addr *)&socket_addr.in.sin_addr, he->h_addr, sizeof(struct in_addr)); 
    313  
    314   /* set the connect information */ 
    315   socket_addr.in.sin_family = AF_INET; 
    316   socket_addr.in.sin_port = htons( port ); 
    317  
    318   fh = roar_socket_new_tcp(); 
    319  
    320   if ( mode_func(fh, (struct sockaddr *)&socket_addr.in, sizeof(struct sockaddr_in)) == -1 ) { 
    321    ROAR_DBG("roar_socket_open(*): Can not connect/bind: %s", strerror(errno)); 
    322    close(fh); 
     312  if ( he->h_addrtype == AF_INET ) { 
     313   if ( type != ROAR_SOCKET_TYPE_INET ) 
     314    return -1; 
     315 
     316   memcpy((struct in_addr *)&socket_addr.in.sin_addr, he->h_addr, sizeof(struct in_addr)); 
     317 
     318   /* set the connect information */ 
     319   socket_addr.in.sin_family = AF_INET; 
     320   socket_addr.in.sin_port   = ROAR_HOST2NET16(port); 
     321 
     322   fh = roar_socket_new_tcp(); 
     323 
     324   if ( mode_func(fh, (struct sockaddr *)&socket_addr.in, sizeof(struct sockaddr_in)) == -1 ) { 
     325    ROAR_DBG("roar_socket_open(*): Can not connect/bind: %s", strerror(errno)); 
     326    close(fh); 
     327    return -1; 
     328   } 
     329  } if ( he->h_addrtype == AF_INET6 ) { 
     330   if ( type != ROAR_SOCKET_TYPE_INET6 ) 
     331    return -1; 
     332 
     333   memcpy((struct in6_addr *)&socket_addr.in6.sin6_addr, he->h_addr, sizeof(struct in6_addr)); 
     334 
     335   /* set the connect information */ 
     336   socket_addr.in6.sin6_family = AF_INET6; 
     337   socket_addr.in6.sin6_port   = ROAR_HOST2NET16(port); 
     338 
     339   fh = roar_socket_new_tcp6(); 
     340 
     341   if ( mode_func(fh, (struct sockaddr *)&socket_addr.in6, sizeof(struct sockaddr_in6)) == -1 ) { 
     342    ROAR_DBG("roar_socket_open(*): Can not connect/bind: %s", strerror(errno)); 
     343    close(fh); 
     344    return -1; 
     345   } 
     346  } else { 
    323347   return -1; 
    324348  } 
     
    335359   return -1; 
    336360  } 
    337  } else if ( type == ROAR_SOCKET_TYPE_INET6 ) { 
    338   return -1; 
    339361 } else if ( type == ROAR_SOCKET_TYPE_FORK ) { 
    340362  return roar_socket_open_fork(mode, host, port); 
Note: See TracChangeset for help on using the changeset viewer.