Selaa lähdekoodia

dmq: add missing memory allocation checks, convert to memory log macros

Pantelis Kolatsis 2 vuotta sitten
vanhempi
commit
7e617ab89f

+ 4 - 3
src/modules/dmq/dmq.c

@@ -156,7 +156,7 @@ static int make_socket_str_from_uri(struct sip_uri *uri, str *socket)
 	socket->len = uri->host.len + uri->port.len + 7 /*sctp + : + : \0*/;
 	socket->len = uri->host.len + uri->port.len + 7 /*sctp + : + : \0*/;
 	socket->s = pkg_malloc(socket->len);
 	socket->s = pkg_malloc(socket->len);
 	if(socket->s == NULL) {
 	if(socket->s == NULL) {
-		LM_ERR("no more pkg\n");
+		PKG_MEM_ERROR;
 		return -1;
 		return -1;
 	}
 	}
 
 
@@ -245,14 +245,15 @@ static int mod_init(void)
 	/* allocate workers array */
 	/* allocate workers array */
 	dmq_workers = shm_malloc(dmq_num_workers * sizeof(dmq_worker_t));
 	dmq_workers = shm_malloc(dmq_num_workers * sizeof(dmq_worker_t));
 	if(dmq_workers == NULL) {
 	if(dmq_workers == NULL) {
-		LM_ERR("error in shm_malloc\n");
+		SHM_MEM_ERROR;
 		return -1;
 		return -1;
 	}
 	}
 	memset(dmq_workers, 0, dmq_num_workers * sizeof(dmq_worker_t));
 	memset(dmq_workers, 0, dmq_num_workers * sizeof(dmq_worker_t));
 
 
 	dmq_init_callback_done = shm_malloc(sizeof(int));
 	dmq_init_callback_done = shm_malloc(sizeof(int));
 	if(!dmq_init_callback_done) {
 	if(!dmq_init_callback_done) {
-		LM_ERR("no more shm\n");
+		SHM_MEM_ERROR;
+		shm_free(dmq_workers);
 		return -1;
 		return -1;
 	}
 	}
 	*dmq_init_callback_done = 0;
 	*dmq_init_callback_done = 0;

+ 3 - 3
src/modules/dmq/dmq_funcs.c

@@ -91,7 +91,7 @@ int build_uri_str(str *username, struct sip_uri *uri, str *from)
 				+ TRANSPORT_PARAM_LEN;
 				+ TRANSPORT_PARAM_LEN;
 	from->s = pkg_malloc(from_len);
 	from->s = pkg_malloc(from_len);
 	if(from->s == NULL) {
 	if(from->s == NULL) {
-		LM_ERR("no more pkg\n");
+		PKG_MEM_ERROR;
 		return -1;
 		return -1;
 	}
 	}
 	from->len = 0;
 	from->len = 0;
