13.5.4 接收并解析响应

接收并解析认证服务器响应的方法是ngx_mail_auth_http_read_handler,该方法要同时负责解析响应行和HTTP头部,较为复杂,图13-7描述了其中的主要流程。

13.5.4 接收并解析响应 - 图1

图 13-7 接收并解析来自认证服务器的响应

图13-6中所描述的流程包括两个阶段,首先接收到完整的HTTP响应行,其次接收到完整的HTTP响应头部。这两个阶段都并非一次调度就一定可以完成的,因此,当没有收到足够的TCP流供状态机解析时,都会期待epoll下一次重新调度图13-6中的流程。在全部解析完响应后,将可以得知认证是否通过,如果请求合法,那么可以从HTTP响应头部中得到上游邮件服务器的地址,接着通过调用ngx_mail_proxy_init方法进入与邮件服务器交互的阶段。