Browse Source

fixed a bug in dmq_register_peer

Marius Bucur 14 years ago
parent
commit
e7811507b2

+ 1 - 3
modules_k/dmq/dmq.h

@@ -10,17 +10,15 @@
 #include "bind_dmq.h"
 #include "peer.h"
 #include "worker.h"
-#include "dmqnode.h"
 
 #define DEFAULT_NUM_WORKERS	2
-#define MIN_PING_INTERVAL	4
+#define MIN_PING_INTERVAL	60
 
 extern int num_workers;
 extern dmq_worker_t* workers;
 extern dmq_peer_t* dmq_notification_peer;
 extern str dmq_server_address;
 extern dmq_peer_list_t* peer_list;
-extern dmq_node_list_t* node_list;
 extern str dmq_request_method;
 extern struct sip_uri dmq_server_uri;
 extern str dmq_notification_address;

+ 1 - 0
modules_k/dmq/dmq_funcs.c

@@ -7,6 +7,7 @@ dmq_peer_t* register_dmq_peer(dmq_peer_t* peer) {
 	if(search_peer_list(peer_list, peer)) {
 		LM_ERR("peer already exists: %.*s %.*s\n", peer->peer_id.len, peer->peer_id.s,
 		       peer->description.len, peer->description.s);
+		lock_release(&peer_list->lock);
 		return NULL;
 	}
 	new_peer = add_peer(peer_list, peer);

+ 1 - 0
modules_k/dmq/dmq_funcs.h

@@ -8,6 +8,7 @@
 #include "dmq.h"
 #include "peer.h"
 #include "worker.h"
+#include "dmqnode.h"
 
 void ping_servers(unsigned int ticks,void *param);
 

+ 1 - 0
modules_k/dmq/dmqnode.h

@@ -32,6 +32,7 @@ typedef struct dmq_node_list {
 } dmq_node_list_t;
 
 extern str dmq_node_status_str;
+extern dmq_node_list_t* node_list;
 
 dmq_node_list_t* init_dmq_node_list();
 dmq_node_t* build_dmq_node(str* uri, int shm);

+ 13 - 3
modules_k/presence/presence.c

@@ -210,9 +210,19 @@ struct module_exports exports= {
 	child_init                  	/* per-child init function */
 };
 
-int dmq_callback(struct sip_msg* msg) {
+int dmq_presence_callback(struct sip_msg* msg, peer_reponse_t* resp) {
 	LM_ERR("it worked - dmq module triggered the presence callback [%ld %d]\n", time(0), my_pid());
-	sleep(4);
+	if(update_presentity(msg, 0, (str*)msg->body, 0, 0, 0) <0)
+	{
+		LM_ERR("when updating presentity\n");
+		return -1;
+	}
+	str ct = str_init("text/xml");
+	str reason = str_init("200 OK");
+	resp->content_type = ct;
+	resp->reason = reason;
+	resp->body.s = 0;
+	resp->resp_code = 200;
 	return 0;
 }
 
@@ -222,7 +232,7 @@ static void add_dmq_peer() {
 	presence_peer.peer_id.len = 8;
 	presence_peer.description.s = "presence";
 	presence_peer.description.len = 8;
-	presence_peer.callback = dmq_callback;
+	presence_peer.callback = dmq_presence_callback;
 	register_dmq(&presence_peer);
 }