Changeset 5408:c6d31c2e4a51 in roaraudio for libroar/vio_stream.c


Ignore:
Timestamp:
02/13/12 22:17:17 (12 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

re-ported to f* s* bla win32 !*!*Dd*S!, I hate this.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroar/vio_stream.c

    r5381 r5408  
    183183 int socks[2]; // for socketpair() 
    184184#endif 
     185 struct roar_sockname sockname; 
    185186 
    186187 // make valgrind happy 
     
    190191#endif 
    191192 
     193 ROAR_DBG("_roar_simple_new_stream_obj(con=%p, s=%p, rate=%i, channels=%i, bits=%i, codec=%i, dir=%i, mixer=%i) = ?", con, s, (int)rate, (int)channels, (int)bits, (int)codec, dir, mixer); 
     194 
    192195 if ( config != NULL ) { 
    193196  if ( config->workaround.workarounds & ROAR_LIBROAR_CONFIG_WAS_USE_EXECED ) { 
     
    196199 } 
    197200 
    198 #ifdef ROAR_HAVE_BSDSOCKETS 
     201 ROAR_DBG("_roar_simple_new_stream_obj(con=%p, s=%p, rate=%i, channels=%i, bits=%i, codec=%i, dir=%i, mixer=%i) = ?", con, s, (int)rate, (int)channels, (int)bits, (int)codec, dir, mixer); 
     202 
    199203 roar_libroar_nowarn(); 
    200  if ( getsockname(roar_get_connection_fh(con), (struct sockaddr *)&socket_addr, &len) == -1 ) { 
     204 if ( roar_vio_ctl(roar_get_connection_vio2(con), ROAR_VIO_CTL_GET_SOCKNAME, &sockname) == -1 ) { 
    201205  roar_libroar_warn(); 
    202   return -1; 
     206#ifdef ROAR_OS_OPENBSD 
     207  sockname.type = ROAR_SOCKET_TYPE_UNIX; 
     208#else 
     209  ROAR_DBG("_roar_simple_new_stream_obj(con=%p, s=%p, rate=%i, channels=%i, bits=%i, codec=%i, dir=%i, mixer=%i) = -1", con, s, (int)rate, (int)channels, (int)bits, (int)codec, dir, mixer); 
     210 
     211  return -1; 
     212#endif 
    203213 } 
    204214 roar_libroar_warn(); 
    205 #else 
    206  return -1; 
    207 #endif 
    208  
    209  if ( len == 0 ) { 
    210 #ifdef ROAR_OS_OPENBSD 
    211   ROAR_WARN("roar_simple_new_stream_obj(*): Unknown address family: guess AF_UNIX because OS is OpenBSD"); 
    212   ((struct sockaddr*)&socket_addr)->sa_family = AF_UNIX; 
    213 #else 
    214   return -1; 
    215 #endif 
    216  } 
    217  
    218  switch (((struct sockaddr*)&socket_addr)->sa_family) { 
    219 #ifdef ROAR_HAVE_UNIX 
    220   case AF_UNIX:   type = ROAR_SOCKET_TYPE_UNIX; break; 
    221 #endif 
    222 #ifdef ROAR_HAVE_IPV4 
    223   case AF_INET:   type = ROAR_SOCKET_TYPE_INET; break; 
    224 #endif 
    225 #ifdef ROAR_HAVE_LIBDNET 
    226   case AF_DECnet: type = ROAR_SOCKET_TYPE_DECNET; break; 
    227 #endif 
    228   default: 
    229     return -1; 
    230    break; 
    231  } 
    232  
    233  if ( type == ROAR_SOCKET_TYPE_DECNET ) { 
     215 
     216 ROAR_DBG("_roar_simple_new_stream_obj(con=%p, s=%p, rate=%i, channels=%i, bits=%i, codec=%i, dir=%i, mixer=%i) = ?", con, s, (int)rate, (int)channels, (int)bits, (int)codec, dir, mixer); 
     217 
     218 if ( sockname.type == ROAR_SOCKET_TYPE_DECNET ) { 
    234219  if ( roar_socket_get_local_nodename() ) { 
    235220   snprintf(file, 24, "%s::roar$TMP%04x%02x", roar_socket_get_local_nodename(), getpid(), count++); 
     
    243228 } 
    244229 
    245  if ( type != ROAR_SOCKET_TYPE_UNIX ) { 
    246   if ( (listen = roar_socket_listen(type, file, port)) == -1 ) { 
     230 if ( sockname.type != ROAR_SOCKET_TYPE_UNIX ) { 
     231  if ( (listen = roar_socket_listen(sockname.type, file, port)) == -1 ) { 
    247232   return -1; 
    248233  } 
    249234 } 
    250235 
    251  if ( type == ROAR_SOCKET_TYPE_INET ) { 
     236 if ( sockname.type == ROAR_SOCKET_TYPE_INET ) { 
    252237#ifdef ROAR_HAVE_IPV4 
    253238  setsockopt(listen, SOL_SOCKET, SO_REUSEADDR, (void*)&opt, sizeof(int)); 
     
    262247  return -1; 
    263248#endif 
    264  } else if ( type == ROAR_SOCKET_TYPE_DECNET ) { 
     249 } else if ( sockname.type == ROAR_SOCKET_TYPE_DECNET ) { 
    265250#ifdef ROAR_HAVE_LIBDNET 
    266251  setsockopt(listen, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(int)); 
     
    278263 } 
    279264 
    280  if ( type != ROAR_SOCKET_TYPE_UNIX ) { 
     265 if ( sockname.type != ROAR_SOCKET_TYPE_UNIX ) { 
    281266#ifdef ROAR_HAVE_SELECT 
    282   if ( roar_stream_connect_to_ask(con, s, type, file, port) != -1 ) { 
     267  if ( roar_stream_connect_to_ask(con, s, sockname.type, file, port) != -1 ) { 
    283268 
    284269   FD_ZERO(&fds); 
     
    354339  return -1; 
    355340#endif 
    356  } else { // this is type == ROAR_SOCKET_TYPE_UNIX 
     341 } else { // this is sockname.type == ROAR_SOCKET_TYPE_UNIX 
    357342#ifdef ROAR_HAVE_UNIX 
    358343  if ( socketpair(AF_UNIX, SOCK_STREAM, 0, socks) == -1 ) { 
     
    388373 s->fh = fh; 
    389374 
     375 ROAR_DBG("_roar_simple_new_stream_obj(con=%p, s=%p, rate=%i, channels=%i, bits=%i, codec=%i, dir=%i, mixer=%i) = %i", con, s, (int)rate, (int)channels, (int)bits, (int)codec, dir, mixer, fh); 
    390376 return fh; 
    391377} 
Note: See TracChangeset for help on using the changeset viewer.