diff src/protocols/novell/nmuser.c @ 9360:d77537e8bfe5

[gaim-migrate @ 10168] " This patch fixes contact list sync problem, fixes a memory leak, and includes some code cleanup." --Mike Stoddard of Novell committer: Tailor Script <tailor@pidgin.im>
author Luke Schierer <lschiere@pidgin.im>
date Wed, 23 Jun 2004 17:27:56 +0000
parents 54fb1f466953
children 519dc2186438
line wrap: on
line diff
--- a/src/protocols/novell/nmuser.c	Wed Jun 23 16:58:22 2004 +0000
+++ b/src/protocols/novell/nmuser.c	Wed Jun 23 17:27:56 2004 +0000
@@ -57,7 +57,7 @@
 
 	user = g_new0(NMUser, 1);
 
-	user->conn = g_new0(NMConn, 1);
+
 
 	user->contacts =
 		g_hash_table_new_full(g_str_hash, nm_utf8_str_equal,
@@ -71,6 +71,7 @@
 												   g_free, g_free);
 
 	user->name = g_strdup(name);
+	user->conn = nm_create_conn(server_addr, port);
 	user->conn->addr = g_strdup(server_addr);
 	user->conn->port = port;
 	user->evt_callback = event_callback;
@@ -83,10 +84,7 @@
 void
 nm_deinitialize_user(NMUser * user)
 {
-	NMConn *conn = user->conn;
-
-	g_free(conn->addr);
-	g_free(conn);
+	nm_release_conn(user->conn);
 
 	if (user->contacts) {
 		g_hash_table_destroy(user->contacts);
@@ -120,7 +118,6 @@
 {
 	NMERR_T rc = NM_OK;
 	NMField *fields = NULL;
-	NMRequest *req = NULL;
 
 	if (user == NULL || pwd == NULL || user_agent == NULL) {
 		return NMERR_BAD_PARM;
@@ -143,21 +140,9 @@
 	}
 
 	/* Send the login */
-	rc = nm_send_request(user->conn, "login", fields, &req);
-	if (rc == NM_OK && req != NULL) {
-		nm_request_set_callback(req, callback);
-		nm_request_set_user_define(req, data);
-		nm_conn_add_request_item(user->conn, req);
-	}
+	rc = nm_send_request(user->conn, "login", fields, callback, data, NULL);
 
-	if (fields) {
-		nm_free_fields(&fields);
-	}
-
-	if (req) {
-		nm_release_request(req);
-	}
-
+	nm_free_fields(&fields);
 	return rc;
 }
 
@@ -167,7 +152,6 @@
 {
 	NMERR_T rc = NM_OK;
 	NMField *fields = NULL;
-	NMRequest *req = NULL;
 
 	if (user == NULL)
 		return NMERR_BAD_PARM;
@@ -189,21 +173,9 @@
 									  NMFIELD_TYPE_UTF8);
 	}
 
-	rc = nm_send_request(user->conn, "setstatus", fields, &req);
-	if (rc == NM_OK && req) {
-		nm_request_set_callback(req, callback);
-		nm_request_set_user_define(req, data);
-		nm_conn_add_request_item(user->conn, req);
-	}
+	rc = nm_send_request(user->conn, "setstatus", fields, callback, data, NULL);
 
-	if (fields) {
-		nm_free_fields(&fields);
-	}
-
-	if (req) {
-		nm_release_request(req);
-	}
-
+	nm_free_fields(&fields);
 	return rc;
 }
 
@@ -213,7 +185,6 @@
 {
 	NMERR_T rc = NM_OK;
 	NMField *fields = NULL;
-	NMRequest *req = NULL;
 	GSList *node;
 
 	if (user == NULL || names == NULL)
@@ -225,19 +196,9 @@
 									  g_strdup(node->data), NMFIELD_TYPE_UTF8);
 	}
 
-	rc = nm_send_request(user->conn, "getdetails", fields, &req);
-	if (rc == NM_OK) {
-		nm_request_set_callback(req, callback);
-		nm_request_set_user_define(req, data);
-		nm_conn_add_request_item(user->conn, req);
-	}
+	rc = nm_send_request(user->conn, "getdetails", fields, callback, data, NULL);
 
-	if (fields)
-		nm_free_fields(&fields);
-
-	if (req)
-		nm_release_request(req);
-
+	nm_free_fields(&fields);
 	return rc;
 }
 
