- SockAddr ret = smalloc(sizeof(struct SockAddr_tag));
-
- ret->error = kOTNoError;
- OTInitDNSAddress(&(ret->address), host);
-
- /* for now we'll pretend canonicalname is always just host */
-
- *canonicalname = smalloc(1+strlen(host));
- strcpy(*canonicalname, host);
+ SockAddr ret = snew(struct SockAddr_tag);
+ char *realhost;
+
+ /* Casting away const -- hope OTInetStringToAddress is sensible */
+ ret->error = OTInetStringToAddress(ot.inetsvc, (char *)host,
+ &ret->hostinfo);
+ ret->resolved = TRUE;
+
+ if (ret->error == kOTNoError)
+ realhost = ret->hostinfo.name;
+ else
+ realhost = "";
+ *canonicalname = snewn(1+strlen(realhost), char);
+ strcpy(*canonicalname, realhost);