Skip to content

Commit 19cdb05

Browse files
committed
Merge branch 'master' into mainnet-beta
2 parents ac06d5c + 90e3f01 commit 19cdb05

File tree

2 files changed

+23
-6
lines changed

2 files changed

+23
-6
lines changed

src/swift_server.rs

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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| matches!(m.status, MarketStatus::Delisted | MarketStatus::Settlement))
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),
@@ -444,7 +459,9 @@ pub async fn deposit_trade(
444459
// verify deposit ix exists and amount
445460
let mut has_place_ix = false;
446461
for ix in req.deposit_tx.message.instructions() {
447-
if &ix.data[..8] == drift_idl::instructions::PlaceSignedMsgTakerOrder::DISCRIMINATOR {
462+
if ix.data.len() > 8
463+
&& &ix.data[..8] == drift_idl::instructions::PlaceSignedMsgTakerOrder::DISCRIMINATOR
464+
{
448465
has_place_ix = true;
449466
}
450467
}
@@ -623,7 +640,6 @@ pub async fn health_check(
623640

624641
pub async fn start_server() {
625642
// Start server
626-
627643
dotenv().ok();
628644

629645
let use_kafka: bool = env::var("USE_KAFKA").unwrap_or_else(|_| "false".to_string()) == "true";

src/types/messages.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@ pub const PROCESS_ORDER_RESPONSE_ERROR_MSG_VERIFY_SIGNATURE: &str =
201201
"Error verifying signed message";
202202
pub const PROCESS_ORDER_RESPONSE_ERROR_MSG_ORDER_SLOT_TOO_OLD: &str = "Order slot too old";
203203
pub const PROCESS_ORDER_RESPONSE_ERROR_MSG_INVALID_ORDER: &str = "Invalid order";
204+
pub const PROCESS_ORDER_RESPONSE_ERROR_MSG_DELISTED_MARKET: &str = "Delisted market";
204205
pub const PROCESS_ORDER_RESPONSE_ERROR_MSG_INVALID_ORDER_AMOUNT: &str =
205206
"Invalid base_asset_amount in tp/sl";
206207
pub const PROCESS_ORDER_RESPONSE_ERROR_MSG_DELIVERY_FAILED: &str = "Failed to deliver message";

0 commit comments

Comments
 (0)