| 148 | } |
| 149 | |
| 150 | static int get_header_ready(int status, void *arg) |
| 151 | { |
| 152 | const char *myname = "get_header_ready"; |
| 153 | PROBE_SERVER *server = (PROBE_SERVER *) arg; |
| 154 | char buf[256]; |
| 155 | |
| 156 | if (status != HTTP_CHAT_OK) { |
| 157 | msg_error(server, "%s(%d), get header error", myname, __LINE__); |
| 158 | close_stream(server); |
| 159 | timer_retry(server); |
| 160 | return -1; |
| 161 | } |
| 162 | |
| 163 | if (http_hdr_res_parse(server->hdr_res) < 0) { |
| 164 | msg_error(server, "%s(%d), parse hdr error", myname, __LINE__); |
| 165 | close_stream(server); |
| 166 | timer_retry(server); |
| 167 | return -1; |
| 168 | } |
| 169 | |
| 170 | snprintf(buf, sizeof(buf), "%d", server->hdr_res->reply_status); |
| 171 | if (strstr(server->http_status_errors, buf) != NULL) { |
| 172 | msg_error(server, "%s(%d), reply status(%s) error", |
| 173 | myname, __LINE__, buf); |
| 174 | if (var_probe_debug_fp) |
| 175 | http_hdr_fprint(var_probe_debug_fp, |
| 176 | &server->hdr_res->hdr, myname); |
| 177 | close_stream(server); |
| 178 | timer_retry(server); |
| 179 | return -1; |
| 180 | } |
| 181 | |
| 182 | if (server->hdr_res->hdr.content_length == 0) { |
| 183 | msg_info(server, "%s(%d), get hdr over", myname, __LINE__); |
| 184 | if (var_probe_debug_fp) |
| 185 | http_hdr_fprint(var_probe_debug_fp, |
| 186 | &server->hdr_res->hdr, myname); |
| 187 | close_stream(server); |
| 188 | timer_retry(server); |
| 189 | } else { |
| 190 | if (var_probe_debug_fp) |
| 191 | http_hdr_fprint(var_probe_debug_fp, |
| 192 | &server->hdr_res->hdr, myname); |
| 193 | |
| 194 | server->res = http_res_new(server->hdr_res); |
| 195 | http_res_body_get_async(server->res, server->stream, |
| 196 | get_body_ready, server, server->rw_timeout); |
| 197 | } |
| 198 | |
| 199 | return 0; |
| 200 | } |
| 201 | |
| 202 | static int write_callback(ACL_ASTREAM *stream, void *context) |
| 203 | { |
nothing calls this directly
no test coverage detected
searching dependent graphs…