diff --git a/dongle_network.c b/dongle_network.c
index d0a183d927626ef7fc625e7c92e1af6cd5f996ce..b2568bd0113cd61d5781de01d1737dfec1a571be 100644
--- a/dongle_network.c
+++ b/dongle_network.c
@@ -26,7 +26,6 @@ int get_signal_strength(struct ubus_context *ctx, struct ubus_object *obj,
 	ip_addr = (char *)blobmsg_data(tb[IP]);
 
 	response = mobile_get_rssi(ip_addr);
-
 	if (!response)
 		goto fail_unknown;
 
@@ -51,8 +50,8 @@ int connect_network(struct ubus_context *ctx, struct ubus_object *obj,
 		goto fail_argument;
 	}
 	ip_addr = (char *)blobmsg_data(tb[IP]);
-	response = mobile_connect_network(ip_addr);
 
+	response = mobile_connect_network(ip_addr);
 	if (!response)
 		goto fail_unknown;
 
@@ -78,8 +77,8 @@ int disconnect(struct ubus_context *ctx, struct ubus_object *obj,
 		goto fail_argument;
 	}
 	ip_addr = (char *)blobmsg_data(tb[IP]);
-	response = mobile_disconnect_network(ip_addr);
 
+	response = mobile_disconnect_network(ip_addr);
 	if (!response)
 		goto fail_unknown;
 
diff --git a/libmobile.c b/libmobile.c
index 6d530dcef00454af9a38be01b4997cef0f9cc598..aac4fc0a52dc7557199f27892c78c16cc0b59663 100644
--- a/libmobile.c
+++ b/libmobile.c
@@ -299,6 +299,7 @@ static struct json_object *prepare_request(char *ip_addr, char *query, int optio
 	else if (option == GET) {
 		query = get_query_wrapper(ip_addr, query);
 		rv = perform_get_request(ip_addr, curl, query, &str);
+		free(query);
 	} else
 		goto fail_request;
 
@@ -308,7 +309,6 @@ static struct json_object *prepare_request(char *ip_addr, char *query, int optio
 	}
 	if (!str.ptr)
 		goto fail_ptr;
-
 	//debug_print("%s\n", str.ptr);
 	parsed_response = json_tokener_parse(str.ptr);
 	if (!parsed_response) {
@@ -316,7 +316,6 @@ static struct json_object *prepare_request(char *ip_addr, char *query, int optio
 		goto fail_json;
 	}
 
-	free(query);
 	curl_cleaner(curl);
 	free(str.ptr);
 	return parsed_response;
@@ -380,12 +379,12 @@ finished:
 
 struct json_object *mobile_connect_network(char *ip_addr)
 {
-	return prepare_request(ip_addr, "isTest=false&goformId=CONNECT_NETWORK", POST);
+	return prepare_request(ip_addr, "isTest=false&notCallback=true&goformId=CONNECT_NETWORK", POST);
 }
 
 struct json_object *mobile_disconnect_network(char *ip_addr)
 {
-	return prepare_request(ip_addr, "isTest=false&goformId=DISCONNECT_NETWORK", POST);
+	return prepare_request(ip_addr, "isTest=false&notCallback=true&goformId=DISCONNECT_NETWORK", POST);
 }
 
 struct json_object *mobile_delete_apn(char *ip_addr, char *name)
@@ -475,7 +474,7 @@ struct json_object *mobile_get_pin_status(char *ip_addr)
 
 struct json_object *mobile_get_rssi(char *ip_addr)
 {
-	return prepare_request(ip_addr, "rssi", GET);
+	return prepare_request(ip_addr, "lte_rssi", GET);
 }
 
 struct json_object *mobile_get_modem_state(char *ip_addr)