@@ -231,7 +231,7 @@ int dmq_send_message(dmq_peer_t *peer, str *body, dmq_node_t *node,
 	str_hdr.len = 34 + content_type->len + (CRLF_LEN * 2);
 	str_hdr.len = 34 + content_type->len + (CRLF_LEN * 2);
 	str_hdr.s = pkg_malloc(str_hdr.len);
 	str_hdr.s = pkg_malloc(str_hdr.len);
 	if(str_hdr.s == NULL) {
 	if(str_hdr.s == NULL) {
-		LM_ERR("no more pkg\n");
+		PKG_MEM_ERROR;
 		return -1;
 		return -1;
 	}
 	}
 	len += sprintf(str_hdr.s, "Max-Forwards: %d" CRLF "Content-Type: %.*s" CRLF,
 	len += sprintf(str_hdr.s, "Max-Forwards: %d" CRLF "Content-Type: %.*s" CRLF,
@@ -240,7 +240,7 @@ int dmq_send_message(dmq_peer_t *peer, str *body, dmq_node_t *node,
 
 
 	cb_param = shm_malloc(sizeof(*cb_param));
 	cb_param = shm_malloc(sizeof(*cb_param));
 	if(cb_param == NULL) {
 	if(cb_param == NULL) {
-		LM_ERR("no more shm for building callback parameter\n");
+		SHM_MEM_ERROR;
 		goto error;
 		goto error;
 	}
 	}
 	memset(cb_param, 0, sizeof(*cb_param));
 	memset(cb_param, 0, sizeof(*cb_param));

+ 4 - 4
src/modules/dmq/dmqnode.c

@@ -69,7 +69,7 @@ dmq_node_list_t *init_dmq_node_list()
 	dmq_node_list_t *node_list;
 	dmq_node_list_t *node_list;
 	node_list = shm_malloc(sizeof(dmq_node_list_t));
 	node_list = shm_malloc(sizeof(dmq_node_list_t));
 	if(node_list == NULL) {
 	if(node_list == NULL) {
-		LM_ERR("no more shm\n");
+		SHM_MEM_ERROR;
 		return NULL;
 		return NULL;
 	}
 	}
 	memset(node_list, 0, sizeof(dmq_node_list_t));
 	memset(node_list, 0, sizeof(dmq_node_list_t));
@@ -164,7 +164,7 @@ dmq_node_t *build_dmq_node(str *uri, int shm)
 	if(shm) {
 	if(shm) {
 		ret = shm_malloc(sizeof(dmq_node_t));
 		ret = shm_malloc(sizeof(dmq_node_t));
 		if(ret == NULL) {
 		if(ret == NULL) {
-			LM_ERR("no more shm\n");
+			SHM_MEM_ERROR;
 			goto error;
 			goto error;
 		}
 		}
 		memset(ret, 0, sizeof(dmq_node_t));
 		memset(ret, 0, sizeof(dmq_node_t));
@@ -174,7 +174,7 @@ dmq_node_t *build_dmq_node(str *uri, int shm)
 	} else {
 	} else {
 		ret = pkg_malloc(sizeof(dmq_node_t));
 		ret = pkg_malloc(sizeof(dmq_node_t));
 		if(ret == NULL) {
 		if(ret == NULL) {
-			LM_ERR("no more pkg\n");
+			PKG_MEM_ERROR;
 			goto error;
 			goto error;
 		}
 		}
 		memset(ret, 0, sizeof(dmq_node_t));
 		memset(ret, 0, sizeof(dmq_node_t));
@@ -288,7 +288,7 @@ dmq_node_t *shm_dup_node(dmq_node_t *node)
 
 
 	newnode = shm_malloc(sizeof(dmq_node_t));
 	newnode = shm_malloc(sizeof(dmq_node_t));
 	if(newnode == NULL) {
 	if(newnode == NULL) {
-		LM_ERR("no more shm\n");
+		SHM_MEM_ERROR;
 		return NULL;
 		return NULL;
 	}
 	}
 	memcpy(newnode, node, sizeof(dmq_node_t));
 	memcpy(newnode, node, sizeof(dmq_node_t));

+ 1 - 1
src/modules/dmq/message.c

@@ -51,7 +51,7 @@ int set_reply_body(struct sip_msg *msg, str *body, str *content_type)
 	buf = pkg_malloc(sizeof(char) * (len));
 	buf = pkg_malloc(sizeof(char) * (len));
 
 
 	if(buf == 0) {
 	if(buf == 0) {
-		LM_ERR("out of pkg memory\n");
+		PKG_MEM_ERROR;
 		return -1;
 		return -1;
 	}
 	}
 	memcpy(buf, "Content-Type: ", sizeof("Content-Type: ") - 1);
 	memcpy(buf, "Content-Type: ", sizeof("Content-Type: ") - 1);

+ 2 - 2
src/modules/dmq/notification_peer.c

@@ -524,7 +524,7 @@ str *build_notification_body()
 	str *body;
 	str *body;
 	body = pkg_malloc(sizeof(str));
 	body = pkg_malloc(sizeof(str));
 	if(body == NULL) {
 	if(body == NULL) {
-		LM_ERR("no more pkg\n");
+		PKG_MEM_ERROR;
 		return NULL;
 		return NULL;
 	}
 	}
 	memset(body, 0, sizeof(str));
 	memset(body, 0, sizeof(str));
@@ -532,7 +532,7 @@ str *build_notification_body()
 	body->len = NBODY_LEN;
 	body->len = NBODY_LEN;
 	body->s = pkg_malloc(body->len);
 	body->s = pkg_malloc(body->len);
 	if(body->s == NULL) {
 	if(body->s == NULL) {
-		LM_ERR("no more pkg\n");
+		PKG_MEM_ERROR;
 		pkg_free(body);
 		pkg_free(body);
 		return NULL;
 		return NULL;
 	}
 	}

+ 2 - 2
src/modules/dmq/peer.c

@@ -32,7 +32,7 @@ dmq_peer_list_t *init_peer_list()
 	dmq_peer_list_t *dmq_peer_list;
 	dmq_peer_list_t *dmq_peer_list;
 	dmq_peer_list = shm_malloc(sizeof(dmq_peer_list_t));
 	dmq_peer_list = shm_malloc(sizeof(dmq_peer_list_t));
 	if(dmq_peer_list == NULL) {
 	if(dmq_peer_list == NULL) {
-		LM_ERR("no more shm\n");
+		SHM_MEM_ERROR;
 		return NULL;
 		return NULL;
 	}
 	}
 	memset(dmq_peer_list, 0, sizeof(dmq_peer_list_t));
 	memset(dmq_peer_list, 0, sizeof(dmq_peer_list_t));
@@ -67,7 +67,7 @@ dmq_peer_t *add_peer(dmq_peer_list_t *peer_list, dmq_peer_t *peer)
 	new_peer = shm_malloc(
 	new_peer = shm_malloc(
 			sizeof(dmq_peer_t) + peer->peer_id.len + peer->description.len);
 			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");
+		SHM_MEM_ERROR;
 		return NULL;
 		return NULL;
 	}
 	}
 	*new_peer = *peer;
 	*new_peer = *peer;

+ 2 - 2
src/modules/dmq/worker.c

@@ -221,7 +221,7 @@ job_queue_t *alloc_job_queue()
 
 
 	queue = shm_malloc(sizeof(job_queue_t));
 	queue = shm_malloc(sizeof(job_queue_t));
 	if(queue == NULL) {
 	if(queue == NULL) {
-		LM_ERR("no more shm\n");
+		SHM_MEM_ERROR;
 		return NULL;
 		return NULL;
 	}
 	}
 	memset(queue, 0, sizeof(job_queue_t));
 	memset(queue, 0, sizeof(job_queue_t));
@@ -257,7 +257,7 @@ int job_queue_push(job_queue_t *queue, dmq_job_t *job)
 
 
 	newjob = shm_malloc(sizeof(dmq_job_t));
 	newjob = shm_malloc(sizeof(dmq_job_t));
 	if(newjob == NULL) {
 	if(newjob == NULL) {
-		LM_ERR("no more shm\n");
+		SHM_MEM_ERROR;
 		return -1;
 		return -1;
 	}
 	}