@@ -247,7 +208,6 @@
 {
 	NMERR_T rc = NM_OK;
 	NMField *fields = NULL;
-	NMRequest *req = NULL;
 
 	if (user == NULL || name == NULL)
 		return NMERR_BAD_PARM;
@@ -259,7 +219,6 @@
 	} else {
 
 		const char *dn = nm_lookup_dn(user, name);
-
 		if (dn) {
 			fields = nm_field_add_pointer(fields, NM_A_SZ_DN, 0, NMFIELD_METHOD_VALID, 0,
 										  g_strdup(name), NMFIELD_TYPE_DN);
@@ -271,25 +230,15 @@
 
 	}
 
-	rc = nm_send_request(user->conn, "getdetails", fields, &req);
-	if (rc == NM_OK) {
-		nm_request_set_callback(req, callback);
-		nm_request_set_user_define(req, data);
-		nm_conn_add_request_item(user->conn, req);
-	}
+	rc = nm_send_request(user->conn, "getdetails", fields, callback, data, NULL);
 
-	if (fields)
-		nm_free_fields(&fields);
-
-	if (req)
-		nm_release_request(req);
-
+	nm_free_fields(&fields);
 	return rc;
 }
 
 NMERR_T
 nm_send_create_conference(NMUser * user, NMConference * conference,
-						  nm_response_cb callback, gpointer message)
+						  nm_response_cb callback, gpointer data)
 {
 	NMERR_T rc = NM_OK;
 	NMField *fields = NULL;
@@ -333,29 +282,23 @@
 									  NMFIELD_TYPE_DN);
 	}
 
-	rc = nm_send_request(user->conn, "createconf", fields, &req);
+	rc = nm_send_request(user->conn, "createconf", fields, callback, data, &req);
 	if (rc == NM_OK && req) {
-		nm_request_set_callback(req, callback);
 		nm_conference_add_ref(conference);
 		nm_request_set_data(req, conference);
-		nm_request_set_user_define(req, message);
-		nm_conn_add_request_item(user->conn, req);
 	}
 
 	if (req)
 		nm_release_request(req);
 
-	if (fields)
-		nm_free_fields(&fields);
-
+	nm_free_fields(&fields);
 	return rc;
 }
 
 NMERR_T
 nm_send_leave_conference(NMUser * user, NMConference * conference,
-						 nm_response_cb callback, gpointer message)
+						 nm_response_cb callback, gpointer data)
 {
-
 	NMERR_T rc = NM_OK;
 	NMField *fields = NULL;
 	NMField *tmp = NULL;
@@ -375,20 +318,14 @@
 	tmp = NULL;
 
 	/* Send the request to the server */
-	rc = nm_send_request(user->conn, "leaveconf", fields, &req);
-	if (rc == NM_OK && req) {
-		nm_request_set_callback(req, callback);
+	rc = nm_send_request(user->conn, "leaveconf", fields, callback, data, &req);
+	if (rc == NM_OK && req)
 		nm_request_set_data(req, conference);
-		nm_request_set_user_define(req, message);
-		nm_conn_add_request_item(user->conn, req);
-	}
 
 	if (req)
 		nm_release_request(req);
 
-	if (fields)
-		nm_free_fields(&fields);
-
+	nm_free_fields(&fields);
 	return rc;
 }
 
@@ -414,24 +351,14 @@
 	tmp = NULL;
 
 	/* Send the request to the server */
-	rc = nm_send_request(user->conn, "joinconf", fields, &req);
-
-	/* Set up the request object so that we know what to do
-	 * when we get a response
-	 */
-	if (rc == NM_OK && req) {
-		nm_request_set_callback(req, callback);
+	rc = nm_send_request(user->conn, "joinconf", fields, callback, data, &req);
+	if (rc == NM_OK && req)
 		nm_request_set_data(req, conference);
-		nm_request_set_user_define(req, data);
-		nm_conn_add_request_item(user->conn, req);
-	}
 
 	if (req)
 		nm_release_request(req);
 
-	if (fields)
-		nm_free_fields(&fields);
-
+	nm_free_fields(&fields);
 	return rc;
 }
 
@@ -458,24 +385,14 @@
 	tmp = NULL;
 
 	/* Send the request to the server */
