@@ -843,14 +843,40 @@ static void update_knowledge_from_error(struct command *aux_cmd,
843843			   describe_scidd (attempt , index ));
844844
845845disable_channel :
846- 	/* We only do  this for the current payment */ 
846+ 	/* We disable  this channel  for the current payment */ 
847847	req  =  payment_ignored_req (aux_cmd , attempt , "askrene-update-channel" );
848848	json_add_string (req -> js , "layer" , attempt -> payment -> private_layer );
849849	json_add_short_channel_id_dir (req -> js ,
850850				      "short_channel_id_dir" ,
851851				      attempt -> hops [index ].scidd );
852852	json_add_bool (req -> js , "enabled" , false);
853853	send_payment_req (aux_cmd , attempt -> payment , req );
854+ 
855+ 	/* We add a negative bias to this channel to penalize it for other 
856+ 	 * payments. 
857+ 	 * Biases are nice way to penalize or encourage the use of 
858+ 	 * channels. But it has some limitations. For example the bias would 
859+ 	 * have no effect if the channel already provides 0 cost routing. */ 
860+ 	req  =  payment_ignored_req (aux_cmd , attempt , "askrene-bias-channel" );
861+ 	json_add_string (req -> js , "layer" , XPAY_GLOBAL_LAYER );
862+ 	json_add_short_channel_id_dir (req -> js , "short_channel_id_dir" ,
863+ 				      attempt -> hops [index ].scidd );
864+ 	json_add_s32 (req -> js , "bias" , -5 );
865+ 	json_add_bool (req -> js , "relative" , true);
866+ 	send_payment_req (aux_cmd , attempt -> payment , req );
867+ 
868+ 	/* We add a negative bias to the node that owns this half channel. */ 
869+ 	if  (index ) {
870+ 		req  = 
871+ 		    payment_ignored_req (aux_cmd , attempt , "askrene-bias-node" );
872+ 		json_add_string (req -> js , "layer" , XPAY_GLOBAL_LAYER );
873+ 		json_add_pubkey (req -> js , "node" ,
874+ 				& attempt -> hops [index  -  1 ].next_node );
875+ 		json_add_s32 (req -> js , "bias" , -1 );
876+ 		json_add_bool (req -> js , "relative" , true);
877+ 		json_add_bool (req -> js , "out_direction" , true);
878+ 		send_payment_req (aux_cmd , attempt -> payment , req );
879+ 	}
854880	goto check_previous_success ;
855881
856882channel_capacity :
0 commit comments