comparison rtmppkt.c @ 5378:c22a1e94e80f libavformat

When searching for AMF object field value, try to find that object first instead of assuming it should occur right at given position. This helps finding human-readable error descriptions in RTMP server replies.
author kostya
date Sun, 22 Nov 2009 09:03:06 +0000
parents a00cc1aac80d
children f042e114451f
comparison
equal deleted inserted replaced
5377:9313acce85fc 5378:c22a1e94e80f
231 const uint8_t *name, uint8_t *dst, int dst_size) 231 const uint8_t *name, uint8_t *dst, int dst_size)
232 { 232 {
233 int namelen = strlen(name); 233 int namelen = strlen(name);
234 int len; 234 int len;
235 235
236 while (*data != AMF_DATA_TYPE_OBJECT && data < data_end) {
237 len = ff_amf_tag_size(data, data_end);
238 if (len < 0)
239 len = data_end - data;
240 data += len;
241 }
236 if (data_end - data < 3) 242 if (data_end - data < 3)
237 return -1; 243 return -1;
238 if (*data++ != AMF_DATA_TYPE_OBJECT) 244 data++;
239 return -1;
240 for (;;) { 245 for (;;) {
241 int size = bytestream_get_be16(&data); 246 int size = bytestream_get_be16(&data);
242 if (!size) 247 if (!size)
243 break; 248 break;
244 if (data + size >= data_end || data + size < data) 249 if (data + size >= data_end || data + size < data)