X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=mISDN.cpp;h=3c4c23d44608bbddf2bd55a391bcd9e14531c807;hp=0abffd6f714ff0849769c54c6268888a51370952;hb=e01d4caa3eef0f4d17e5513cb793e19fecd2b051;hpb=b2d271bef8a35aad5822358632aaa40ec6d8198a diff --git a/mISDN.cpp b/mISDN.cpp index 0abffd6..3c4c23d 100644 --- a/mISDN.cpp +++ b/mISDN.cpp @@ -1382,7 +1382,9 @@ int PmISDN::handler(void) p_m_load = 0; /* to send data, tone must be active OR crypt messages must be on */ - if ((p_tone_name[0] || p_m_crypt_msg_loops) && p_m_load < ISDN_LOAD) + if ((p_tone_name[0] || p_m_crypt_msg_loops) + && (p_m_load < ISDN_LOAD) + && (p_state==PORT_STATE_CONNECT || p_m_mISDNport->tones)) { int tosend = ISDN_LOAD - p_m_load, length; #ifdef SOCKET_MISDN @@ -1971,7 +1973,7 @@ int PmISDN::message_epoint(unsigned long epoint_id, int message_id, union parame #ifdef SOCKET_MISDN int mISDN_handler(void) { - int ret; + int ret, work = 0; struct mISDNport *mISDNport; class PmISDN *isdnport; int i; @@ -2050,6 +2052,7 @@ int mISDN_handler(void) ret = recv(mISDNport->b_stack[i], buffer, sizeof(buffer), 0); if (ret >= MISDN_HEADER_LEN) { + work = 1; switch(hh->prim) { /* we don't care about confirms, we use rx data to sync tx */ @@ -2060,6 +2063,7 @@ int mISDN_handler(void) /* we receive audio data, we respond to it AND we send tones */ case PH_DATA_IND: case DL_DATA_IND: + case PH_SIGNAL_IND: case PH_CONTROL_IND: if (mISDNport->b_port[i]) mISDNport->b_port[i]->bchannel_receive(hh, buffer+MISDN_HEADER_LEN, ret-MISDN_HEADER_LEN); @@ -2120,6 +2124,8 @@ int mISDN_handler(void) mISDNport = mISDNport->next; } + /* if we received at least one b-frame, we will return 1 */ + return(work); } #else int mISDN_handler(void)