Changeset 2007:4eb7199520fb in roaraudio for libroar/slp.c
- Timestamp:
- 06/15/09 20:01:29 (15 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroar/slp.c
r2005 r2007 42 42 struct roar_slp_cookie * self = cookie; 43 43 44 ROAR_WARN("roar_slp_url_callback(*) = ?"); 45 44 46 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; 46 51 47 52 if ( self->matchcount == ROAR_SLP_MAX_MATCHES ) 48 53 return SLP_FALSE; 49 54 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); 51 56 52 57 self->match[self->matchcount].url[ROAR_SLP_MAX_URL_LEN-1] = 0; 58 59 self->matchcount++; 53 60 } else { 54 *(SLPError*)cookie= errcode;61 self->callbackerr = errcode; 55 62 } 63 56 64 57 65 /* return SLP_TRUE because we want to be called again */ … … 64 72 #ifdef ROAR_HAVE_LIBSLP 65 73 SLPError err; 66 SLPError callbackerr;67 74 SLPHandle hslp; 75 76 ROAR_WARN("roar_slp_search(cookie=%p, type='%s') = ?", cookie, type); 68 77 69 78 if ( cookie->search != NULL ) /* currently only non-search filter mode supported */ … … 75 84 } 76 85 86 ROAR_WARN("roar_slp_search(*) = ?"); 87 77 88 err = SLPFindSrvs(hslp, 78 89 type, … … 80 91 0, /* no attr filter */ 81 92 roar_slp_url_callback, 82 &callbackerr); 93 cookie); 94 95 ROAR_WARN("roar_slp_search(*) = ?"); 83 96 84 97 /* err may contain an error code that occurred as the slp library */ 85 98 /* _prepared_ to make the call. */ 86 if (err != SLP_OK) {99 if (err != SLP_OK) { 87 100 return -1; 88 101 } … … 91 104 /* the callback cookie) that occurred as slp packets were sent on */ 92 105 /* the wire */ 93 if (c allbackerr != SLP_OK) {106 if (cookie->callbackerr != SLP_OK) { 94 107 return -1; 95 108 } 96 109 110 ROAR_WARN("roar_slp_search(*) = ?"); 111 97 112 /* Now that we're done using slp, close the slp handle */ 98 SLPClose(hslp);113 //SLPClose(hslp); 99 114 100 return -1; 115 ROAR_WARN("roar_slp_search(*) = ?"); 116 117 return 0; 101 118 #else 102 119 return -1; … … 127 144 int roar_slp_find_roard_r (char * addr, size_t len) { 128 145 struct roar_slp_cookie cookie; 146 int offset = 0; 147 148 ROAR_WARN("roar_slp_find_roard_r(addr=%p, len=%i) = ?", addr, len); 129 149 130 150 if ( addr == NULL || len == 0 ) … … 133 153 *addr = 0; // just in case... 134 154 155 ROAR_WARN("roar_slp_find_roard_r(*) = ?"); 156 135 157 if ( roar_slp_cookie_init(&cookie, NULL) == -1 ) 136 158 return -1; 159 160 ROAR_WARN("roar_slp_find_roard_r(*) = ?"); 137 161 138 162 if ( roar_slp_search(&cookie, "service:mixer.fellig:roar") == -1 ) 139 163 return -1; 140 164 165 ROAR_WARN("roar_slp_find_roard_r(*) = ?"); 166 141 167 if ( cookie.matchcount == 0 ) 142 168 return -1; 143 169 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); 145 178 addr[len-1] = 0; // also just in case. 179 180 ROAR_WARN("roar_slp_find_roard_r(*): addr='%s'", addr); 146 181 147 182 return 0;
Note: See TracChangeset
for help on using the changeset viewer.