void SdesTransport::write(char* data, int len) { //boost::mutex::scoped_lock lock(writeMutex_); int length = len; SrtpChannel *srtp = srtp_; int comp = 1; if (this->getTransportState() == TRANSPORT_READY) { memset(protectBuf_, 0, len); memcpy(protectBuf_, data, len); rtcpheader *chead = reinterpret_cast<rtcpheader*> (protectBuf_); if (chead->packettype == RTCP_Sender_PT || chead->packettype == RTCP_Receiver_PT || chead->packettype == RTCP_PS_Feedback_PT || chead->packettype == RTCP_RTP_Feedback_PT) { if (!rtcp_mux_) { comp = 2; } if (srtcp_ != NULL) { srtp = srtcp_; } if (srtp && nice_->iceState == NICE_READY) { if(srtp->protectRtcp(protectBuf_, &length)<0) { return; } } } else{ comp = 1; if (srtp && nice_->iceState == NICE_READY) { if(srtp->protectRtp(protectBuf_, &length)<0) { return; } } } if (length <= 10) { return; } if (nice_->iceState == NICE_READY) { //getTransportListener()->queueData(comp, protectBuf_, length, this); this->writeOnNice(comp, protectBuf_, length); } } }
void DtlsTransport::write(char* data, int len) { boost::mutex::scoped_lock lock(writeMutex_); if (nice_==NULL) return; int length = len; SrtpChannel *srtp = srtp_.get(); if (this->getTransportState() == TRANSPORT_READY) { memcpy(protectBuf_, data, len); int comp = 1; RtcpHeader *chead = reinterpret_cast<RtcpHeader*> (protectBuf_); if (chead->isRtcp()) { if (!rtcp_mux_) { comp = 2; } if (dtlsRtcp != NULL) { srtp = srtcp_.get(); } if (srtp && nice_->checkIceState() == NICE_READY) { if(srtp->protectRtcp(protectBuf_, &length)<0) { return; } } } else{ comp = 1; if (srtp && nice_->checkIceState() == NICE_READY) { if(srtp->protectRtp(protectBuf_, &length)<0) { return; } } } if (length <= 10) { return; } if (nice_->checkIceState() == NICE_READY) { this->writeOnNice(comp, protectBuf_, length); } } }