# HG changeset patch # User Thomas Butter # Date 1125479651 0 # Node ID bdeace860555b3a822e27ae0b156f5b68c533d5c # Parent e0f42900de12a722b67875c995262d5e4e0f8387 [gaim-migrate @ 13609] make SRV lookup useful for real life usage committer: Tailor Script diff -r e0f42900de12 -r bdeace860555 src/dnssrv.c --- a/src/dnssrv.c Wed Aug 31 04:09:04 2005 +0000 +++ b/src/dnssrv.c Wed Aug 31 09:14:11 2005 +0000 @@ -52,6 +52,7 @@ struct resdata { SRVCallback cb; + gpointer extradata; #ifndef _WIN32 guint handle; #else @@ -176,7 +177,7 @@ read(source, tmp++, sizeof(struct srv_response)); size--; } - cb(res, size); + cb(res, size, rdata->extradata); gaim_input_remove(rdata->handle); g_free(rdata); } @@ -211,7 +212,7 @@ rdata->results = lst; } - rdata->cb(srvres, size); + rdata->cb(srvres, size, rdata->extradata); g_free(rdata->query); g_free(rdata); @@ -265,7 +266,7 @@ #endif -void gaim_srv_resolve(char *protocol, char *transport, char *domain, SRVCallback cb) { +void gaim_srv_resolve(char *protocol, char *transport, char *domain, SRVCallback cb, gpointer extradata) { char *query = g_strdup_printf("_%s._%s.%s",protocol, transport, domain); struct resdata *rdata; #ifndef _WIN32 @@ -275,7 +276,7 @@ if(pipe(in) || pipe(out)) { gaim_debug_error("srv", "Could not create pipe\n"); g_free(query); - cb(NULL, 0); + cb(NULL, 0, extradata); return; } @@ -283,7 +284,7 @@ if(pid == -1) { gaim_debug_error("srv","Could not create process!\n"); - cb(NULL, 0); + cb(NULL, 0, extradata); g_free(query); return; } @@ -302,6 +303,7 @@ } rdata = g_new0(struct resdata,1); rdata->cb = cb; + rdata->extradata = extradata; rdata->handle = gaim_input_add(out[0], GAIM_INPUT_READ, resolved, rdata); g_free(query); @@ -328,7 +330,7 @@ if (!MyDnsQuery_UTF || !MyDnsRecordListFree) { gaim_debug_error("srv", "System missing DNS API (Requires W2K+)\n"); g_free(query); - cb(NULL, 0); + cb(NULL, 0, extradata); return; } diff -r e0f42900de12 -r bdeace860555 src/dnssrv.h --- a/src/dnssrv.h Wed Aug 31 04:09:04 2005 +0000 +++ b/src/dnssrv.h Wed Aug 31 09:14:11 2005 +0000 @@ -30,7 +30,7 @@ int pref; }; -typedef void (*SRVCallback)(struct srv_response *resp, int results); +typedef void (*SRVCallback)(struct srv_response *resp, int results, gpointer data); /** * Queries an SRV record. @@ -40,6 +40,6 @@ * @param domain Domainname to query (e.g. "blubb.com") * @cb A callback which will be called with the results */ -void gaim_srv_resolve(char *protocol, char *transport, char *domain, SRVCallback cb); +void gaim_srv_resolve(char *protocol, char *transport, char *domain, SRVCallback cb, gpointer extradata); #endif /* _GAIM_DNSSRV_H */