MCPcopy Create free account
hub / github.com/foxcpp/maddy / BodyNonAtomic

Method BodyNonAtomic

internal/msgpipeline/msgpipeline.go:456–507  ·  view source on GitHub ↗
(ctx context.Context, c module.StatusCollector, header textproto.Header, body buffer.Buffer)

Source from the content-addressed store, hash-verified

454}
455
456func (dd *msgpipelineDelivery) BodyNonAtomic(ctx context.Context, c module.StatusCollector, header textproto.Header, body buffer.Buffer) {
457 setStatusAll := func(err error) {
458 for _, delivery := range dd.deliveries {
459 for _, rcpt := range delivery.recipients {
460 c.SetStatus(rcpt, err)
461 }
462 }
463 }
464
465 if err := dd.checkRunner.checkBody(ctx, dd.d.globalChecks, header, body); err != nil {
466 setStatusAll(err)
467 return
468 }
469 if err := dd.checkRunner.checkBody(ctx, dd.sourceBlock.checks, header, body); err != nil {
470 setStatusAll(err)
471 return
472 }
473
474 // Run modifiers after Authentication-Results addition to make
475 // sure signatures, etc will cover it.
476 if err := dd.globalModifiersState.RewriteBody(ctx, &header, body); err != nil {
477 setStatusAll(err)
478 return
479 }
480 if err := dd.sourceModifiersState.RewriteBody(ctx, &header, body); err != nil {
481 setStatusAll(err)
482 return
483 }
484 for _, modifiers := range dd.rcptModifiersState {
485 if err := modifiers.RewriteBody(ctx, &header, body); err != nil {
486 setStatusAll(err)
487 return
488 }
489 }
490
491 for _, delivery := range dd.deliveries {
492 partDelivery, ok := delivery.Delivery.(module.PartialDelivery)
493 if ok {
494 partDelivery.BodyNonAtomic(ctx, statusCollector{
495 originalRcpts: dd.msgMeta.OriginalRcpts,
496 wrapped: c,
497 }, header, body)
498 continue
499 }
500
501 if err := delivery.Body(ctx, header, body); err != nil {
502 for _, rcpt := range delivery.recipients {
503 c.SetStatus(rcpt, err)
504 }
505 }
506 }
507}
508
509func (dd *msgpipelineDelivery) Commit(ctx context.Context) error {
510 dd.close()

Callers

nothing calls this directly

Calls 5

checkBodyMethod · 0.80
SetStatusMethod · 0.65
RewriteBodyMethod · 0.65
BodyNonAtomicMethod · 0.65
BodyMethod · 0.65

Tested by

no test coverage detected