mirror of
https://github.com/unrealircd/unrealircd.git
synced 2026-07-08 08:23:14 +02:00
Make server.rehash for remote servers use two possible code paths:
* If the remote server (and all servers in-between) support RRPC then forward the RPC request as RRPC and let remote handle the response. The response will be the verbose rehash response. * If not supported, then simply return boolean true as a response, and use oldskool :source_server REHASH dest_server over the wire
This commit is contained in:
@@ -149,6 +149,8 @@ void (*rpc_error)(Client *client, json_t *request, JsonRpcError error_code, cons
|
||||
void (*rpc_error_fmt)(Client *client, json_t *request, JsonRpcError error_code, const char *fmt, ...);
|
||||
void (*rpc_send_request_to_remote)(Client *source, Client *target, json_t *request);
|
||||
void (*rpc_send_response_to_remote)(Client *source, Client *target, json_t *response);
|
||||
int (*rrpc_supported_simple)(Client *target, char **problem_server);
|
||||
int (*rrpc_supported)(Client *target, const char *module, const char *minimum_version, char **problem_server);
|
||||
int (*websocket_handle_websocket)(Client *client, WebRequest *web, const char *readbuf2, int length2, int callback(Client *client, char *buf, int len));
|
||||
int (*websocket_create_packet)(int opcode, char **buf, int *len);
|
||||
int (*websocket_create_packet_ex)(int opcode, char **buf, int *len, char *sendbuf, size_t sendbufsize);
|
||||
@@ -437,6 +439,8 @@ void efunctions_init(void)
|
||||
efunc_init_function(EFUNC_RPC_ERROR_FMT, rpc_error_fmt, rpc_error_fmt_default_handler);
|
||||
efunc_init_function(EFUNC_RPC_SEND_REQUEST_TO_REMOTE, rpc_send_request_to_remote, rpc_send_request_to_remote_default_handler);
|
||||
efunc_init_function(EFUNC_RPC_SEND_RESPONSE_TO_REMOTE, rpc_send_response_to_remote, rpc_send_response_to_remote_default_handler);
|
||||
efunc_init_function(EFUNC_RRPC_SUPPORTED, rrpc_supported, rrpc_supported_default_handler);
|
||||
efunc_init_function(EFUNC_RRPC_SUPPORTED_SIMPLE, rrpc_supported_simple, rrpc_supported_simple_default_handler);
|
||||
efunc_init_function(EFUNC_WEBSOCKET_HANDLE_WEBSOCKET, websocket_handle_websocket, websocket_handle_websocket_default_handler);
|
||||
efunc_init_function(EFUNC_WEBSOCKET_CREATE_PACKET, websocket_create_packet, websocket_create_packet_default_handler);
|
||||
efunc_init_function(EFUNC_WEBSOCKET_CREATE_PACKET_EX, websocket_create_packet_ex, websocket_create_packet_ex_default_handler);
|
||||
|
||||
Reference in New Issue
Block a user