diff --git a/calltable.cpp b/calltable.cpp index 9e3ef48..c230fc9 100644 --- a/calltable.cpp +++ b/calltable.cpp @@ -62,6 +62,7 @@ int calltable::add( table[idx].ip_n=0; table[idx].last_packet_time=time; global_last_packet_time=time; + callid_to_idx[std::string(call_id, call_id_len)] = idx; return idx; } @@ -70,14 +71,11 @@ int calltable::find_by_call_id( unsigned long call_id_len) { int i; - for (i=0;i<(int)table_size;i++){ - if ((table[i].is_used!=0)&& - (table[i].call_id_len==call_id_len)&& - (memcmp(table[i].call_id,call_id,MIN(call_id_len,32))==0)){ - return i; - } + callid_idx::iterator it = callid_to_idx.find(std::string(call_id, call_id_len)); + if (it == callid_to_idx.end()) { + return -1; } - return -1; + return it->second; } int calltable::add_ip_port( @@ -102,6 +100,7 @@ int calltable::add_ip_port( table[call_idx].ip[n]=addr; table[call_idx].port[n]=port; table[call_idx].ip_n++; + rtp_to_idx[rtp_key(addr, port)] = call_idx; } return 0; } @@ -112,13 +111,18 @@ int calltable::find_ip_port( unsigned short port) { int idx,i; - for(idx=0;idx<(int)table_size;idx++){ - for(i=0;i