libpurple/protocols/zephyr/ZOpenPort.c

Mon, 23 Nov 2020 01:41:50 -0600

author
Elliott Sales de Andrade <quantum.analyst@gmail.com>
date
Mon, 23 Nov 2020 01:41:50 -0600
changeset 40624
6f7bbd42d36c
parent 40361
048bae6f2298
child 40643
1c9bdf8d3e85
permissions
-rw-r--r--

Delete a bunch of unused zephyr stuff

* Remove unused `ZSetFD`.
* Remove `__HM_set` which is never read.
* Remove `__Zephyr_open` global, which is redundant with `__Zephyr_fd != -1`.
* Remove `ZSetSrv.c`, as `ZSetServerState` is never called.
Consequently, remove `__Zephyr_server` global and all things that check it as it will never be TRUE.
* Remove zephyr internal debug code, as `ZSetDebug` is never called.
Also, make a couple debug messages go to libpurple.
* Remove unused `ZNewLocateUser` compatibility macro.

Testing Done:
Compile only.

Reviewed at https://reviews.imfreedom.org/r/249/

/* This file is part of the Project Athena Zephyr Notification System.
 * It contains source for the ZOpenPort function.
 *
 *	Created by:	Robert French
 *
 *	Copyright (c) 1987 by the Massachusetts Institute of Technology.
 *	For copying and distribution information, see the file
 *	"mit-copyright.h".
 */

#include "internal.h"
#include <purple.h>
#ifdef WIN32
#include <winsock2.h>
#else
#include <sys/socket.h>
#endif

Code_t
ZOpenPort(unsigned short *port)
{
    struct sockaddr_in bindin;
    socklen_t len;

    (void) ZClosePort();
    memset(&bindin, 0, sizeof(bindin));

    if ((__Zephyr_fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
	__Zephyr_fd = -1;
	return (errno);
    }

#ifdef SO_BSDCOMPAT
	{
		int on = 1;

		if (setsockopt(__Zephyr_fd, SOL_SOCKET, SO_BSDCOMPAT,
			(char *)&on, sizeof(on)) != 0)
		{
			purple_debug_warning("zephyr", "couldn't setsockopt\n");
		}
	}
#endif

    bindin.sin_family = AF_INET;

    if (port && *port)
	bindin.sin_port = *port;
    else
	bindin.sin_port = 0;

    bindin.sin_addr.s_addr = INADDR_ANY;

    if (bind(__Zephyr_fd, (struct sockaddr *)&bindin, sizeof(bindin)) < 0) {
	if (errno == EADDRINUSE && port && *port)
	    return (ZERR_PORTINUSE);
	else
	    return (errno);
    }

    if (!bindin.sin_port) {
	len = sizeof(bindin);
	if (getsockname(__Zephyr_fd, (struct sockaddr *)&bindin, &len))
	    return (errno);
    }

    __Zephyr_port = bindin.sin_port;

    if (port)
	*port = bindin.sin_port;

    return (ZERR_NONE);
}

mercurial