|
@@ -48,13 +48,10 @@ dmq_peer_list_t* init_peer_list()
|
|
dmq_peer_t* search_peer_list(dmq_peer_list_t* peer_list, dmq_peer_t* peer)
|
|
dmq_peer_t* search_peer_list(dmq_peer_list_t* peer_list, dmq_peer_t* peer)
|
|
{
|
|
{
|
|
dmq_peer_t* crt;
|
|
dmq_peer_t* crt;
|
|
- int len;
|
|
|
|
|
|
+
|
|
crt = peer_list->peers;
|
|
crt = peer_list->peers;
|
|
while(crt) {
|
|
while(crt) {
|
|
- /* len - the minimum length of the two strings */
|
|
|
|
- len = (crt->peer_id.len < peer->peer_id.len)
|
|
|
|
- ? crt->peer_id.len:peer->peer_id.len;
|
|
|
|
- if(strncasecmp(crt->peer_id.s, peer->peer_id.s, len) == 0) {
|
|
|
|
|
|
+ if (STR_EQ(crt->peer_id, peer->peer_id)) {
|
|
return crt;
|
|
return crt;
|
|
}
|
|
}
|
|
crt = crt->next;
|
|
crt = crt->next;
|
|
@@ -68,8 +65,8 @@ dmq_peer_t* search_peer_list(dmq_peer_list_t* peer_list, dmq_peer_t* peer)
|
|
dmq_peer_t* add_peer(dmq_peer_list_t* peer_list, dmq_peer_t* peer)
|
|
dmq_peer_t* add_peer(dmq_peer_list_t* peer_list, dmq_peer_t* peer)
|
|
{
|
|
{
|
|
dmq_peer_t* new_peer = NULL;
|
|
dmq_peer_t* new_peer = NULL;
|
|
-
|
|
|
|
- new_peer = shm_malloc(sizeof(dmq_peer_t));
|
|
|
|
|
|
+
|
|
|
|
+ new_peer = shm_malloc(sizeof(dmq_peer_t) + peer->peer_id.len + peer->description.len);
|
|
if(new_peer==NULL) {
|
|
if(new_peer==NULL) {
|
|
LM_ERR("no more shm\n");
|
|
LM_ERR("no more shm\n");
|
|
return NULL;
|
|
return NULL;
|
|
@@ -77,25 +74,11 @@ dmq_peer_t* add_peer(dmq_peer_list_t* peer_list, dmq_peer_t* peer)
|
|
*new_peer = *peer;
|
|
*new_peer = *peer;
|
|
|
|
|
|
/* copy the str's */
|
|
/* copy the str's */
|
|
- new_peer->peer_id.s = shm_malloc(peer->peer_id.len);
|
|
|
|
- if(new_peer->peer_id.s==NULL) {
|
|
|
|
- LM_ERR("no more shm\n");
|
|
|
|
- shm_free(new_peer);
|
|
|
|
- return NULL;
|
|
|
|
- }
|
|
|
|
|
|
+ new_peer->peer_id.s = (char*)new_peer + sizeof(dmq_peer_t);
|
|
memcpy(new_peer->peer_id.s, peer->peer_id.s, peer->peer_id.len);
|
|
memcpy(new_peer->peer_id.s, peer->peer_id.s, peer->peer_id.len);
|
|
- new_peer->peer_id.len = peer->peer_id.len;
|
|
|
|
|
|
|
|
- new_peer->description.s = shm_malloc(peer->description.len);
|
|
|
|
- if(new_peer->description.s==NULL) {
|
|
|
|
- LM_ERR("no more shm\n");
|
|
|
|
- shm_free(new_peer->peer_id.s);
|
|
|
|
- shm_free(new_peer);
|
|
|
|
- return NULL;
|
|
|
|
- }
|
|
|
|
|
|
+ new_peer->description.s = new_peer->peer_id.s + new_peer->peer_id.len;
|
|
memcpy(new_peer->description.s, peer->description.s, peer->description.len);
|
|
memcpy(new_peer->description.s, peer->description.s, peer->description.len);
|
|
- new_peer->description.len = peer->description.len;
|
|
|
|
-
|
|
|
|
new_peer->next = peer_list->peers;
|
|
new_peer->next = peer_list->peers;
|
|
peer_list->peers = new_peer;
|
|
peer_list->peers = new_peer;
|
|
return new_peer;
|
|
return new_peer;
|