Skip to content

Commit

Permalink
[mod_pgsql] err is now set correctly (dbh:last_error())
Browse files Browse the repository at this point in the history
New function, `void pgsql_handle_set_error_if_not_set(switch_pgsql_handle_t *handle, char **err)` has been added to mod_pgsql module. This function is now called at several points where an error occurred but *err was not yet set.
  • Loading branch information
ar45 authored Jan 17, 2025
1 parent 96de8fd commit 5cb7479
Showing 1 changed file with 28 additions and 1 deletion.
29 changes: 28 additions & 1 deletion src/mod/databases/mod_pgsql/mod_pgsql.c
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,22 @@ char * pgsql_handle_get_error(switch_pgsql_handle_t *handle)
return err_str;
}

void pgsql_handle_set_error_if_not_set(switch_pgsql_handle_t *handle, char **err)
{
char *err_str;

if (err && !(*err)) {
err_str = pgsql_handle_get_error(handle);

if (zstr(err_str)) {
switch_safe_free(err_str);
err_str = strdup((char *)"SQL ERROR!");
}

*err = err_str;
}
}

static int db_is_up(switch_pgsql_handle_t *handle)
{
int ret = 0;
Expand Down Expand Up @@ -553,8 +569,15 @@ switch_status_t pgsql_handle_exec_detailed(const char *file, const char *func, i
goto error;
}

return pgsql_finish_results(handle);
if (pgsql_finish_results(handle) != SWITCH_STATUS_SUCCESS) {
goto error;
}

return SWITCH_STATUS_SUCCESS;

error:
pgsql_handle_set_error_if_not_set(handle, err);

return SWITCH_STATUS_FALSE;
}

Expand Down Expand Up @@ -630,6 +653,7 @@ switch_status_t database_handle_exec_string(switch_database_interface_handle_t *

pgsql_free_result(&result);
if (pgsql_finish_results(handle) != SWITCH_STATUS_SUCCESS) {
pgsql_handle_set_error_if_not_set(handle, err);
sstatus = SWITCH_STATUS_FALSE;
}

Expand All @@ -638,6 +662,7 @@ switch_status_t database_handle_exec_string(switch_database_interface_handle_t *
error:

pgsql_free_result(&result);
pgsql_handle_set_error_if_not_set(handle, err);

return SWITCH_STATUS_FALSE;
}
Expand Down Expand Up @@ -1050,6 +1075,8 @@ switch_status_t pgsql_handle_callback_exec_detailed(const char *file, const char
return SWITCH_STATUS_SUCCESS;
error:

pgsql_handle_set_error_if_not_set(handle, err);

return SWITCH_STATUS_FALSE;
}

Expand Down

0 comments on commit 5cb7479

Please sign in to comment.