-	rc = nm_send_request(user->conn, "rejectconf", fields, &req);
-
-	/* Set up the request object so that we know what to do
-	 * when we get a response
-	 */
-	if (rc == NM_OK && req) {
-		nm_request_set_callback(req, callback);
+	rc = nm_send_request(user->conn, "rejectconf", fields, callback, data, &req);
+	if (rc == NM_OK && req)
 		nm_request_set_data(req, conference);
-		nm_request_set_user_define(req, data);
-		nm_conn_add_request_item(user->conn, req);
-	}
 
 	if (req)
 		nm_release_request(req);
 
-	if (fields)
-		nm_free_fields(&fields);
-
+	nm_free_fields(&fields);
 	return rc;
 }
 
@@ -512,24 +429,14 @@
 									  g_strdup(message), NMFIELD_TYPE_UTF8);
 
 	/* Send the request to the server */
-	rc = nm_send_request(user->conn, "sendinvite", fields, &req);
-
-	/* Set up the request object so that we know what to do
-	 * when we get a response
-	 */
-	if (rc == NM_OK && req) {
-		nm_request_set_callback(req, callback);
+	rc = nm_send_request(user->conn, "sendinvite", fields, callback, data, &req);
+	if (rc == NM_OK && req)
 		nm_request_set_data(req, conference);
-		nm_request_set_user_define(req, data);
-		nm_conn_add_request_item(user->conn, req);
-	}
 
 	if (req)
 		nm_release_request(req);
 
-	if (fields)
-		nm_free_fields(&fields);
-
+	nm_free_fields(&fields);
 	return rc;
 }
 
@@ -539,7 +446,6 @@
 	NMERR_T rc = NM_OK;
 	char *text, *rtfized;
 	NMField *fields = NULL, *tmp = NULL;
-	NMRequest *req = NULL;
 	NMConference *conf;
 	NMUserRecord *user_record;
 	int count, i;
@@ -600,21 +506,10 @@
 		}
 
 		/* Send the request */
-		rc = nm_send_request(user->conn, "sendmessage", fields, &req);
-		if (rc == NM_OK && req) {
-			nm_request_set_callback(req, callback);
-			nm_conn_add_request_item(user->conn, req);
-		}
+		rc = nm_send_request(user->conn, "sendmessage", fields, callback, NULL, NULL);
 	}
 
-	if (fields) {
-		nm_free_fields(&fields);
-	}
-
-	if (req) {
-		nm_release_request(req);
-	}
-
+	nm_free_fields(&fields);
 	return rc;
 }
 
@@ -625,7 +520,6 @@
 	NMERR_T rc = NM_OK;
 	char *str = NULL;
 	NMField *fields = NULL, *tmp = NULL;
-	NMRequest *req = NULL;
 
 	if (user == NULL || conf == NULL) {
 		return NMERR_BAD_PARM;
@@ -652,19 +546,10 @@
 								 tmp, NMFIELD_TYPE_ARRAY);
 		tmp = NULL;
 
-		rc = nm_send_request(user->conn, "sendtyping", fields, &req);
-		if (rc == NM_OK && req) {
-			nm_request_set_callback(req, callback);
-			nm_conn_add_request_item(user->conn, req);
-		}
+		rc = nm_send_request(user->conn, "sendtyping", fields, callback, NULL, NULL);
 	}
 
-	if (req)
-		nm_release_request(req);
-
-	if (fields)
-		nm_free_fields(&fields);
-
+	nm_free_fields(&fields);
 	return rc;
 }
 
@@ -712,20 +597,14 @@
 									  g_strdup(display_name), NMFIELD_TYPE_UTF8);
 
 	/* Dispatch the request */
-	rc = nm_send_request(user->conn, "createcontact", fields, &req);
-	if (rc == NM_OK && req) {
-		nm_request_set_callback(req, callback);
+	rc = nm_send_request(user->conn, "createcontact", fields, callback, data, &req);
+	if (rc == NM_OK && req)
 		nm_request_set_data(req, contact);
-		nm_request_set_user_define(req, data);
-		nm_conn_add_request_item(user->conn, req);
-	}
-
-	if (fields)
-		nm_free_fields(&fields);
 
 	if (req)
 		nm_release_request(req);
 
+	nm_free_fields(&fields);
 	return rc;
 }
 
@@ -753,20 +632,14 @@
 								  NMFIELD_TYPE_UTF8);
 
 	/* Dispatch the request */
