Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
windows:mingw:win32
mingw32-loudmouth
loudmouth-1.4.3-mingw.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File loudmouth-1.4.3-mingw.patch of Package mingw32-loudmouth
--- loudmouth-1.4.3/configure.ac 2011-04-03 09:01:50.733491207 +0200 +++ loudmouth-1.4.3/configure.ac 2011-04-03 09:03:12.508316406 +0200 @@ -34,7 +34,6 @@ enable_shared=yes CFLAGS="$CFLAGS -mms-bitfields" - LDFLAGS="$LDFLAGS -no-undefined" fi AC_PROG_CC @@ -53,12 +52,14 @@ AM_PATH_GLIB_2_0 AC_CHECK_HEADERS([arpa/inet.h fcntl.h memory.h netdb.h netinet/in.h netinet/in_systm.h stdlib.h string.h sys/socket.h sys/time.h unistd.h]) -AC_CHECK_HEADERS([winsock2.h arpa/nameser_compat.h]) +AC_CHECK_HEADERS([winsock2.h wspiapi.h arpa/nameser_compat.h]) if test "$ac_cv_header_winsock2_h" = "yes"; then # If we have <winsock2.h>, assume we find the functions # in -lws2_32 (ws2_32 is winsock v2, wsock32 is v1.1) - LIBS="-lws2_32 -lgdi32 $LIBS" + LIBS="-lws2_32 -lgdi32 -ldnsapi $LIBS" +else + LIBS="-lresolv $LIBS" fi IDT_COMPILE_WARNINGS @@ -95,6 +96,8 @@ # Check Unit test framework (defined in acinclude.m4) IDT_PATH_CHECK(0.9.2, have_check=yes, have_check=no) +AC_CHECK_HEADER(check.h,,have_check=no) + AM_CONDITIONAL(HAVE_CHECK, test x$have_check = xyes) dnl Gtk doc @@ -146,10 +149,12 @@ enable_ssl=no if test "x$ac_ssl" = "xgnutls"; then dnl Look for GnuTLS - AM_PATH_LM_LIBGNUTLS($GNUTLS_REQUIRED, have_libgnutls=yes, have_libgnutls=no) - if test "x$have_libgnutls" = "xyes"; then - CFLAGS="$CFLAGS $LIBGNUTLS_CFLAGS" - LIBS="$LIBS $LIBGNUTLS_LIBS" + PKG_CHECK_MODULES(GNUTLS, gnutls >= $GNUTLS_REQUIRED, have_gnutls=yes, have_gnutls=no) + if test "x$have_gnutls" = "xyes"; then + AC_SUBST(GNUTLS_CFLAGS) + AC_SUBST(GNUTLS_LIBS) + CFLAGS="$CFLAGS $GNUTLS_CFLAGS" + LIBS="$LIBS $GNUTLS_LIBS" AC_DEFINE(HAVE_GNUTLS, 1, [whether to use GnuTSL support.]) enable_ssl=GnuTLS else @@ -212,6 +217,8 @@ echo "Not using asynchronous dns lookups" fi +AM_CONDITIONAL(USE_ASYNCNS, test x$enable_asyncns = xyes) + dnl +-------------------------------------------------------------------+ dnl | Checking for Linux TCP/IP stack | dnl +-------------------------------------------------------------------+ --- loudmouth-1.4.3/loudmouth/lm-connection.c 2011-04-03 09:01:50.724490562 +0200 +++ loudmouth-1.4.3/loudmouth/lm-connection.c 2011-04-03 09:02:12.590052861 +0200 @@ -32,10 +32,12 @@ #include <netinet/in.h> #endif +#include <glib.h> + +#ifndef G_OS_WIN32 #include <arpa/nameser.h> #include <resolv.h> - -#include <glib.h> +#endif #include "lm-sock.h" #include "lm-debug.h" --- loudmouth-1.4.3/loudmouth/lm-sock.c 2011-04-03 09:01:50.724490562 +0200 +++ loudmouth-1.4.3/loudmouth/lm-sock.c 2011-04-03 09:02:12.591052929 +0200 @@ -295,8 +295,10 @@ return _("The remote host exists but no address " "is available"); #endif +#ifndef G_OS_WIN32 case EAI_NONAME: return _("The remote address is unknown"); +#endif case EAI_FAMILY: case EAI_SERVICE: case EAI_SOCKTYPE: --- loudmouth-1.4.3/loudmouth/lm-socket.c 2011-04-03 09:01:50.723490490 +0200 +++ loudmouth-1.4.3/loudmouth/lm-socket.c 2011-04-03 09:02:12.592052997 +0200 @@ -23,6 +23,8 @@ #include <config.h> #include <string.h> +#include <stdio.h> + #include <sys/types.h> /* Needed on Mac OS X */ @@ -35,8 +37,17 @@ #include <arpa/nameser_compat.h> #endif +#if !defined(_WIN32) && !defined(WIN32) //! rxt #include <arpa/nameser.h> #include <resolv.h> +#else +#include <winsock2.h> +#include <windns.h> +#ifndef DNS_TYPE_SRV /* on my mingw this is not defined */ + /* Service location */ + #define DNS_TYPE_SRV 0x21 // 33 + #endif +#endif //! rxt end #include "lm-debug.h" #include "lm-internals.h" @@ -120,10 +131,13 @@ static gboolean socket_buffered_write_cb (GIOChannel *source, GIOCondition condition, LmSocket *socket); +#ifndef _WIN32 //! rxt static gboolean socket_parse_srv_response (unsigned char *srv, int srv_len, gchar **out_server, guint *out_port); +#endif + static void socket_close_io_channel (GIOChannel *io_channel); static void @@ -151,6 +165,7 @@ lm_socket_do_write (LmSocket *socket, const gchar *buf, gint len) { gint b_written; + char str[10];// if (socket->ssl_started) { b_written = _lm_ssl_send (socket->ssl, buf, len); @@ -159,6 +174,7 @@ gsize bytes_written; while (io_status == G_IO_STATUS_AGAIN) { + lm_verbose ("g_io_channel_write_chars\n"); io_status = g_io_channel_write_chars (socket->io_channel, buf, len, &bytes_written, @@ -170,6 +186,10 @@ if (io_status != G_IO_STATUS_NORMAL) { b_written = -1; } + sprintf(str, "%d", b_written); + + lm_verbose (str); + lm_verbose ("bytes_written\n"); } return b_written; @@ -337,7 +357,7 @@ #ifdef HAVE_GNUTLS /* GNU TLS requires the socket to be blocking */ - _lm_sock_set_blocking (socket->fd, TRUE); + _lm_sock_set_blocking (socket->fd, TRUE); //! rxt! #endif /* If we're using StartTLS, the correct thing is to verify against @@ -739,6 +759,8 @@ return TRUE; } + +#ifndef _WIN32 static gboolean socket_parse_srv_response (unsigned char *srv, int srv_len, @@ -800,6 +822,7 @@ } return FALSE; } +#endif static void socket_close_io_channel (GIOChannel *io_channel) @@ -816,11 +839,67 @@ _lm_sock_close (fd); } + static void _lm_socket_create_phase1 (LmSocket *socket, unsigned char *srv_ans, int len); + +//! rxt static void _lm_socket_create_phase2 (LmSocket *socket, struct addrinfo *ans); + +//! rxt +static void +_lm_socket_create_phase1_win32 (LmSocket *socket, + unsigned char* srv_name, + int srv_port) +{ + const char *remote_addr; + LmConnectData *data; + struct addrinfo req; +#ifndef HAVE_ASYNCNS + struct addrinfo *ans; + int err; +#endif + + g_free (socket->server); + socket->server = srv_name; + socket->port = srv_port; + + /* If server wasn't specified and SRV failed, use domain */ + if (!socket->server) { + lm_verbose ("SRV lookup failed, trying jid domain\n"); + socket->server = g_strdup (socket->domain); + } + + if (socket->proxy) { + remote_addr = lm_proxy_get_server (socket->proxy); + } else { + remote_addr = socket->server; + } + + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, + "Going to connect to %s%s:%u\n", (socket->proxy) ? "proxy " : "", + remote_addr, socket->port); + + data = g_new0 (LmConnectData, 1); + + data->socket = socket; + data->connection = socket->connection; + data->fd = -1; + socket->connect_data = data; + + memset (&req, 0, sizeof(req)); + req.ai_family = AF_UNSPEC; + req.ai_socktype = SOCK_STREAM; + req.ai_protocol = IPPROTO_TCP; + + err = getaddrinfo (remote_addr, NULL, &req, &ans); + _lm_socket_create_phase2 (socket, (err) ? NULL : ans); + if (err != 0) + return; +} + #ifdef HAVE_ASYNCNS #define PHASE_1 0 #define PHASE_2 1 @@ -950,6 +1029,7 @@ int err; #endif + #ifndef _WIN32 //! rxt if (srv_ans != NULL) { gchar *new_server; guint new_port; @@ -963,6 +1043,7 @@ socket->port = new_port; } } + #endif /* If server wasn't specified and SRV failed, use domain */ if (!socket->server) { @@ -1050,10 +1131,15 @@ { LmSocket *socket; -#ifndef HAVE_ASYNCNS +//#ifndef HAVE_ASYNCNS +#if !defined(HAVE_ASYNCNS) && !defined(_WIN32) //! rxt unsigned char srv_ans[SRV_LEN]; int len; #endif +#if defined (_WIN32) || defined (WIN32)//! rxt + DNS_STATUS dns_status; + PDNS_RECORD dns_record; +#endif g_return_val_if_fail (domain != NULL, NULL); g_return_val_if_fail ((port >= MIN_PORT && port <= MAX_PORT), NULL); @@ -1096,11 +1182,25 @@ asyncns_res_query (socket->asyncns_ctx, srv, C_IN, T_SRV); asyncns_setuserdata (socket->asyncns_ctx, socket->resolv_query, (gpointer) PHASE_1); #else +#ifndef _WIN32 res_init (); len = res_query (srv, C_IN, T_SRV, srv_ans, SRV_LEN); _lm_socket_create_phase1 (socket, (len < 1) ? NULL : srv_ans, len); g_free (srv); +#else //! rxt + dns_status = DnsQuery_A(srv, DNS_TYPE_SRV, DNS_QUERY_BYPASS_CACHE, NULL, &dns_record, NULL); + if (dns_status != NO_ERROR) { + lm_verbose ("SRV lookup failed for %s\n", socket->server); + _lm_socket_create_phase1 (socket, NULL, 0); + } + else if (dns_record != NULL) { + _lm_socket_create_phase1_win32 (socket, g_strdup(dns_record->pName), dns_record->Data.SRV.wPort); + DnsRecordListFree(dns_record, 0); + } + + g_free (srv); +#endif //! rxt end #endif } else { lm_verbose ("SRV lookup disabled for %s\n", socket->server); --- loudmouth-1.4.3/loudmouth/lm-sock.h 2011-04-03 09:01:50.722490419 +0200 +++ loudmouth-1.4.3/loudmouth/lm-sock.h 2011-04-03 09:02:12.594053136 +0200 @@ -66,6 +66,18 @@ #include <winsock2.h> #include <ws2tcpip.h> +/* Make use of the wspiapi.h header for Windows 2000 compatibility + * if it is present. + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#ifdef HAVE_WSPIAPI_H +#include <wspiapi.h> +#endif + #define _LM_SOCK_EINPROGRESS WSAEINPROGRESS #define _LM_SOCK_EWOULDBLOCK WSAEWOULDBLOCK #define _LM_SOCK_EALREADY WSAEALREADY --- loudmouth-1.4.3/loudmouth/lm-ssl-openssl.c 2011-04-03 09:01:50.725490634 +0200 +++ loudmouth-1.4.3/loudmouth/lm-ssl-openssl.c 2011-04-03 09:02:12.594053136 +0200 @@ -23,8 +23,10 @@ #include <stdio.h> #include <string.h> -#include <unistd.h> #include <glib.h> +#ifndef G_OS_WIN32 +#include <unistd.h> +#endif #include "lm-debug.h" #include "lm-error.h" --- loudmouth-1.4.3/loudmouth/Makefile.am 2011-04-03 09:01:50.723490490 +0200 +++ loudmouth-1.4.3/loudmouth/Makefile.am 2011-04-03 09:05:29.050864913 +0200 @@ -23,6 +23,12 @@ lm-ssl-openssl.c endif +if USE_ASYNCNS +asyncns_sources = \ + asyncns.c \ + asyncns.h +endif + libloudmouth_1_la_SOURCES = \ lm-connection.c \ lm-debug.c \ @@ -51,8 +57,6 @@ lm-sock.c \ lm-socket.c \ lm-socket.h \ - asyncns.c \ - asyncns.h \ lm-sasl.c \ lm-sasl.h \ md5.c \ @@ -75,12 +79,11 @@ libloudmouth_1_la_LIBADD = \ $(LOUDMOUTH_LIBS) \ - $(LIBIDN_LIBS) \ - -lresolv + $(LIBIDN_LIBS) libloudmouth_1_la_LDFLAGS = \ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \ - -export-symbols $(srcdir)/loudmouth.sym + -export-symbols $(srcdir)/loudmouth.sym -no-undefined libloudmouthincludedir = $(includedir)/loudmouth-1.0/loudmouth # an explicit dependency here so alm generated files get built
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor