- trp_peer_set_server(new_peer, json_string_value(jhost)); /* string is strdup'ed in _set_server() */
- if (jport==NULL)
- trp_peer_set_port(new_peer, TRP_PORT);
- else
- trp_peer_set_port(new_peer, json_integer_value(jport));
+ /* parse / validate the hostname and port */
+ hostname = tr_parse_host(tmp_ctx, json_string_value(jhost), &port);
+ if (NULL == hostname) {
+ tr_err("tr_cfg_parse_one_peer_org: error parsing hostname (%s)", json_string_value(jhost));
+ rc=TR_CFG_NOPARSE;
+ goto cleanup;
+ }
+
+ if (port < 0) {
+ tr_err("tr_cfg_parse_one_peer_org: invalid port (%s)", json_string_value(jhost));
+ rc=TR_CFG_NOPARSE;
+ goto cleanup;
+ }
+
+ if (port == 0)
+ port = TRP_PORT;
+ trp_peer_set_port(new_peer, port);
+
+ trp_peer_set_server(new_peer, hostname); /* string is strdup'ed in _set_server() */
+ if (trp_peer_get_server(new_peer) == NULL) {
+ tr_err("tr_cfg_parse_one_peer: could not set server hostname for new peer");
+ rc = TR_CFG_NOMEM;
+ goto cleanup;
+ }