Changeset 2007:4eb7199520fb in roaraudio for libroar/slp.c


Ignore:
Timestamp:
06/15/09 20:01:29 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

got client slp working, need cleanup

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroar/slp.c

    r2005 r2007  
    4242 struct roar_slp_cookie * self = cookie; 
    4343 
     44 ROAR_WARN("roar_slp_url_callback(*) = ?"); 
     45 
    4446 if (errcode == SLP_OK || errcode == SLP_LAST_CALL) { 
    45   *(SLPError*)cookie = SLP_OK; 
     47  self->callbackerr = SLP_OK; 
     48 
     49  if ( srvurl == NULL ) /* hu? */ 
     50   return SLP_TRUE; 
    4651 
    4752  if ( self->matchcount == ROAR_SLP_MAX_MATCHES ) 
    4853   return SLP_FALSE; 
    4954 
    50   strncpy(self->match[self->matchcount++].url, srvurl, ROAR_SLP_MAX_URL_LEN); 
     55  strncpy(self->match[self->matchcount].url, srvurl, ROAR_SLP_MAX_URL_LEN); 
    5156 
    5257  self->match[self->matchcount].url[ROAR_SLP_MAX_URL_LEN-1] = 0; 
     58 
     59  self->matchcount++; 
    5360 } else { 
    54   *(SLPError*)cookie = errcode; 
     61  self->callbackerr = errcode; 
    5562 } 
     63 
    5664 
    5765 /* return SLP_TRUE because we want to be called again */ 
     
    6472#ifdef ROAR_HAVE_LIBSLP 
    6573 SLPError err; 
    66  SLPError callbackerr; 
    6774 SLPHandle hslp; 
     75 
     76 ROAR_WARN("roar_slp_search(cookie=%p, type='%s') = ?", cookie, type); 
    6877 
    6978 if ( cookie->search != NULL ) /* currently only non-search filter mode supported */ 
     
    7584 } 
    7685 
     86 ROAR_WARN("roar_slp_search(*) = ?"); 
     87 
    7788 err = SLPFindSrvs(hslp, 
    7889                   type, 
     
    8091                   0,                    /* no attr filter        */ 
    8192                   roar_slp_url_callback, 
    82                    &callbackerr); 
     93                   cookie); 
     94 
     95 ROAR_WARN("roar_slp_search(*) = ?"); 
    8396 
    8497  /* err may contain an error code that occurred as the slp library    */ 
    8598  /* _prepared_ to make the call.                                     */ 
    86   if(err != SLP_OK) { 
     99  if (err != SLP_OK) { 
    87100   return -1; 
    88101  } 
     
    91104 /* the callback cookie) that occurred as slp packets were sent on    */ 
    92105 /* the wire */ 
    93  if (callbackerr != SLP_OK) { 
     106 if (cookie->callbackerr != SLP_OK) { 
    94107  return -1; 
    95108 } 
    96109 
     110 ROAR_WARN("roar_slp_search(*) = ?"); 
     111 
    97112 /* Now that we're done using slp, close the slp handle */ 
    98  SLPClose(hslp); 
     113 //SLPClose(hslp); 
    99114 
    100  return -1; 
     115 ROAR_WARN("roar_slp_search(*) = ?"); 
     116 
     117 return 0; 
    101118#else 
    102119 return -1; 
     
    127144int    roar_slp_find_roard_r (char * addr, size_t len) { 
    128145 struct roar_slp_cookie cookie; 
     146 int offset = 0; 
     147 
     148 ROAR_WARN("roar_slp_find_roard_r(addr=%p, len=%i) = ?", addr, len); 
    129149 
    130150 if ( addr == NULL || len == 0 ) 
     
    133153 *addr = 0; // just in case... 
    134154 
     155 ROAR_WARN("roar_slp_find_roard_r(*) = ?"); 
     156 
    135157 if ( roar_slp_cookie_init(&cookie, NULL) == -1 ) 
    136158  return -1; 
     159 
     160 ROAR_WARN("roar_slp_find_roard_r(*) = ?"); 
    137161 
    138162 if ( roar_slp_search(&cookie, "service:mixer.fellig:roar") == -1 ) 
    139163  return -1; 
    140164 
     165 ROAR_WARN("roar_slp_find_roard_r(*) = ?"); 
     166 
    141167 if ( cookie.matchcount == 0 ) 
    142168  return -1; 
    143169 
    144  strncpy(addr, cookie.match[0].url, len); 
     170 ROAR_WARN("roar_slp_find_roard_r(*) = ?"); 
     171 
     172 if ( !strncmp(cookie.match[0].url, "service:mixer.fellig:roar://", 28) ) 
     173  offset = 28; 
     174 
     175 ROAR_WARN("roar_slp_find_roard_r(*): url='%s'", cookie.match[0].url); 
     176 
     177 strncpy(addr, &(cookie.match[0].url[offset]), len); 
    145178 addr[len-1] = 0; // also just in case. 
     179 
     180 ROAR_WARN("roar_slp_find_roard_r(*): addr='%s'", addr); 
    146181 
    147182 return 0; 
Note: See TracChangeset for help on using the changeset viewer.