-	rc = nm_send_request(user->conn, "deletecontact", fields, &req);
-	if (rc == NM_OK && req) {
-		nm_request_set_callback(req, callback);
+	rc = nm_send_request(user->conn, "deletecontact", fields, callback, data, &req);
+	if (rc == NM_OK && req)
 		nm_request_set_data(req, contact);
-		nm_request_set_user_define(req, data);
-		nm_conn_add_request_item(user->conn, req);
-	}
-
-	if (fields)
-		nm_free_fields(&fields);
 
 	if (req)
 		nm_release_request(req);
 
+	nm_free_fields(&fields);
 	return rc;
 }
 
@@ -797,20 +670,14 @@
 							 g_strdup("-1"), NMFIELD_TYPE_UTF8);
 
 	/* Dispatch the request */
-	rc = nm_send_request(user->conn, "createfolder", fields, &req);
-	if (rc == NM_OK && req) {
-		nm_request_set_callback(req, callback);
+	rc = nm_send_request(user->conn, "createfolder", fields, callback, data, &req);
+	if (rc == NM_OK && req)
 		nm_request_set_data(req, g_strdup(name));
-		nm_request_set_user_define(req, data);
-		nm_conn_add_request_item(user->conn, req);
-	}
-
-	if (fields)
-		nm_free_fields(&fields);
 
 	if (req)
 		nm_release_request(req);
 
+	nm_free_fields(&fields);
 	return rc;
 }
 
@@ -832,20 +699,14 @@
 								  NMFIELD_TYPE_UTF8);
 
 	/* Dispatch the request */
-	rc = nm_send_request(user->conn, "deletecontact", fields, &req);
-	if (rc == NM_OK && req) {
-		nm_request_set_callback(req, callback);
+	rc = nm_send_request(user->conn, "deletecontact", fields, callback, data, &req);
+	if (rc == NM_OK && req)
 		nm_request_set_data(req, folder);
-		nm_request_set_user_define(req, data);
-		nm_conn_add_request_item(user->conn, req);
-	}
-
-	if (fields)
-		nm_free_fields(&fields);
 
 	if (req)
 		nm_release_request(req);
 
+	nm_free_fields(&fields);
 	return rc;
 }
 
@@ -870,20 +731,14 @@
 								  g_strdup(dn), NMFIELD_TYPE_UTF8);
 
 	/* Dispatch the request */
-	rc = nm_send_request(user->conn, "getstatus", fields, &req);
-	if (rc == NM_OK && req) {
-		nm_request_set_callback(req, callback);
+	rc = nm_send_request(user->conn, "getstatus", fields, callback, data, &req);
+	if (rc == NM_OK && req)
 		nm_request_set_data(req, user_record);
-		nm_request_set_user_define(req, data);
-		nm_conn_add_request_item(user->conn, req);
-	}
-
-	if (fields)
-		nm_free_fields(&fields);
 
 	if (req)
 		nm_release_request(req);
 
+	nm_free_fields(&fields);
 	return rc;
 }
 
@@ -925,16 +780,15 @@
 									 0, fields, NMFIELD_TYPE_ARRAY);
 			fields = NULL;
 
-			rc = nm_send_request(user->conn, "updateitem", list, &req);
-			if (rc == NM_OK && req) {
-				nm_request_set_callback(req, callback);
+			rc = nm_send_request(user->conn, "updateitem", list, callback, data, &req);
+			if (rc == NM_OK && req)
 				nm_request_set_data(req, contact);
-				nm_request_set_user_define(req, data);
-				nm_conn_add_request_item(user->conn, req);
-			}
 		}
 	}
 
+	if (req)
+		nm_release_request(req);
+
 	if (list)
 		nm_free_fields(&list);
 
@@ -979,16 +833,15 @@
 										0, fields, NMFIELD_TYPE_ARRAY);
 			fields = NULL;
 
-			rc = nm_send_request(user->conn, "updateitem", list, &req);
-			if (rc == NM_OK && req) {
-				nm_request_set_callback(req, callback);
+			rc = nm_send_request(user->conn, "updateitem", list, callback, data, &req);
+			if (rc == NM_OK && req)
 				nm_request_set_data(req, folder);
-				nm_request_set_user_define(req, data);
-				nm_conn_add_request_item(user->conn, req);
-			}
 		}
 	}
 
