@@ -12,7 +12,8 @@ use crate::{
1212 types:: {
1313 messages:: {
1414 DepositAndPlaceRequest , IncomingSignedMessage , OrderMetadataAndMessage ,
15- ProcessOrderResponse , PROCESS_ORDER_RESPONSE_ERROR_MSG_DELIVERY_FAILED ,
15+ ProcessOrderResponse , PROCESS_ORDER_RESPONSE_ERROR_MSG_DELISTED_MARKET ,
16+ PROCESS_ORDER_RESPONSE_ERROR_MSG_DELIVERY_FAILED ,
1617 PROCESS_ORDER_RESPONSE_ERROR_MSG_INVALID_ORDER ,
1718 PROCESS_ORDER_RESPONSE_ERROR_MSG_INVALID_ORDER_AMOUNT ,
1819 PROCESS_ORDER_RESPONSE_ERROR_MSG_ORDER_SLOT_TOO_OLD ,
@@ -45,9 +46,9 @@ use drift_rs::{
4546 types:: {
4647 accounts:: { HighLeverageModeConfig , User } ,
4748 errors:: ErrorCode ,
48- CommitmentConfig , MarketId , MarketType , OrderParams , OrderType , PositionDirection ,
49- ProgramError , SdkError , SdkResult , SignedMsgTriggerOrderParams , VersionedMessage ,
50- VersionedTransaction ,
49+ CommitmentConfig , MarketId , MarketStatus , MarketType , OrderParams , OrderType ,
50+ PositionDirection , ProgramError , SdkError , SdkResult , SignedMsgTriggerOrderParams ,
51+ VersionedMessage , VersionedTransaction ,
5152 } ,
5253 Context , DriftClient , RpcClient , TransactionBuilder , Wallet ,
5354} ;
@@ -260,6 +261,20 @@ pub async fn process_order(
260261 let market = server_params
261262 . drift
262263 . try_get_perp_market_account ( order_params. market_index ) ;
264+
265+ if market
266+ . as_ref ( )
267+ . is_ok_and ( |m| m. status == MarketStatus :: Delisted )
268+ {
269+ return Err ( (
270+ axum:: http:: StatusCode :: BAD_REQUEST ,
271+ ProcessOrderResponse {
272+ message : PROCESS_ORDER_RESPONSE_ERROR_MSG_DELISTED_MARKET ,
273+ error : format ! ( "market {} delisted" , order_params. market_index) . into ( ) ,
274+ } ,
275+ ) ) ;
276+ }
277+
263278 if let Err ( err) = validate_signed_order_params (
264279 & order_params,
265280 market. map ( |m| m. amm . min_order_size ) . unwrap_or ( 0 ) ,
@@ -623,7 +638,6 @@ pub async fn health_check(
623638
624639pub async fn start_server ( ) {
625640 // Start server
626-
627641 dotenv ( ) . ok ( ) ;
628642
629643 let use_kafka: bool = env:: var ( "USE_KAFKA" ) . unwrap_or_else ( |_| "false" . to_string ( ) ) == "true" ;
0 commit comments