Without seeing code or understanding more, I can only hazard a guess.

Perhaps the BOOTP socket is expecting a keepalive and never getting it?

A keepalive as you know is a packet that tells the system that communications are still good and
to keep the socket open.

I do not know if your system has this option at all. Without more background and code
we can't really help more.