@@ -160,6 +160,24 @@ func (p *Provider) processTxSignature(ctx context.Context, sign solana.Signature
160
160
return txn , nil
161
161
}
162
162
163
+ func (p * Provider ) isValidConnectionMessage (logs []string ) bool {
164
+ validConnections := []string {}
165
+ if p .cfg .ConnectionProgram != "" {
166
+ validConnections = append (validConnections , p .cfg .ConnectionProgram )
167
+ }
168
+ for _ , conn := range p .cfg .OtherConnections {
169
+ validConnections = append (validConnections , conn )
170
+ }
171
+ for _ , conn := range validConnections {
172
+ for _ , log := range logs {
173
+ if strings .HasPrefix (log , fmt .Sprintf ("Program %s invoke" , conn )) {
174
+ return true
175
+ }
176
+ }
177
+ }
178
+ return false
179
+ }
180
+
163
181
func (p * Provider ) parseMessagesFromEvent (solEvent types.SolEvent ) ([]* relayertypes.Message , error ) {
164
182
messages := []* relayertypes.Message {}
165
183
@@ -193,6 +211,9 @@ func (p *Provider) parseMessagesFromEvent(solEvent types.SolEvent) ([]*relayerty
193
211
if slices .Equal (ev .Discriminator , discriminator ) {
194
212
switch ev .Name {
195
213
case types .EventSendMessage :
214
+ if ! p .isValidConnectionMessage (solEvent .Logs ) {
215
+ continue
216
+ }
196
217
smEvent := types.SendMessageEvent {}
197
218
if err := borsh .Deserialize (& smEvent , eventBytes ); err != nil {
198
219
return nil , fmt .Errorf ("failed to decode send message event: %w" , err )
0 commit comments