diff --git a/gomilter.go b/gomilter.go index 891bd36..47a9e32 100644 --- a/gomilter.go +++ b/gomilter.go @@ -200,7 +200,14 @@ func GobDecode(buf []byte, data interface{}) error { // They are only called if they get registered but need to be defined anyway //export Go_xxfi_connect -func Go_xxfi_connect(ctx *C.SMFICTX, hostname *C.char, hostaddr *C._SOCK_ADDR) C.sfsistat { +func Go_xxfi_connect(ctx *C.SMFICTX, hostname *C.char, hostaddr *C._SOCK_ADDR) (sfsistat C.sfsistat) { + defer func(sfsistat *C.sfsistat) { + if r := recover(); r != nil { + LoggerPrintf("Panic caught in Go_xxfi_connect(): %s", r) + *sfsistat = 75 // tempfail + } + }(&sfsistat) + ctxptr := ctx2int(ctx) var ip net.IP