Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ else
endif

EXTENSION = pg_net
EXTVERSION = 0.20.1
EXTVERSION = 0.20.2

DATA = $(wildcard sql/*--*.sql)

Expand Down
6 changes: 3 additions & 3 deletions shell.nix
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
with import (builtins.fetchTarball {
name = "25.05";
url = "https://github.com/NixOS/nixpkgs/archive/refs/tags/25.05.tar.gz";
sha256 = "sha256:1915r28xc4znrh2vf4rrjnxldw2imysz819gzhk9qlrkqanmfsxd";
name = "2025-11-13";
url = "https://github.com/NixOS/nixpkgs/archive/91c9a64ce2a84e648d0cf9671274bb9c2fb9ba60.tar.gz";
sha256 = "sha256:19myp93spfsf5x62k6ncan7020bmbn80kj4ywcykqhb9c3q8fdr1";
}) {};
mkShell {
buildInputs =
Expand Down
1 change: 1 addition & 0 deletions sql/pg_net--0.20.1--0.20.2.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
-- no SQL changes in 0.20.2
23 changes: 13 additions & 10 deletions src/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -273,21 +273,24 @@ void insert_response(CurlHandle *handle, CURLcode curl_return_code) {
vals[5] = BoolGetDatum(false);
nulls[5] = ' ';
} else {
bool timed_out = curl_return_code == CURLE_OPERATION_TIMEDOUT;
char *error_msg = NULL;

if (timed_out) {
error_msg = detailed_timeout_strerror(handle->ez_handle, handle->timeout_milliseconds).msg;
} else {
error_msg = (char *)curl_easy_strerror(curl_return_code);
}
bool timed_out = curl_return_code == CURLE_OPERATION_TIMEDOUT;

vals[5] = BoolGetDatum(timed_out);
nulls[5] = ' ';

if (error_msg) {
vals[6] = CStringGetTextDatum(error_msg);
if (timed_out) {
curl_timeout_msg timeout_msg =
detailed_timeout_strerror(handle->ez_handle, handle->timeout_milliseconds);

vals[6] = CStringGetTextDatum(timeout_msg.msg);
nulls[6] = ' ';
} else {
const char *error_msg = curl_easy_strerror(curl_return_code);

if (error_msg) {
vals[6] = CStringGetTextDatum(error_msg);
nulls[6] = ' ';
}
}
}

Expand Down
16 changes: 10 additions & 6 deletions src/event.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ void ev_monitor_close(WorkerState *wstate) {
close(timerfd);
}

int multi_timer_cb(__attribute__((unused)) CURLM *multi, long timeout_ms, WorkerState *wstate) {
int multi_timer_cb(__attribute__((unused)) CURLM *multi, long timeout_ms, void *userp) {
WorkerState *wstate = (WorkerState *)userp;
elog(DEBUG2, "multi_timer_cb: Setting timeout to %ld ms\n", timeout_ms);

if (!timer_created) {
Expand Down Expand Up @@ -71,8 +72,9 @@ int multi_timer_cb(__attribute__((unused)) CURLM *multi, long timeout_ms, Worker
return 0;
}

int multi_socket_cb(__attribute__((unused)) CURL *easy, curl_socket_t sockfd, int what,
WorkerState *wstate, void *socketp) {
int multi_socket_cb(__attribute__((unused)) CURL *easy, curl_socket_t sockfd, int what, void *userp,
void *socketp) {
WorkerState *wstate = (WorkerState *)userp;
static char *whatstrs[] = {"NONE", "CURL_POLL_IN", "CURL_POLL_OUT", "CURL_POLL_INOUT",
"CURL_POLL_REMOVE"};
elog(DEBUG2, "multi_socket_cb: sockfd %d received %s", sockfd, whatstrs[what]);
Expand Down Expand Up @@ -145,7 +147,8 @@ void ev_monitor_close(WorkerState *wstate) {
close(wstate->epfd);
}

int multi_timer_cb(__attribute__((unused)) CURLM *multi, long timeout_ms, WorkerState *wstate) {
int multi_timer_cb(__attribute__((unused)) CURLM *multi, long timeout_ms, void *userp) {
WorkerState *wstate = (WorkerState *)userp;
elog(DEBUG2, "multi_timer_cb: Setting timeout to %ld ms\n", timeout_ms);
event timer_event;
int id = 1;
Expand All @@ -171,8 +174,9 @@ int multi_timer_cb(__attribute__((unused)) CURLM *multi, long timeout_ms, Worker
return 0;
}

int multi_socket_cb(__attribute__((unused)) CURL *easy, curl_socket_t sockfd, int what,
WorkerState *wstate, void *socketp) {
int multi_socket_cb(__attribute__((unused)) CURL *easy, curl_socket_t sockfd, int what, void *userp,
void *socketp) {
WorkerState *wstate = (WorkerState *)userp;
static char *whatstrs[] = {"NONE", "CURL_POLL_IN", "CURL_POLL_OUT", "CURL_POLL_INOUT",
"CURL_POLL_REMOVE"};
elog(DEBUG2, "multi_socket_cb: sockfd %d received %s", sockfd, whatstrs[what]);
Expand Down
4 changes: 2 additions & 2 deletions src/event.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ typedef struct kevent event;
int wait_event(int fd, event *events, size_t maxevents, int wait_milliseconds);
int event_monitor(void);
void ev_monitor_close(WorkerState *wstate);
int multi_timer_cb(CURLM *multi, long timeout_ms, WorkerState *wstate);
int multi_socket_cb(CURL *easy, curl_socket_t sockfd, int what, WorkerState *wstate, void *socketp);
int multi_timer_cb(CURLM *multi, long timeout_ms, void *userp);
int multi_socket_cb(CURL *easy, curl_socket_t sockfd, int what, void *userp, void *socketp);
bool is_timer(event ev);
int get_curl_event(event ev);
int get_socket_fd(event ev);
Expand Down