Migrate papi.c, ptools.c, pbusinessaccount.c to PMEM_SUBSYS_API

This commit is contained in:
Levi Neely 2026-03-08 19:11:04 +01:00
parent 7d10cf8d6c
commit bc36713350
3 changed files with 55 additions and 55 deletions

View File

@ -323,7 +323,7 @@ static binresult *do_parse_result(unsigned char **restrict indata,
alloc *= 2; alloc *= 2;
tmp = (binresult **)realloc(arr, sizeof(binresult *) * alloc); tmp = (binresult **)realloc(arr, sizeof(binresult *) * alloc);
if (!tmp) { if (!tmp) {
free(arr); pmem_free(PMEM_SUBSYS_API, arr);
return NULL; return NULL;
} }
arr = tmp; arr = tmp;
@ -335,7 +335,7 @@ static binresult *do_parse_result(unsigned char **restrict indata,
ret->array = (struct _binresult **)*odata; ret->array = (struct _binresult **)*odata;
*odata += sizeof(struct _binresult *) * cnt; *odata += sizeof(struct _binresult *) * cnt;
memcpy(ret->array, arr, sizeof(struct _binresult *) * cnt); memcpy(ret->array, arr, sizeof(struct _binresult *) * cnt);
free(arr); pmem_free(PMEM_SUBSYS_API, arr);
return ret; return ret;
} else if (type == RPARAM_HASH) { } else if (type == RPARAM_HASH) {
struct _hashpair *arr; struct _hashpair *arr;
@ -357,7 +357,7 @@ static binresult *do_parse_result(unsigned char **restrict indata,
tmp = (struct _hashpair *)realloc(arr, sizeof(struct _hashpair) * tmp = (struct _hashpair *)realloc(arr, sizeof(struct _hashpair) *
alloc); alloc);
if (!tmp) { if (!tmp) {
free(arr); pmem_free(PMEM_SUBSYS_API, arr);
return NULL; return NULL;
} }
arr = tmp; arr = tmp;
@ -374,7 +374,7 @@ static binresult *do_parse_result(unsigned char **restrict indata,
ret->hash = (struct _hashpair *)*odata; ret->hash = (struct _hashpair *)*odata;
*odata += sizeof(struct _hashpair) * cnt; *odata += sizeof(struct _hashpair) * cnt;
memcpy(ret->hash, arr, sizeof(struct _hashpair) * cnt); memcpy(ret->hash, arr, sizeof(struct _hashpair) * cnt);
free(arr); pmem_free(PMEM_SUBSYS_API, arr);
return ret; return ret;
} else if (type == RPARAM_DATA) { } else if (type == RPARAM_DATA) {
ret = (binresult *)(*odata); ret = (binresult *)(*odata);
@ -429,19 +429,19 @@ binresult *papi_result(psock_t *sock) {
return NULL; return NULL;
} }
data = (unsigned char *)malloc(ressize); data = (unsigned char *)pmem_malloc(PMEM_SUBSYS_API, ressize);
if (!data) { if (!data) {
pdbg_logf(D_ERROR, "Failed to allocate %u bytes for API response", ressize); pdbg_logf(D_ERROR, "Failed to allocate %u bytes for API response", ressize);
return NULL; return NULL;
} }
if (pdbg_unlikely(psock_readall(sock, data, ressize) != ressize)) { if (pdbg_unlikely(psock_readall(sock, data, ressize) != ressize)) {
free(data); pmem_free(PMEM_SUBSYS_API, data);
return NULL; return NULL;
} }
res = parse_result(data, ressize); res = parse_result(data, ressize);
free(data); pmem_free(PMEM_SUBSYS_API, data);
return res; return res;
} }
@ -458,18 +458,18 @@ binresult *papi_result_thread(psock_t *sock) {
ressize, MAX_API_RESPONSE_SIZE); ressize, MAX_API_RESPONSE_SIZE);
return NULL; return NULL;
} }
data = (unsigned char *)malloc(ressize); data = (unsigned char *)pmem_malloc(PMEM_SUBSYS_API, ressize);
if (!data) { if (!data) {
pdbg_logf(D_ERROR, "Failed to allocate %u bytes for API response", ressize); pdbg_logf(D_ERROR, "Failed to allocate %u bytes for API response", ressize);
return NULL; return NULL;
} }
if (pdbg_unlikely(psock_readall_thread(sock, data, ressize) != if (pdbg_unlikely(psock_readall_thread(sock, data, ressize) !=
ressize)) { ressize)) {
free(data); pmem_free(PMEM_SUBSYS_API, data);
return NULL; return NULL;
} }
res = parse_result(data, ressize); res = parse_result(data, ressize);
free(data); pmem_free(PMEM_SUBSYS_API, data);
return res; return res;
} }
@ -482,7 +482,7 @@ void papi_rdr_alloc(async_result_reader *reader) {
void papi_rdr_free(async_result_reader *reader) { void papi_rdr_free(async_result_reader *reader) {
if (reader->state == 1) if (reader->state == 1)
free(reader->data); pmem_free(PMEM_SUBSYS_API, reader->data);
} }
int papi_result_async(psock_t *sock, async_result_reader *reader) { int papi_result_async(psock_t *sock, async_result_reader *reader) {
@ -494,7 +494,7 @@ again:
return ASYNC_RES_NEEDMORE; return ASYNC_RES_NEEDMORE;
else if (rd == PSYNC_SOCKET_ERROR || rd == 0) { else if (rd == PSYNC_SOCKET_ERROR || rd == 0) {
if (reader->state == 1) if (reader->state == 1)
free(reader->data); pmem_free(PMEM_SUBSYS_API, reader->data);
papi_rdr_alloc(reader); papi_rdr_alloc(reader);
reader->result = NULL; reader->result = NULL;
return ASYNC_RES_READY; return ASYNC_RES_READY;
@ -512,7 +512,7 @@ again:
papi_rdr_alloc(reader); papi_rdr_alloc(reader);
return ASYNC_RES_READY; return ASYNC_RES_READY;
} }
reader->data = (unsigned char *)malloc(reader->respsize); reader->data = (unsigned char *)pmem_malloc(PMEM_SUBSYS_API, reader->respsize);
if (!reader->data) { if (!reader->data) {
pdbg_logf(D_ERROR, "Failed to allocate %u bytes for API response", pdbg_logf(D_ERROR, "Failed to allocate %u bytes for API response",
reader->respsize); reader->respsize);
@ -524,7 +524,7 @@ again:
} else { } else {
pdbg_assert(reader->state == 1); pdbg_assert(reader->state == 1);
reader->result = parse_result(reader->data, reader->respsize); reader->result = parse_result(reader->data, reader->respsize);
free(reader->data); pmem_free(PMEM_SUBSYS_API, reader->data);
papi_rdr_alloc(reader); papi_rdr_alloc(reader);
return ASYNC_RES_READY; return ASYNC_RES_READY;
} }
@ -557,7 +557,7 @@ unsigned char *papi_prepare(const char *command, size_t cmdlen,
} }
if (pdbg_unlikely(plen > 0xffff)) if (pdbg_unlikely(plen > 0xffff))
return NULL; return NULL;
sdata = data = (unsigned char *)malloc(plen + 2 + additionalalloc); sdata = data = (unsigned char *)pmem_malloc(PMEM_SUBSYS_API, plen + 2 + additionalalloc);
if (!data) if (!data)
return NULL; return NULL;
memcpy(data, &plen, 2); memcpy(data, &plen, 2);
@ -606,16 +606,16 @@ binresult *papi_send(psock_t *sock, const char *command,
if (readres & 2) { if (readres & 2) {
if (pdbg_unlikely(psock_writeall_thread(sock, sdata, plen) != plen)) { if (pdbg_unlikely(psock_writeall_thread(sock, sdata, plen) != plen)) {
free(sdata); pmem_free(PMEM_SUBSYS_API, sdata);
return NULL; return NULL;
} }
} else { } else {
if (pdbg_unlikely(psock_writeall(sock, sdata, plen) != plen)) { if (pdbg_unlikely(psock_writeall(sock, sdata, plen) != plen)) {
free(sdata); pmem_free(PMEM_SUBSYS_API, sdata);
return NULL; return NULL;
} }
} }
free(sdata); pmem_free(PMEM_SUBSYS_API, sdata);
if (readres & 1) { if (readres & 1) {
return papi_result(sock); return papi_result(sock);
} else { } else {

View File

@ -191,12 +191,12 @@ int do_psync_account_stopshare(psync_shareid_t usershareids[], int nusershareid,
} }
if (ids1) if (ids1)
free(ids1); pmem_free(PMEM_SUBSYS_API, ids1);
if (ids2) if (ids2)
free(ids2); pmem_free(PMEM_SUBSYS_API, ids2);
free(bres); pmem_free(PMEM_SUBSYS_API, bres);
free(t); pmem_free(PMEM_SUBSYS_API, t);
return result; return result;
} }
@ -348,16 +348,16 @@ int do_psync_account_modifyshare(psync_shareid_t usrshrids[], uint32_t uperms[],
} }
if (ids1) if (ids1)
free(ids1); pmem_free(PMEM_SUBSYS_API, ids1);
if (ids2) if (ids2)
free(ids2); pmem_free(PMEM_SUBSYS_API, ids2);
if (perms1) if (perms1)
free(perms1); pmem_free(PMEM_SUBSYS_API, perms1);
if (perms2) if (perms2)
free(perms2); pmem_free(PMEM_SUBSYS_API, perms2);
free(bres); pmem_free(PMEM_SUBSYS_API, bres);
free(t); pmem_free(PMEM_SUBSYS_API, t);
return result; return result;
} }
@ -372,7 +372,7 @@ void get_ba_member_email(uint64_t userid, char **email /*OUT*/,
psql_bind_uint(res, 1, userid); psql_bind_uint(res, 1, userid);
if ((row = psql_fetch(res))) { if ((row = psql_fetch(res))) {
cstr = psync_get_lstring(row[0], length); cstr = psync_get_lstring(row[0], length);
*email = (char *)malloc(*length); *email = (char *)pmem_malloc(PMEM_SUBSYS_API, *length);
memcpy(*email, cstr, *length); memcpy(*email, cstr, *length);
psql_free(res); psql_free(res);
return; return;
@ -399,7 +399,7 @@ void get_ba_member_email(uint64_t userid, char **email /*OUT*/,
users = papi_find_result2(bres, "users", PARAM_ARRAY); users = papi_find_result2(bres, "users", PARAM_ARRAY);
if (!users->length) { if (!users->length) {
free(bres); pmem_free(PMEM_SUBSYS_API, bres);
pdbg_logf(D_WARNING, "Account_users returned empty result!\n"); pdbg_logf(D_WARNING, "Account_users returned empty result!\n");
return; return;
} else { } else {
@ -410,7 +410,7 @@ void get_ba_member_email(uint64_t userid, char **email /*OUT*/,
fname = papi_find_result2(users->array[0], "firstname", PARAM_STR)->str; fname = papi_find_result2(users->array[0], "firstname", PARAM_STR)->str;
lname = papi_find_result2(users->array[0], "lastname", PARAM_STR)->str; lname = papi_find_result2(users->array[0], "lastname", PARAM_STR)->str;
} }
free(bres); pmem_free(PMEM_SUBSYS_API, bres);
if (*length) { if (*length) {
psync_sql_res *q; psync_sql_res *q;
@ -438,7 +438,7 @@ void get_ba_team_name(uint64_t teamid, char **name /*OUT*/,
psql_bind_uint(res, 1, teamid); psql_bind_uint(res, 1, teamid);
if ((row = psql_fetch(res))) { if ((row = psql_fetch(res))) {
cstr = psync_get_lstring(row[0], length); cstr = psync_get_lstring(row[0], length);
*name = (char *)malloc(*length); *name = (char *)pmem_malloc(PMEM_SUBSYS_API, *length);
memcpy(*name, cstr, *length); memcpy(*name, cstr, *length);
psql_free(res); psql_free(res);
return; return;
@ -464,7 +464,7 @@ void get_ba_team_name(uint64_t teamid, char **name /*OUT*/,
// pdbg_logf(D_NOTICE, "Result contains %d teams\n", users->length); // pdbg_logf(D_NOTICE, "Result contains %d teams\n", users->length);
if (!teams->length) { if (!teams->length) {
free(bres); pmem_free(PMEM_SUBSYS_API, bres);
pdbg_logf(D_WARNING, "Account_teams returned empty result!\n"); pdbg_logf(D_WARNING, "Account_teams returned empty result!\n");
return; return;
} else { } else {
@ -473,7 +473,7 @@ void get_ba_team_name(uint64_t teamid, char **name /*OUT*/,
*length = strlen(teamret); *length = strlen(teamret);
*name = putil_strndup(teamret, *length); *name = putil_strndup(teamret, *length);
} }
free(bres); pmem_free(PMEM_SUBSYS_API, bres);
psync_sql_res *q; psync_sql_res *q;
q = psql_prepare( q = psql_prepare(
@ -557,7 +557,7 @@ void cache_account_emails() {
psql_commit(); psql_commit();
} }
end_close: end_close:
free(bres); pmem_free(PMEM_SUBSYS_API, bres);
} }
void cache_account_teams() { void cache_account_teams() {
@ -591,7 +591,7 @@ void cache_account_teams() {
// pdbg_logf(D_NOTICE, "Result contains %d teams\n", users->length); // pdbg_logf(D_NOTICE, "Result contains %d teams\n", users->length);
if (!users->length) { if (!users->length) {
free(bres); pmem_free(PMEM_SUBSYS_API, bres);
pdbg_logf(D_WARNING, "Account_teams returned empty result!\n"); pdbg_logf(D_WARNING, "Account_teams returned empty result!\n");
return; return;
} else { } else {
@ -619,7 +619,7 @@ void cache_account_teams() {
} }
psql_commit(); psql_commit();
} }
free(bres); pmem_free(PMEM_SUBSYS_API, bres);
return; return;
} }
@ -664,7 +664,7 @@ void cache_ba_my_teams() {
users = papi_find_result2(bres, "users", PARAM_ARRAY); users = papi_find_result2(bres, "users", PARAM_ARRAY);
if (!users->length) { if (!users->length) {
free(bres); pmem_free(PMEM_SUBSYS_API, bres);
pdbg_logf(D_WARNING, "Account_users returned empty result!\n"); pdbg_logf(D_WARNING, "Account_users returned empty result!\n");
return; return;
} }
@ -676,7 +676,7 @@ void cache_ba_my_teams() {
teams = papi_find_result2(user, "teams", PARAM_ARRAY); teams = papi_find_result2(user, "teams", PARAM_ARRAY);
for (i = 0; i < teams->length; i++) for (i = 0; i < teams->length; i++)
cache_my_team(teams->array[i]); cache_my_team(teams->array[i]);
free(bres); pmem_free(PMEM_SUBSYS_API, bres);
psql_unlock(); psql_unlock();
} }
@ -684,7 +684,7 @@ int api_error_result(binresult *res) {
uint64_t result; uint64_t result;
result = papi_find_result2(res, "result", PARAM_NUM)->num; result = papi_find_result2(res, "result", PARAM_NUM)->num;
if (result) { if (result) {
free(res); pmem_free(PMEM_SUBSYS_API, res);
psync_process_api_error(result); psync_process_api_error(result);
return 1; return 1;
} }
@ -783,20 +783,20 @@ static psync_folderid_t create_index_folder(const char *path) {
while (ind < 100) { while (ind < 100) {
bufflen = strlen(path) + 1 /*zero char*/ + 3 /*parenthesis*/ + bufflen = strlen(path) + 1 /*zero char*/ + 3 /*parenthesis*/ +
3 /*up to 3 digit index*/; 3 /*up to 3 digit index*/;
buff = (char *)malloc(bufflen); buff = (char *)pmem_malloc(PMEM_SUBSYS_API, bufflen);
snprintf(buff, bufflen - 1, "%s (%d)", path, ind); snprintf(buff, bufflen - 1, "%s (%d)", path, ind);
if (psync_create_remote_folder_by_path(buff, &err) != 0) if (psync_create_remote_folder_by_path(buff, &err) != 0)
pdbg_logf(D_NOTICE, "Unable to create folder %s error is %s.", buff, err); pdbg_logf(D_NOTICE, "Unable to create folder %s error is %s.", buff, err);
folderid = pfolder_id(buff); folderid = pfolder_id(buff);
if ((folderid != PSYNC_INVALID_FOLDERID) && if ((folderid != PSYNC_INVALID_FOLDERID) &&
check_write_permissions(folderid)) { check_write_permissions(folderid)) {
free(buff); pmem_free(PMEM_SUBSYS_API, buff);
break; break;
} }
++ind; ++ind;
if (err) if (err)
free(err); pmem_free(PMEM_SUBSYS_API, err);
free(buff); pmem_free(PMEM_SUBSYS_API, buff);
} }
return folderid; return folderid;
} }
@ -807,7 +807,7 @@ psync_folderid_t psync_check_and_create_folder(const char *path) {
if (folderid == PSYNC_INVALID_FOLDERID) { if (folderid == PSYNC_INVALID_FOLDERID) {
if (psync_create_remote_folder_by_path(path, &err) != 0) { if (psync_create_remote_folder_by_path(path, &err) != 0) {
pdbg_logf(D_NOTICE, "Unable to create folder %s error is %s.", path, err); pdbg_logf(D_NOTICE, "Unable to create folder %s error is %s.", path, err);
free(err); pmem_free(PMEM_SUBSYS_API, err);
folderid = create_index_folder(path); folderid = create_index_folder(path);
} }
} else if (!check_write_permissions(folderid)) } else if (!check_write_permissions(folderid))

View File

@ -124,7 +124,7 @@ int ptools_create_backend_event(const char *binapi, const char *category,
tpCnt = mpCnt; // Manadatory parameters only. tpCnt = mpCnt; // Manadatory parameters only.
} }
paramsLocal = (binparam *)malloc( paramsLocal = (binparam *)pmem_malloc(PMEM_SUBSYS_API,
(tpCnt) * sizeof(binparam)); // Allocate size for all parameters. (tpCnt) * sizeof(binparam)); // Allocate size for all parameters.
// Set the mandatory pramaters. // Set the mandatory pramaters.
@ -226,8 +226,8 @@ int ptools_create_backend_event(const char *binapi, const char *category,
res = papi_send(sock, EVENT_WS, strlen(EVENT_WS), paramsLocal, tpCnt, res = papi_send(sock, EVENT_WS, strlen(EVENT_WS), paramsLocal, tpCnt,
-1, 1); -1, 1);
free(keyParams); pmem_free(PMEM_SUBSYS_API, keyParams);
free(paramsLocal); pmem_free(PMEM_SUBSYS_API, paramsLocal);
if (pdbg_unlikely(!res)) { if (pdbg_unlikely(!res)) {
psock_close(sock); psock_close(sock);
@ -269,11 +269,11 @@ int ptools_backend_call(const char *binapi, const char *wsPath,
uint64_t result; uint64_t result;
if (totalParCnt > 0) { if (totalParCnt > 0) {
localParams = (binparam *)malloc( localParams = (binparam *)pmem_malloc(PMEM_SUBSYS_API,
(totalParCnt) * (totalParCnt) *
sizeof(binparam)); // Allocate size for all required parameters. sizeof(binparam)); // Allocate size for all required parameters.
} else { } else {
localParams = (binparam *)malloc(sizeof(binparam)); localParams = (binparam *)pmem_malloc(PMEM_SUBSYS_API, sizeof(binparam));
} }
// Add required parameters to the structure // Add required parameters to the structure
@ -349,7 +349,7 @@ int ptools_backend_call(const char *binapi, const char *wsPath,
res = papi_send(sock, wsPath, strlen(wsPath), localParams, totalParCnt, res = papi_send(sock, wsPath, strlen(wsPath), localParams, totalParCnt,
-1, 1); -1, 1);
free(localParams); pmem_free(PMEM_SUBSYS_API, localParams);
if (pdbg_unlikely(!res)) { if (pdbg_unlikely(!res)) {
psock_close(sock); psock_close(sock);
@ -474,7 +474,7 @@ void ptools_send_psyncs_event(const char *binapi, const char *auth) {
if (syncCnt < 1) { if (syncCnt < 1) {
pdbg_logf(D_NOTICE, "No syncs, skip the event."); pdbg_logf(D_NOTICE, "No syncs, skip the event.");
free(errMsg); pmem_free(PMEM_SUBSYS_API, errMsg);
return; return;
} }
@ -496,7 +496,7 @@ void ptools_send_psyncs_event(const char *binapi, const char *auth) {
psql_run_free(sql); psql_run_free(sql);
} }
free(errMsg); pmem_free(PMEM_SUBSYS_API, errMsg);
} }
int ptools_set_backend_file_dates(uint64_t fileid, time_t ctime, time_t mtime) { int ptools_set_backend_file_dates(uint64_t fileid, time_t ctime, time_t mtime) {
@ -525,7 +525,7 @@ int ptools_set_backend_file_dates(uint64_t fileid, time_t ctime, time_t mtime) {
/* Free errPtr before reuse to avoid leak if first call allocated it */ /* Free errPtr before reuse to avoid leak if first call allocated it */
if (errPtr) { if (errPtr) {
free(errPtr); pmem_free(PMEM_SUBSYS_API, errPtr);
errPtr = NULL; errPtr = NULL;
} }
@ -542,7 +542,7 @@ int ptools_set_backend_file_dates(uint64_t fileid, time_t ctime, time_t mtime) {
pdbg_logf(D_NOTICE, "mTime res: [%d]", callRes); pdbg_logf(D_NOTICE, "mTime res: [%d]", callRes);
if (errPtr) if (errPtr)
free(errPtr); pmem_free(PMEM_SUBSYS_API, errPtr);
return callRes; return callRes;
} }