Changeset 501:985357040570 in roaraudio for libroar/socket.c
- Timestamp:
- 08/14/08 17:51:30 (16 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroar/socket.c
r442 r501 139 139 //unsigned int host_div = 0; 140 140 int (*mode_func)(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen) = connect; // default is to connect 141 #ifdef ROAR_HAVE_LIBDNET 142 char obj[80]; 143 char * del; 144 #endif 141 145 142 146 if ( mode == MODE_LISTEN ) … … 149 153 } else if ( strcmp(host, "+fork") == 0 ) { 150 154 type = ROAR_SOCKET_TYPE_FORK; 155 } else if ( strstr(host, "::") != NULL ) { 156 type = ROAR_SOCKET_TYPE_DECNET; 151 157 } 152 158 } … … 155 161 ROAR_DBG("roar_socket_open(*): type=%s, host='%s', port=%i", 156 162 type == ROAR_SOCKET_TYPE_UNIX ? "UNIX" : "INET", host, port); 163 164 if ( type == ROAR_SOCKET_TYPE_DECNET ) { 165 if ( mode == MODE_LISTEN ) { 166 return -1; // listen sockets on DECnet are not supportet at the moment 167 } else { 168 #ifdef ROAR_HAVE_LIBDNET 169 // There is nothing wrong in this case to use dnet_conn() so we do. 170 del = strstr(host, "::"); 171 *del = 0; 172 173 if ( *(del+2) == '#' ) { // assume we have node::#num 174 port = atoi(del+2); 175 } 176 177 if ( port ) { 178 sprintf(obj, "%i", port); // no need for snprintf() as dec(port) is smaller than obj[] 179 } else { 180 *obj = 0; 181 strncat(obj, del+2, 79); 182 } 183 184 fh = dnet_conn(host, obj, SOCK_STREAM, 0 ,0 ,0 , 0); 185 *del = ':'; 186 return fh; 187 #else 188 return -1; // no decnet support 189 #endif 190 } 191 } 157 192 158 193 memset(&socket_addr , 0, sizeof(socket_addr)); … … 348 383 } 349 384 385 #if 0 386 #ifdef ROAR_HAVE_LIBDNET 387 int roar_accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen) { 388 struct sockaddr_dn sockaddr_d, * sockaddr_p = &sockaddr_d; 389 socklen_t len = *addrlen; 390 int r; 391 392 if ( len < sizeof(struct sockaddr_dn) ) { 393 len = sizeof(struct sockaddr_dn); 394 r = accept(sockfd, (struct sockaddr *) sockaddr_p, &len); 395 396 memcpy((void*)addr, (void*) sockaddr_p, len > *addrlen ? *addrlen : len); 397 398 if ( len < *addrlen ) 399 *addrlen = len; 400 401 } else { 402 r = accept(sockfd, addr, addrlen); 403 sockaddr_p = (struct sockaddr_dn *) addr; 404 len = *addrlen; 405 } 406 407 if ( r != -1 ) { 408 // do dnet_accept(), but it does nothing at the moment. 409 } 410 411 return r; 412 } 413 #endif 414 #endif 415 350 416 //ll
Note: See TracChangeset
for help on using the changeset viewer.