|
@@ -1077,25 +1077,49 @@ run_client(const char *url_arg)
|
|
|
/* Connect to host */
|
|
|
conn = mg_connect_client(host, (int)port, is_ssl, ebuf, sizeof(ebuf));
|
|
|
if (conn) {
|
|
|
+ /* Connecting to server worked */
|
|
|
char buf[1024] = {0};
|
|
|
int ret;
|
|
|
|
|
|
fprintf(stdout, "Connected to %s\n", host);
|
|
|
- mg_printf(conn, "GET /%s HTTP/1.0\r\n\r\n", resource);
|
|
|
-
|
|
|
- fprintf(stdout, "Reading from %s\n", host);
|
|
|
- ret = mg_read(conn, buf, sizeof(buf));
|
|
|
- fprintf(stdout, "ret=%i\n", ret);
|
|
|
- while (ret > 0) {
|
|
|
- ret = fwrite(buf, 1, ret, stdout);
|
|
|
- fprintf(stdout, "wri=%i\n", ret);
|
|
|
+
|
|
|
+ /* Send GET request */
|
|
|
+ mg_printf(conn,
|
|
|
+ "GET /%s HTTP/1.1\r\n"
|
|
|
+ "Host: %s\r\n"
|
|
|
+ "Connection: close\r\n"
|
|
|
+ "\r\n",
|
|
|
+ resource,
|
|
|
+ host);
|
|
|
+
|
|
|
+ /* Wait for server to respond with a HTTP header */
|
|
|
+ ret = mg_get_response(conn, ebuf, sizeof(ebuf), 10000);
|
|
|
+
|
|
|
+ if (ret >= 0) {
|
|
|
+ const struct mg_response_info *ri = mg_get_response_info(conn);
|
|
|
+
|
|
|
+ fprintf(stdout,
|
|
|
+ "Response info: %i %s\n",
|
|
|
+ ri->status_code,
|
|
|
+ ri->status_text);
|
|
|
+
|
|
|
+ /* Respond reader read. Read body (if any) */
|
|
|
ret = mg_read(conn, buf, sizeof(buf));
|
|
|
- fprintf(stdout, "ret=%i\n", ret);
|
|
|
- }
|
|
|
+ while (ret > 0) {
|
|
|
+ fwrite(buf, 1, ret, stdout);
|
|
|
+ ret = mg_read(conn, buf, sizeof(buf));
|
|
|
+ }
|
|
|
+
|
|
|
+ fprintf(stdout, "Closing connection to %s\n", host);
|
|
|
|
|
|
- fprintf(stdout, "Closing connection to %s\n", host);
|
|
|
+ } else {
|
|
|
+ /* Server did not reply to HTTP request */
|
|
|
+ fprintf(stderr, "Got no response from %s:\n%s\n", host, ebuf);
|
|
|
+ }
|
|
|
mg_close_connection(conn);
|
|
|
+
|
|
|
} else {
|
|
|
+ /* Connecting to server failed */
|
|
|
fprintf(stderr, "Error connecting to %s:\n%s\n", host, ebuf);
|
|
|
}
|
|
|
|