+	if (req)
+		nm_release_request(req);
+
 	if (list)
 		nm_free_fields(&list);
 
@@ -1029,15 +882,14 @@
 									NMFIELD_TYPE_UTF8);
 
 		/* Dispatch the request */
-		rc = nm_send_request(user->conn, "movecontact", list, &req);
-		if (rc == NM_OK && req) {
-			nm_request_set_callback(req, callback);
+		rc = nm_send_request(user->conn, "movecontact", list, callback, data, &req);
+		if (rc == NM_OK && req)
 			nm_request_set_data(req, contact);
-			nm_request_set_user_define(req, data);
-			nm_conn_add_request_item(user->conn, req);
+
+	}
 
-		}
-	}
+	if (req)
+		nm_release_request(req);
 
 	if (list)
 		nm_free_fields(&list);
@@ -1052,7 +904,6 @@
 {
 	NMERR_T rc = NM_OK;
 	NMField *fields = NULL;
-	NMRequest *req = NULL;
 	const char *tag;
 
 	if (user == NULL || who == NULL)
@@ -1066,16 +917,9 @@
     fields = nm_field_add_pointer(fields, tag, 0, NMFIELD_METHOD_ADD, 0,
 								  g_strdup(who), NMFIELD_TYPE_UTF8);
 
-	rc = nm_send_request(user->conn, "createblock", fields, &req);
-	if (rc == NM_OK && req) {
-		nm_request_set_callback(req, callback);
-		nm_request_set_user_define(req, data);
-		nm_conn_add_request_item(user->conn, req);
-	}
+	rc = nm_send_request(user->conn, "createblock", fields, callback, data, NULL);
 
-	if (fields)
-		nm_free_fields(&fields);
-
+	nm_free_fields(&fields);
 	return rc;
 }
 
@@ -1085,7 +929,6 @@
 {
 	NMERR_T rc = NM_OK;
 	NMField *fields = NULL;
-	NMRequest *req = NULL;
 	const char *tag;
 	GSList **list_ptr, *node;
 
@@ -1109,16 +952,9 @@
     fields = nm_field_add_pointer(fields, tag, 0, NMFIELD_METHOD_DELETE, 0,
 								  g_strdup(dn), NMFIELD_TYPE_DN);
 
-	rc = nm_send_request(user->conn, "updateblocks", fields, &req);
-	if (rc == NM_OK && req) {
-		nm_request_set_callback(req, callback);
-		nm_request_set_user_define(req, data);
-		nm_conn_add_request_item(user->conn, req);
-	}
+	rc = nm_send_request(user->conn, "updateblocks", fields, callback, data, NULL);
 
-	if (fields)
-		nm_free_fields(&fields);
-
+	nm_free_fields(&fields);
 	return rc;
 
 }
@@ -1129,7 +965,6 @@
 {
 	NMERR_T rc = NM_OK;
 	NMField *fields = NULL;
-	NMRequest *req = NULL;
 
 	if (user == NULL)
 		return NMERR_BAD_PARM;
@@ -1138,16 +973,9 @@
 								  (default_deny ? g_strdup("1") : g_strdup("0")),
 								  NMFIELD_TYPE_UTF8);
 
-	rc = nm_send_request(user->conn, "updateblocks", fields, &req);
-	if (rc == NM_OK && req) {
-		nm_request_set_callback(req, callback);
-		nm_request_set_user_define(req, data);
-		nm_conn_add_request_item(user->conn, req);
-	}
+	rc = nm_send_request(user->conn, "updateblocks", fields, callback, data, NULL);
 
-	if (fields)
-		nm_free_fields(&fields);
-
+	nm_free_fields(&fields);
 	return rc;
 }
 
@@ -1155,17 +983,11 @@
 nm_send_keepalive(NMUser *user, nm_response_cb callback, gpointer data)
 {
 	NMERR_T rc = NM_OK;
-	NMRequest *req = NULL;
 
 	if (user == NULL)
 		return NMERR_BAD_PARM;
 
-	rc = nm_send_request(user->conn, "ping", NULL, &req);
-	if (rc == NM_OK && req) {
-		nm_request_set_callback(req, callback);
-		nm_request_set_user_define(req, data);
-		nm_conn_add_request_item(user->conn, req);
-	}
+	rc = nm_send_request(user->conn, "ping", NULL, callback, data, NULL);
 
 	return rc;
 }