From: Michael Tremer Date: Sun, 15 Sep 2024 03:36:58 +0000 (+0000) Subject: xfer: Implement sending a WebSocket message X-Git-Tag: 0.9.30~1194 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e95415fdbd87826539949c0ccd534dad7a926203;p=pakfire.git xfer: Implement sending a WebSocket message Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/include/pakfire/xfer.h b/src/libpakfire/include/pakfire/xfer.h index 30fa6adeb..57250ad88 100644 --- a/src/libpakfire/include/pakfire/xfer.h +++ b/src/libpakfire/include/pakfire/xfer.h @@ -134,5 +134,7 @@ typedef int (*pakfire_xfer_close_callback)(struct pakfire_xfer* xfer, int code, int pakfire_xfer_socket(struct pakfire_xfer* xfer, pakfire_xfer_recv_callback recv, pakfire_xfer_send_callback send, pakfire_xfer_close_callback close, void* data); +int pakfire_xfer_send_message(struct pakfire_xfer* xfer, const char* message, const size_t length); + #endif /* PAKFIRE_PRIVATE */ #endif /* PAKFIRE_XFER_H */ diff --git a/src/libpakfire/xfer.c b/src/libpakfire/xfer.c index a932872d6..43e69e7aa 100644 --- a/src/libpakfire/xfer.c +++ b/src/libpakfire/xfer.c @@ -1517,6 +1517,29 @@ int pakfire_xfer_socket(struct pakfire_xfer* xfer, pakfire_xfer_recv_callback re return 0; } +/* + This function sends a WebSocket message +*/ +int pakfire_xfer_send_message(struct pakfire_xfer* xfer, + const char* message, const size_t length) { + size_t bytes_sent = 0; + int r; + + // Send the message + r = curl_ws_send(xfer->handle, message, length, &bytes_sent, 0, CURLWS_TEXT); + if (r) { + CTX_ERROR(xfer->ctx, "Could not send message: %s\n", curl_easy_strerror(r)); + + return r; + } + + // Log success + CTX_DEBUG(xfer->ctx, + "Successfully sent a WebSocket message of %zu byte(s)\n", bytes_sent); + + return 0; +} + pakfire_xfer_error_code_t pakfire_xfer_run(struct pakfire_xfer* xfer, int flags) { int r;