我编写了一个小型代理服务器,它侦听端口25并执行一些操作。
如果是安全的SMTP,我会分叉一个进程并让子进程接管此会话。
思考过程是这个子进程应该是满足特定客户请求的进程。如果有另一个客户端发送邮件(安全),那么我需要分叉另一个进程。
但最新情况是,一旦子进程处理了客户端请求,它就会继续监听,但不会满足此客户端的需求。父进程已经在侦听此套接字,因此每次都会生成一个新进程。
我该如何处理这种情况?如果已为客户端(ip地址)分叉进程,则不应发生新的分叉。现有的子进程应该处理这些请求。
该程序基于C并在linux上运行。
答案 0 :(得分:1)
在客户端进程中保留发件人的信息。当您收到新的SMTP邮件时,请检查发件人是否与以前相同。如果是,请不要分叉到新客户端。
如果这不能回答您的问题,请包含您的代码的基本部分,以便我们可以看到逻辑错误可能存在的位置。