Delete some now-unused networking bits
* Remove several unnecessary networking headers and types.
* Remove some unused Windows networking wrappers.
Testing Done:
Compile only
Reviewed at https://reviews.imfreedom.org/r/306/
--- a/libpurple/network.c Mon Dec 21 21:45:26 2020 -0600
+++ b/libpurple/network.c Mon Dec 21 23:17:45 2020 -0600
@@ -30,9 +30,6 @@
@@ -50,16 +47,6 @@
- * Calling sizeof(struct ifreq) isn't always correct on
- * Mac OS X (and maybe others).
-#ifdef _SIZEOF_ADDR_IFREQ
-# define HX_SIZE_OF_IFREQ(a) _SIZEOF_ADDR_IFREQ(a)
-# define HX_SIZE_OF_IFREQ(a) sizeof(a)
static gboolean force_online = FALSE;
/* Cached IP addresses for STUN and TURN servers (set globally in prefs) */
--- a/libpurple/protocols/bonjour/bonjour_ft.c Mon Dec 21 21:45:26 2020 -0600
+++ b/libpurple/protocols/bonjour/bonjour_ft.c Mon Dec 21 23:17:45 2020 -0600
@@ -23,12 +23,6 @@
-# include <sys/socket.h>
@@ -37,14 +31,6 @@
- struct sockaddr_in6 in6;
- struct sockaddr_storage storage;
bonjour_bytestreams_init(PurpleXfer *xfer);
--- a/libpurple/protocols/bonjour/xmpp.c Mon Dec 21 21:45:26 2020 -0600
+++ b/libpurple/protocols/bonjour/xmpp.c Mon Dec 21 23:17:45 2020 -0600
@@ -24,25 +24,12 @@
-#if defined (__SVR4) && defined (__sun)
@@ -50,12 +37,6 @@
-#ifdef _SIZEOF_ADDR_IFREQ
-# define HX_SIZE_OF_IFREQ(a) _SIZEOF_ADDR_IFREQ(a)
-# define HX_SIZE_OF_IFREQ(a) sizeof(a)
#define STREAM_END "</stream:stream>"
/* TODO: specify version='1.0' and send stream features */
#define DOCTYPE "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" \
--- a/libpurple/protocols/jabber/si.c Mon Dec 21 21:45:26 2020 -0600
+++ b/libpurple/protocols/jabber/si.c Mon Dec 21 23:17:45 2020 -0600
@@ -26,9 +26,6 @@
-# include <sys/socket.h>
#include <glib/gi18n-lib.h>
--- a/libpurple/protocols/jabber/useravatar.c Mon Dec 21 21:45:26 2020 -0600
+++ b/libpurple/protocols/jabber/useravatar.c Mon Dec 21 23:17:45 2020 -0600
@@ -23,10 +23,6 @@
#include <glib/gi18n-lib.h>
--- a/libpurple/stun.c Mon Dec 21 21:45:26 2020 -0600
+++ b/libpurple/stun.c Mon Dec 21 23:17:45 2020 -0600
@@ -31,11 +31,6 @@
-#if defined (__SVR4) && defined (__sun)
@@ -48,10 +43,6 @@
#define ATTRIB_MAPPEDADDRESS 0x0001
-#ifndef _SIZEOF_ADDR_IFREQ
-# define _SIZEOF_ADDR_IFREQ(a) sizeof(a)
--- a/libpurple/win32/libc_interface.c Mon Dec 21 21:45:26 2020 -0600
+++ b/libpurple/win32/libc_interface.c Mon Dec 21 23:17:45 2020 -0600
@@ -42,66 +42,7 @@
# define S_ISDIR(m) (((m)&S_IFDIR)==S_IFDIR)
-static int wpurple_is_socket( int fd ) {
- int optlen = sizeof(int);
- if( (getsockopt(fd, SOL_SOCKET, SO_TYPE, (void*)&optval, &optlen)) == SOCKET_ERROR ) {
- int error = WSAGetLastError();
- if( error == WSAENOTSOCK )
- purple_debug(PURPLE_DEBUG_WARNING, "wpurple", "wpurple_is_socket: getsockopt returned error: %d\n", error);
-int wpurple_socket (int namespace, int style, int protocol) {
- ret = socket( namespace, style, protocol );
- if (ret == (int)INVALID_SOCKET) {
- errno = WSAGetLastError();
-int wpurple_connect(int socket, struct sockaddr *addr, u_long length) {
- ret = connect( socket, addr, length );
- if( ret == SOCKET_ERROR ) {
- errno = WSAGetLastError();
- if( errno == WSAEWOULDBLOCK )
- errno = WSAEINPROGRESS;
-int wpurple_getsockopt(int socket, int level, int optname, void *optval, socklen_t *optlenptr) {
- if(getsockopt(socket, level, optname, optval, optlenptr) == SOCKET_ERROR ) {
- errno = WSAGetLastError();
-int wpurple_setsockopt(int socket, int level, int optname, const void *optval, socklen_t optlen) {
- if(setsockopt(socket, level, optname, optval, optlen) == SOCKET_ERROR ) {
- errno = WSAGetLastError();
int wpurple_getsockname(int socket, struct sockaddr *addr, socklen_t *lenptr) {
if(getsockname(socket, addr, lenptr) == SOCKET_ERROR) {
errno = WSAGetLastError();
@@ -110,34 +51,6 @@
-int wpurple_bind(int socket, struct sockaddr *addr, socklen_t length) {
- if(bind(socket, addr, length) == SOCKET_ERROR) {
- errno = WSAGetLastError();
-int wpurple_listen(int socket, unsigned int n) {
- if(listen(socket, n) == SOCKET_ERROR) {
- errno = WSAGetLastError();
-int wpurple_sendto(int socket, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen) {
- if ((ret = sendto(socket, buf, len, flags, to, tolen)
- errno = WSAGetLastError();
- if(errno == WSAEWOULDBLOCK || errno == WSAEINPROGRESS)
/* This is not a full implementation of fcntl. Update as needed.. */
int wpurple_fcntl(int socket, int command, ...) {
@@ -238,96 +151,6 @@
-int wpurple_inet_aton(const char *name, struct in_addr *addr) {
- if((addr->s_addr = inet_addr(name)) == INADDR_NONE)
-/* Thanks to GNU wget for this inet_ntop() implementation */
-wpurple_inet_ntop (int af, const void *src, char *dst, socklen_t cnt)
- /* struct sockaddr can't accomodate struct sockaddr_in6. */
- struct sockaddr_in6 sin6;
- struct sockaddr_in sin;
- ZeroMemory(&sa, sizeof(sa));
- sa.sin.sin_family = AF_INET;
- sa.sin.sin_addr = *(struct in_addr *) src;
- srcsize = sizeof (sa.sin);
- sa.sin6.sin6_family = AF_INET6;
- sa.sin6.sin6_addr = *(struct in6_addr *) src;
- srcsize = sizeof (sa.sin6);
- if (WSAAddressToString ((struct sockaddr *) &sa, srcsize, NULL, dst, &dstlen) != 0)
- errno = WSAGetLastError();
- return (const char *) dst;
-wpurple_inet_pton(int af, const char *src, void *dst)
- /* struct sockaddr can't accomodate struct sockaddr_in6. */
- struct sockaddr_in6 sin6;
- struct sockaddr_in sin;
- sa.sin.sin_family = AF_INET;
- srcsize = sizeof (sa.sin);
- sa.sin6.sin6_family = AF_INET6;
- srcsize = sizeof (sa.sin6);
- errno = WSAEPFNOSUPPORT;
- if (WSAStringToAddress((LPTSTR)src, af, NULL, (struct sockaddr *) &sa, &srcsize) != 0)
- errno = WSAGetLastError();
- memcpy(dst, &sa.sin.sin_addr, sizeof(sa.sin.sin_addr));
- memcpy(dst, &sa.sin6.sin6_addr, sizeof(sa.sin6.sin6_addr));
struct hostent* wpurple_gethostbyname(const char *name) {
@@ -341,94 +164,6 @@
- * We need to figure out whether fd is a file or socket handle.
-int wpurple_read(int fd, void *buf, unsigned int size) {
- g_return_val_if_reached(-1);
- if(wpurple_is_socket(fd)) {
- if((ret = recv(fd, buf, size, 0)) == SOCKET_ERROR) {
- errno = WSAGetLastError();
- if(errno == WSAEWOULDBLOCK || errno == WSAEINPROGRESS)
- /* success reading socket */
- /* fd is not a socket handle.. pass it off to read */
- return _read(fd, buf, size);
-int wpurple_send(int fd, const void *buf, unsigned int size, int flags) {
- ret = send(fd, buf, size, flags);
- if (ret == SOCKET_ERROR) {
- errno = WSAGetLastError();
- if(errno == WSAEWOULDBLOCK || errno == WSAEINPROGRESS)
-int wpurple_write(int fd, const void *buf, unsigned int size) {
- g_return_val_if_reached(-1);
- if(wpurple_is_socket(fd))
- return wpurple_send(fd, buf, size, 0);
- return _write(fd, buf, size);
-int wpurple_recv(int fd, void *buf, size_t len, int flags) {
- if((ret = recv(fd, buf, len, flags)) == SOCKET_ERROR) {
- errno = WSAGetLastError();
- if(errno == WSAEWOULDBLOCK || errno == WSAEINPROGRESS)
-int wpurple_close(int fd) {
- g_return_val_if_reached(-1);
- if( wpurple_is_socket(fd) ) {
- if( (ret = closesocket(fd)) == SOCKET_ERROR ) {
- errno = WSAGetLastError();
int wpurple_gethostname(char *name, size_t size) {
if(gethostname(name, size) == SOCKET_ERROR) {
errno = WSAGetLastError();
@@ -436,24 +171,3 @@
-int wpurple_gettimeofday(struct timeval *p, struct timezone *z) {
- struct _timeb timebuffer;
- z->tz_minuteswest = _timezone/60;
- z->tz_dsttime = _daylight;
- p->tv_sec = timebuffer.time; /* seconds since 1-1-1970 */
- p->tv_usec = timebuffer.millitm*1000; /* microseconds */
--- a/libpurple/win32/libc_interface.h Mon Dec 21 21:45:26 2020 -0600
+++ b/libpurple/win32/libc_interface.h Mon Dec 21 23:17:45 2020 -0600
@@ -46,36 +46,9 @@
-#define socket( domain, style, protocol ) \
-wpurple_socket( domain, style, protocol )
-#define connect( socket, addr, length ) \
-wpurple_connect( socket, addr, length )
-#define getsockopt( socket, level, optname, optval, optlenptr ) \
-wpurple_getsockopt( socket, level, optname, optval, optlenptr )
-#define setsockopt( socket, level, optname, optval, optlen ) \
-wpurple_setsockopt( socket, level, optname, optval, optlen )
#define getsockname( socket, addr, lenptr ) \
wpurple_getsockname( socket, addr, lenptr )
-#define bind( socket, addr, length ) \
-wpurple_bind( socket, addr, length )
-#define listen( socket, n ) \
-wpurple_listen( socket, n )
-#define sendto(socket, buf, len, flags, to, tolen) \
-wpurple_sendto(socket, buf, len, flags, to, tolen)
-#define recv(fd, buf, len, flags) \
-wpurple_recv(fd, buf, len, flags)
-#define send(socket, buf, buflen, flags) \
-wpurple_send(socket, buf, buflen, flags)
#define ioctl( fd, command, val ) \
wpurple_ioctl( fd, command, val )
@@ -84,34 +57,10 @@
#define fcntl( fd, command, ... ) \
wpurple_fcntl( fd, command, ##__VA_ARGS__ )
-#define inet_aton( name, addr ) \
-wpurple_inet_aton( name, addr )
-#define inet_ntop( af, src, dst, cnt ) \
-wpurple_inet_ntop( af, src, dst, cnt )
-#define inet_pton( af, src, dst ) \
-wpurple_inet_pton( af, src, dst )
#define gethostbyname( name ) \
wpurple_gethostbyname( name )
-#define ntohl( netlong ) \
-(unsigned int)ntohl( netlong )
-#define read( fd, buf, buflen ) \
-wpurple_read( fd, buf, buflen )
-#define write( socket, buf, buflen ) \
-wpurple_write( socket, buf, buflen )
#define gethostname( name, size ) \
wpurple_gethostname( name, size )
--- a/libpurple/win32/libc_internal.h Mon Dec 21 21:45:26 2020 -0600
+++ b/libpurple/win32/libc_internal.h Mon Dec 21 23:17:45 2020 -0600
@@ -27,22 +27,7 @@
-int wpurple_socket(int domain, int style, int protocol);
-int wpurple_connect(int socket, struct sockaddr *addr, u_long length);
-int wpurple_getsockopt(int socket, int level, int optname, void *optval, socklen_t *optlenptr);
-int wpurple_setsockopt(int socket, int level, int optname, const void *optval, socklen_t optlen);
int wpurple_getsockname (int socket, struct sockaddr *addr, socklen_t *lenptr);
-int wpurple_bind(int socket, struct sockaddr *addr, socklen_t length);
-int wpurple_listen(int socket, unsigned int n);
-int wpurple_sendto(int socket, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen);
-int wpurple_recv(int fd, void *buf, size_t len, int flags);
-int wpurple_send(int fd, const void *buf, unsigned int size, int flags);
-int wpurple_inet_aton(const char *name, struct in_addr *addr);
-wpurple_inet_ntop (int af, const void *src, char *dst, socklen_t cnt);
-int wpurple_inet_pton(int af, const char *src, void *dst);
struct hostent* wpurple_gethostbyname(const char *name);
@@ -99,9 +84,6 @@
int wpurple_gettimeofday(struct timeval *p, struct timezone *z);
-int wpurple_read(int fd, void *buf, unsigned int size);
-int wpurple_write(int fd, const void *buf, unsigned int size);
-int wpurple_close(int fd);
int wpurple_gethostname(char *name, size_t size);
--- a/meson.build Mon Dec 21 21:45:26 2020 -0600
+++ b/meson.build Mon Dec 21 23:17:45 2020 -0600
@@ -174,43 +174,6 @@
FINCH_PLUGINDIR = abslibdir / 'finch-@0@'.format(purple_major_version)
conf.set_quoted('FINCH_PLUGINDIR', FINCH_PLUGINDIR)
- if not compiler.has_function('inet_aton')
- if not compiler.has_function('inet_aton', args : '-lresolv')
- # FIXME: Someone needs to link with -lresolv if needed.
- error('inet_aton not found')
-if compiler.has_function('gethostent', args : '-lnsl')
- conf.set('HAVE_LIBNSL', true)
- conf.set('HAVE_GETADDRINFO', true)
- conf.set('HAVE_INET_NTOP', true)
- if not compiler.has_function('socket')
- if not compiler.has_function('socket', args : '-lsocket')
- error('socket not found')
- # If all goes well, by this point the previous two checks will have
- # pulled in -lsocket and -lnsl if we need them.
- if compiler.has_function('getaddrinfo')
- conf.set('HAVE_GETADDRINFO', true)
- if compiler.has_function('getaddrinfo', args : '-lsocket -lnsl')
- conf.set('HAVE_GETADDRINFO', true)
- # FIXME: LIBS += declare_dependency(link_with : ['socket', 'nsl'])
- conf.set('HAVE_INET_NTOP',
- compiler.has_function('inet_ntop'))
-conf.set('HAVE_GETIFADDRS',
- compiler.has_function('getifaddrs'))
# Check for socklen_t (in Unix98)
socket_header = 'ws2tcpip.h'
@@ -236,15 +199,6 @@
compiler.has_member('struct sockaddr', 'sa_len',
prefix : '#include <@0@>'.format(socket_header)))
-# Check for v6-only sockets
- header = 'netinet/in.h'
-conf.set('HAVE_IPV6_V6ONLY',
- compiler.has_header_symbol(header, 'IPV6_V6ONLY'))
# Windows and Haiku do not use libm for the math functions, they are part
math = compiler.find_library('m')
@@ -664,7 +618,7 @@
#######################################################################
# Check for Cyrus-SASL (for xmpp/irc)
#######################################################################
-foreach func : ['snprintf', 'connect']
+foreach func : ['snprintf'] conf.set('HAVE_' + func.to_upper(),
compiler.has_function(func))