@@ -146,9 +146,8 @@ _bson_error_message_printf (bson_error_t *error, const char *format, ...)
146146 }
147147}
148148
149- #define RUN_CMD_ERR ( _domain , _code , _msg ) \
149+ #define RUN_CMD_ERR_DECORATE \
150150 do { \
151- bson_set_error (error, _domain, _code, _msg); \
152151 _bson_error_message_printf ( \
153152 error, \
154153 "Failed to send \"%s\" command with database \"%s\": %s", \
@@ -157,6 +156,11 @@ _bson_error_message_printf (bson_error_t *error, const char *format, ...)
157156 error->message); \
158157 } while (0)
159158
159+ #define RUN_CMD_ERR (_domain , _code , ...) \
160+ do { \
161+ bson_set_error (error, _domain, _code, __VA_ARGS__); \
162+ RUN_CMD_ERR_DECORATE; \
163+ } while (0)
160164
161165/*
162166 *--------------------------------------------------------------------------
@@ -259,13 +263,7 @@ mongoc_cluster_run_command_opquery (mongoc_cluster_t *cluster,
259263 mongoc_cluster_disconnect_node (cluster , server_id , true, error );
260264
261265 /* add info about the command to writev_full's error message */
262- _bson_error_message_printf (
263- error ,
264- "Failed to send \"%s\" command with database \"%s\": %s" ,
265- cmd -> command_name ,
266- cmd -> db_name ,
267- error -> message );
268-
266+ RUN_CMD_ERR_DECORATE ;
269267 GOTO (done );
270268 }
271269
@@ -2579,6 +2577,8 @@ mongoc_cluster_run_opmsg (mongoc_cluster_t *cluster,
25792577 cluster -> sockettimeoutms ,
25802578 error );
25812579 if (!ok ) {
2580+ /* add info about the command to writev_full's error message */
2581+ RUN_CMD_ERR_DECORATE ;
25822582 mongoc_cluster_disconnect_node (
25832583 cluster , server_stream -> sd -> id , true, error );
25842584 bson_free (output );
@@ -2590,6 +2590,7 @@ mongoc_cluster_run_opmsg (mongoc_cluster_t *cluster,
25902590 ok = _mongoc_buffer_append_from_stream (
25912591 & buffer , server_stream -> stream , 4 , cluster -> sockettimeoutms , error );
25922592 if (!ok ) {
2593+ RUN_CMD_ERR_DECORATE ;
25932594 mongoc_cluster_disconnect_node (
25942595 cluster , server_stream -> sd -> id , true, error );
25952596 bson_free (output );
@@ -2602,8 +2603,7 @@ mongoc_cluster_run_opmsg (mongoc_cluster_t *cluster,
26022603 memcpy (& msg_len , buffer .data , 4 );
26032604 msg_len = BSON_UINT32_FROM_LE (msg_len );
26042605 if ((msg_len < 16 ) || (msg_len > server_stream -> sd -> max_msg_size )) {
2605- bson_set_error (
2606- error ,
2606+ RUN_CMD_ERR (
26072607 MONGOC_ERROR_PROTOCOL ,
26082608 MONGOC_ERROR_PROTOCOL_INVALID_REPLY ,
26092609 "Message size %d is not within expected range 16-%d bytes" ,
@@ -2623,6 +2623,7 @@ mongoc_cluster_run_opmsg (mongoc_cluster_t *cluster,
26232623 cluster -> sockettimeoutms ,
26242624 error );
26252625 if (!ok ) {
2626+ RUN_CMD_ERR_DECORATE ;
26262627 mongoc_cluster_disconnect_node (
26272628 cluster , server_stream -> sd -> id , true, error );
26282629 bson_free (output );
@@ -2633,8 +2634,7 @@ mongoc_cluster_run_opmsg (mongoc_cluster_t *cluster,
26332634
26342635 ok = _mongoc_rpc_scatter (& rpc , buffer .data , buffer .len );
26352636 if (!ok ) {
2636- bson_set_error (error ,
2637- MONGOC_ERROR_PROTOCOL ,
2637+ RUN_CMD_ERR (MONGOC_ERROR_PROTOCOL ,
26382638 MONGOC_ERROR_PROTOCOL_INVALID_REPLY ,
26392639 "Malformed message from server" );
26402640 bson_free (output );
@@ -2648,8 +2648,7 @@ mongoc_cluster_run_opmsg (mongoc_cluster_t *cluster,
26482648
26492649 output = bson_realloc (output , len );
26502650 if (!_mongoc_rpc_decompress (& rpc , (uint8_t * ) output , len )) {
2651- bson_set_error (error ,
2652- MONGOC_ERROR_PROTOCOL ,
2651+ RUN_CMD_ERR (MONGOC_ERROR_PROTOCOL ,
26532652 MONGOC_ERROR_PROTOCOL_INVALID_REPLY ,
26542653 "Could not decompress message from server" );
26552654 mongoc_cluster_disconnect_node (
0 commit comments