diff --git a/Makefile b/Makefile index 884d520..94a15b7 100644 --- a/Makefile +++ b/Makefile @@ -26,7 +26,7 @@ else endif EXTENSION = pg_net -EXTVERSION = 0.20.1 +EXTVERSION = 0.20.2 DATA = $(wildcard sql/*--*.sql) diff --git a/shell.nix b/shell.nix index 7af487c..54180e8 100644 --- a/shell.nix +++ b/shell.nix @@ -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 = diff --git a/sql/pg_net--0.20.1--0.20.2.sql b/sql/pg_net--0.20.1--0.20.2.sql new file mode 100644 index 0000000..aa77a2d --- /dev/null +++ b/sql/pg_net--0.20.1--0.20.2.sql @@ -0,0 +1 @@ +-- no SQL changes in 0.20.2 diff --git a/src/core.c b/src/core.c index b34375e..dd6c93c 100644 --- a/src/core.c +++ b/src/core.c @@ -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] = ' '; + } } } diff --git a/src/event.c b/src/event.c index 3bb5df9..df90b13 100644 --- a/src/event.c +++ b/src/event.c @@ -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) { @@ -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]); @@ -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; @@ -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]); diff --git a/src/event.h b/src/event.h index a6922dd..d1a76ea 100644 --- a/src/event.h +++ b/src/event.h @@ -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);