Changeset 5838:52ca1a88734e in roaraudio for libroar/basic.c


Ignore:
Timestamp:
01/07/13 02:36:01 (11 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

handle setting of server name in connection object in a better way. also added new command "servername" to roarctl to debug this a bit. This is one little step needed by ##337

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroar/basic.c

    r5832 r5838  
    4646 int r; 
    4747 char fhstr[12]; 
     48 size_t len; 
    4849 
    4950 if ( !strncmp(server, "+fork=", 6) ) { 
     
    7879  daemonimage = "roard"; 
    7980 
     81 len = roar_mm_strlen(daemonimage) + 9; // 9 = '+fork=' + 'X:' + '\0' 
     82 con->server_name = roar_mm_malloc(len); 
     83 if ( con->server_name != NULL ) { 
     84  snprintf(con->server_name, len, "+fork=%s%s", mode == NORMAL ? "d:" : "!", daemonimage); 
     85 } 
     86 
    8087 if ( socketpair(AF_UNIX, SOCK_STREAM, 0, socks) == -1 ) { 
    8188  roar_err_from_errno(); 
     
    164171 int fh = -1; 
    165172 int err; 
     173 int ret; 
    166174 
    167175 if ( con == NULL || server == NULL ) { 
     
    177185   return -1; 
    178186  con->flags |= ROAR_CON_FLAGS_VIO; 
     187  con->server_name = roar_mm_strdup(server); 
    179188  return 0; 
    180189 } else if ( !strcmp(server, "+fork") || !strncmp(server, "+fork=", 6) ) { 
    181190  return _start_server(con, server, type, flags, timeout); 
    182191 } else if ( !strcmp(server, "+internal") || !strncmp(server, "+internal=", 10) ) { 
    183   return _connect_internal(con, server, type, flags, timeout); 
     192  ret = _connect_internal(con, server, type, flags, timeout); 
     193  if ( ret == 0 ) 
     194   con->server_name = roar_mm_strdup(server); 
     195  return ret; 
    184196 } 
    185197 
     
    217229 
    218230  if ( *obj == 0 ) { 
    219 #ifdef DN_MAXOBJL 
    220231   roar_mm_strlcat(user_sock, ROAR_DEFAULT_OBJECT, sizeof(user_sock)-1); 
    221232   user_sock[sizeof(user_sock)-1] = 0; 
    222 #else 
    223    ROAR_ERR("roar_connect_raw(*): size of DECnet object unknown."); 
    224 #endif 
    225   } 
    226    ROAR_DBG("roar_connect_raw(*): user_sock='%s'", user_sock); 
     233  } 
     234 
     235  ROAR_DBG("roar_connect_raw(*): user_sock='%s'", user_sock); 
    227236 } 
    228237 
     
    265274 } 
    266275 
     276 con->server_name = roar_mm_strdup(server); 
     277 
    267278 roar_err_set(ROAR_ERROR_NONE); 
    268279 return 0; 
     
    449460  return -1; 
    450461 
    451  // TODO: this should be moved to be within _connect_server() so it also stores server names of auto located servers. 
    452  if ( server != NULL ) { 
    453   con->server_name = roar_mm_strdup(server); 
    454  } 
    455  
    456462 return 0; 
    457463} 
Note: See TracChangeset for help on using the changeset viewer.