SWITCH_BEGIN_EXTERN_C
+#define SWITCH_RTP_HEADER_LEN sizeof(switch_rtp_hdr_t)
#define SWITCH_RTP_MAX_BUF_LEN 16384
#define SWITCH_RTCP_MAX_BUF_LEN 16384
#define SWITCH_RTP_MAX_BUF_LEN_WORDS 4094 /* (max / 4) - 2 */
+#define SWITCH_RTP_MAX_PACKET_LEN (SWITCH_RTP_MAX_BUF_LEN + SWITCH_RTP_HEADER_LEN)
//#define SWITCH_RTP_KEY_LEN 30
//#define SWITCH_RTP_CRYPTO_KEY_32 "AES_CM_128_HMAC_SHA1_32"
#define SWITCH_RTP_CRYPTO_KEY_80 "AES_CM_128_HMAC_SHA1_80"
node->packet = *packet;
node->len = len;
- memcpy(node->packet.body, packet->body, len);
switch_core_inthash_insert(jb->node_hash, node->packet.header.seq, node);
frame->seq = ntohs(node->packet.header.seq);
frame->timestamp = ntohl(node->packet.header.ts);
frame->m = node->packet.header.m;
- frame->datalen = node->len - 12;
+ frame->datalen = node->len - SWITCH_RTP_HEADER_LEN;
- if (frame->data && frame->buflen > node->len - 12) {
- memcpy(frame->data, node->packet.body, node->len - 12);
+ if (frame->data && frame->buflen > node->len - SWITCH_RTP_HEADER_LEN) {
+ memcpy(frame->data, node->packet.body, node->len - SWITCH_RTP_HEADER_LEN);
}
return SWITCH_STATUS_SUCCESS;
}
uint32_t i;
uint16_t want = ntohs(jb->next_seq), got = ntohs(packet->header.seq);
- if (len >= sizeof(switch_rtp_packet_t)) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "trying to put %" SWITCH_SIZE_T_FMT " bytes exceeding buffer, truncate to %" SWITCH_SIZE_T_FMT "\n", len, sizeof(switch_rtp_packet_t));
- len = sizeof(switch_rtp_packet_t);
+ if (len >= SWITCH_RTP_MAX_PACKET_LEN) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "trying to put %" SWITCH_SIZE_T_FMT " bytes exceeding buffer, truncate to %" SWITCH_SIZE_T_FMT "\n", len, SWITCH_RTP_MAX_PACKET_LEN);
+ len = SWITCH_RTP_MAX_PACKET_LEN;
}
switch_mutex_lock(jb->mutex);
}
}
-
add_node(jb, packet, len);
if (switch_test_flag(jb, SJB_QUEUE_ONLY) && jb->max_packet_len && jb->max_frame_len * 2 > jb->max_packet_len &&
jb_debug(jb, 2, "Found buffered seq: %u\n", ntohs(seq));
*packet = node->packet;
*len = node->len;
- memcpy(packet->body, node->packet.body, node->len);
packet->header.version = 2;
status = SWITCH_STATUS_SUCCESS;
} else {
*packet = node->packet;
*len = node->len;
jb->last_len = *len;
- memcpy(packet->body, node->packet.body, node->len);
packet->header.version = 2;
hide_node(node, SWITCH_TRUE);
return status;
}
-
/* For Emacs:
* Local Variables:
* mode:c