Changeset 92:2d61884489be in roaraudio
- Timestamp:
- 07/13/08 01:19:24 (16 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
roard/req.c
r84 r92 135 135 136 136 int req_on_set_meta (int client, struct roar_message * mes, char * data) { 137 int type; 138 int mode; 139 int namelen, vallen; 140 char val[1024+1]; 141 char name[ROAR_META_MAX_NAMELEN+1]; 142 143 if ( mes->datalen < 3 ) 144 return -1; 145 146 if ( mes->data[0] != 0 ) // version 147 return -1; 148 149 mode = (unsigned) mes->data[1]; 150 type = (unsigned) mes->data[2]; 151 152 if ( mode == ROAR_META_MODE_CLEAR ) { 153 stream_meta_clear(mes->stream); 154 mes->datalen = 0; 155 mes->cmd = ROAR_CMD_OK; 156 return 0; 157 } else if ( mode == ROAR_META_MODE_DELETE ) { // unsuppoerted at the moment 158 } else if ( mode == ROAR_META_MODE_SET || mode == ROAR_META_MODE_ADD ) { 159 if ( mes->datalen < 5 ) 160 return -1; 161 162 namelen = (unsigned) mes->data[3]; 163 vallen = (unsigned) mes->data[4]; 164 165 if ( mes->datalen < (5 + namelen + vallen) ) 166 return -1; 167 168 if ( namelen > ROAR_META_MAX_NAMELEN ) 169 return -1; 170 171 strncpy(name, &(mes->data[5]), namelen); 172 name[namelen] = 0; 173 174 if ( vallen > 1024 ) 175 return -1; 176 177 strncpy(val, &(mes->data[5+namelen]), vallen); 178 val[vallen] = 0; 179 180 if ( mode == ROAR_META_MODE_SET ) { 181 if ( stream_meta_set(mes->stream, type, name, val) == -1 ) 182 return -1; 183 } else { 184 if ( stream_meta_add(mes->stream, type, name, val) == -1 ) 185 return -1; 186 } 187 188 mes->datalen = 0; 189 mes->cmd = ROAR_CMD_OK; 190 return 0; 191 } else { // unknown mode! 192 return -1; 193 } 194 137 195 return -1; 138 196 }
Note: See TracChangeset
for help on using the changeset viewer.