Subject | Strange works with signals in UDF (in Firebird for Linux) |
---|---|
Author | Ivan Zelensky |
Post date | 2011-08-02T22:56:20Z |
Hello!
My question addressed to Firebird developers and developers of UDF who had
same problem.
I'm writing UDF (C++, Linux), that uses POSIX-sockets for TCP-connection and
POSIX-signals (SIGALRM) to implement timeouts for this connection. See
sample code in attachment.
As you can see, I try to terminate connection using SIGALRM. And it works
correctly when function called from my own application (using dlopen/dlsym
that also used for udf-calling in Firebird, isn't it?)
But when I call this function from Firebird i have problem. Signal-handler
still called, but connect() doesn't terminate.
So, that's my question: what I did uncorrectly and what can I do to
implement this connection timeout?
Thanks,
Ivan Zelenskyy.
[Non-text portions of this message have been removed]
My question addressed to Firebird developers and developers of UDF who had
same problem.
I'm writing UDF (C++, Linux), that uses POSIX-sockets for TCP-connection and
POSIX-signals (SIGALRM) to implement timeouts for this connection. See
sample code in attachment.
As you can see, I try to terminate connection using SIGALRM. And it works
correctly when function called from my own application (using dlopen/dlsym
that also used for udf-calling in Firebird, isn't it?)
But when I call this function from Firebird i have problem. Signal-handler
still called, but connect() doesn't terminate.
So, that's my question: what I did uncorrectly and what can I do to
implement this connection timeout?
Thanks,
Ivan Zelenskyy.
[Non-text portions of this message have been removed]