Commit 121b21f4 authored by Jim Harris's avatar Jim Harris Committed by Daniel Verkamp
Browse files

net: move common close code out of posix_sock functions



Parts of the close code (for both sock and sock_group)
is generic and will apply to every net implementation
(POSIX, VPP, etc.) - so move that generic code now.

Signed-off-by: default avatarJim Harris <james.r.harris@intel.com>
Change-Id: I50b5b272b6af219a516c18c41eee5a2e00bf034d

Reviewed-on: https://review.gerrithub.io/400330


Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
parent c44dd70a
Loading
Loading
Loading
Loading
+43 −45
Original line number Diff line number Diff line
@@ -315,29 +315,9 @@ spdk_posix_sock_accept(struct spdk_sock *sock)
}

static int
spdk_posix_sock_close(struct spdk_sock **sock)
spdk_posix_sock_close(struct spdk_sock *sock)
{
	int rc;

	if (*sock == NULL) {
		errno = EBADF;
		return -1;
	}

	if ((*sock)->cb_fn != NULL) {
		/* This sock is still part of a sock_group. */
		errno = EBUSY;
		return -1;
	}

	rc = close((*sock)->fd);

	if (rc == 0) {
		free(*sock);
		*sock = NULL;
	}

	return rc;
	return close(sock->fd);
}

static ssize_t
@@ -587,28 +567,9 @@ spdk_posix_sock_group_poll_count(struct spdk_sock_group *group, int max_events)
}

static int
spdk_posix_sock_group_close(struct spdk_sock_group **group)
spdk_posix_sock_group_close(struct spdk_sock_group *group)
{
	int rc;

	if (*group == NULL) {
		errno = EBADF;
		return -1;
	}

	if (!TAILQ_EMPTY(&(*group)->socks)) {
		errno = EBUSY;
		return -1;
	}

	rc = close((*group)->fd);

	if (rc == 0) {
		free(*group);
		*group = NULL;
	}

	return rc;
	return close(group->fd);
}

int
@@ -638,7 +599,26 @@ spdk_sock_accept(struct spdk_sock *sock)
int
spdk_sock_close(struct spdk_sock **sock)
{
	return spdk_posix_sock_close(sock);
	int rc;

	if (*sock == NULL) {
		errno = EBADF;
		return -1;
	}

	if ((*sock)->cb_fn != NULL) {
		/* This sock is still part of a sock_group. */
		errno = EBUSY;
		return -1;
	}

	rc = spdk_posix_sock_close(*sock);
	if (rc == 0) {
		free(*sock);
		*sock = NULL;
	}

	return rc;
}

ssize_t
@@ -718,5 +698,23 @@ spdk_sock_group_poll_count(struct spdk_sock_group *group, int max_events)
int
spdk_sock_group_close(struct spdk_sock_group **group)
{
	return spdk_posix_sock_group_close(group);
	int rc;

	if (*group == NULL) {
		errno = EBADF;
		return -1;
	}

	if (!TAILQ_EMPTY(&(*group)->socks)) {
		errno = EBUSY;
		return -1;
	}

	rc = spdk_posix_sock_group_close(*group);
	if (rc == 0) {
		free(*group);
		*group = NULL;
	}

	return rc;
}