Projects
osmocom:master
libosmocore
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 270
View file
libosmocore.spec
Changed
@@ -14,13 +14,13 @@ Name: libosmocore Requires: osmocom-master -Version: 1.9.0.67.be3c3 +Version: 1.9.0.68.846118 Release: 0 Summary: The Open Source Mobile Communications Core Library License: GPL-2.0-only AND GPL-2.0-or-later AND LGPL-2.1-or-later AND AGPL-3.0-or-later Group: Productivity/Telephony/Utilities Url: https://osmocom.org/projects/libosmocore/wiki/Libosmocore -Source: libosmocore_1.9.0.67.be3c3.tar.xz +Source: libosmocore_1.9.0.68.846118.tar.xz Source1: rpmlintrc BuildRequires: automake >= 1.6 BuildRequires: libtool >= 2
View file
commit_84611881c9285915724da4933edeb4b0dcd1bb1d.txt
Added
View file
commit_be3c38ca5579c68fd8faccafd01883125fd3e818.txt
Deleted
View file
libosmocore_1.9.0.67.be3c3.dsc -> libosmocore_1.9.0.68.846118.dsc
Changed
@@ -2,7 +2,7 @@ Source: libosmocore Binary: libosmocore, libosmocodec4, libosmocodec-doc, libosmocoding0, libosmocoding-doc, libosmocore21, libosmocore-doc, libosmogb14, libosmogb-doc, libosmogsm20, libosmogsm-doc, libosmoisdn0, libosmoisdn-doc, libosmovty13, libosmovty-doc, libosmoctrl0, libosmoctrl-doc, libosmosim2, libosmosim-doc, libosmousb0, libosmousb-doc, libosmocore-dev, libosmocore-utils, libosmocore-dbg Architecture: any all -Version: 1.9.0.67.be3c3 +Version: 1.9.0.68.846118 Maintainer: Osmocom team <openbsc@lists.osmocom.org> Homepage: https://projects.osmocom.org/projects/libosmocore Standards-Version: 3.9.8 @@ -35,8 +35,8 @@ libosmovty-doc deb doc optional arch=all libosmovty13 deb libs optional arch=any Checksums-Sha1: - 6788591f705ebb450d5ce3c9175dc1463713c2ea 1085304 libosmocore_1.9.0.67.be3c3.tar.xz + d2a15a5887252b0b6c63907ab3defc31b60f3f00 1085248 libosmocore_1.9.0.68.846118.tar.xz Checksums-Sha256: - e6a8b06f4cff07a392b07c627396d9b8b11a38361091b65a8ee7539173b0edc6 1085304 libosmocore_1.9.0.67.be3c3.tar.xz + f97f025e2b2a1c545e36634f5432d54641390cf28b2798529dda6d9804f23099 1085248 libosmocore_1.9.0.68.846118.tar.xz Files: - fbb7553030d246c128fc480f2577ed4d 1085304 libosmocore_1.9.0.67.be3c3.tar.xz + 138f5ad9517edc0c8ac8c1b7794f088c 1085248 libosmocore_1.9.0.68.846118.tar.xz
View file
libosmocore_1.9.0.67.be3c3.tar.xz/.tarball-version -> libosmocore_1.9.0.68.846118.tar.xz/.tarball-version
Changed
@@ -1 +1 @@ -1.9.0.67-be3c3 +1.9.0.68-846118
View file
libosmocore_1.9.0.67.be3c3.tar.xz/debian/changelog -> libosmocore_1.9.0.68.846118.tar.xz/debian/changelog
Changed
@@ -1,8 +1,8 @@ -libosmocore (1.9.0.67.be3c3) unstable; urgency=medium +libosmocore (1.9.0.68.846118) unstable; urgency=medium * Automatically generated changelog entry for building the Osmocom master feed - -- Osmocom OBS scripts <info@osmocom.org> Wed, 29 Nov 2023 14:43:00 +0000 + -- Osmocom OBS scripts <info@osmocom.org> Sun, 03 Dec 2023 02:18:19 +0000 libosmocore (1.9.0) unstable; urgency=medium
View file
libosmocore_1.9.0.67.be3c3.tar.xz/src/core/osmo_io.c -> libosmocore_1.9.0.68.846118.tar.xz/src/core/osmo_io.c
Changed
@@ -344,6 +344,46 @@ } } +/*! completion handler: Calld by osmo_io backend after a given I/O operation has completed + * \paramin iofd I/O file-descriptor on which I/O has completed + * \paramin rc return value of the I/O operation + * \paramin msghdr serialized msghdr containing state of completed I/O + */ +void iofd_handle_send_completion(struct osmo_io_fd *iofd, int rc, struct iofd_msghdr *msghdr) +{ + struct msgb *msg = msghdr->msg; + + /* Incomplete write */ + if (rc > 0 && rc < msgb_length(msg)) { + /* Re-enqueue remaining data */ + msgb_pull(msg, rc); + msghdr->iov0.iov_len = msgb_length(msg); + iofd_txqueue_enqueue_front(iofd, msghdr); + return; + } + + /* Reenqueue the complete msgb */ + if (rc == -EAGAIN) { + iofd_txqueue_enqueue_front(iofd, msghdr); + return; + } + + /* All other failure and success cases are handled here */ + switch (msghdr->action) { + case IOFD_ACT_WRITE: + iofd->io_ops.write_cb(iofd, rc, msg); + break; + case IOFD_ACT_SENDTO: + iofd->io_ops.sendto_cb(iofd, rc, msg, &msghdr->osa); + break; + default: + OSMO_ASSERT(0); + } + + msgb_free(msghdr->msg); + iofd_msghdr_free(msghdr); +} + /* Public functions */ /*! Send a message through a connected socket.
View file
libosmocore_1.9.0.67.be3c3.tar.xz/src/core/osmo_io_internal.h -> libosmocore_1.9.0.68.846118.tar.xz/src/core/osmo_io_internal.h
Changed
@@ -146,6 +146,7 @@ struct msgb *iofd_msgb_pending_or_alloc(struct osmo_io_fd *iofd); void iofd_handle_recv(struct osmo_io_fd *iofd, struct msgb *msg, int rc, struct iofd_msghdr *msghdr); +void iofd_handle_send_completion(struct osmo_io_fd *iofd, int rc, struct iofd_msghdr *msghdr); void iofd_handle_segmented_read(struct osmo_io_fd *iofd, struct msgb *msg, int rc); int iofd_txqueue_enqueue(struct osmo_io_fd *iofd, struct iofd_msghdr *msghdr);
View file
libosmocore_1.9.0.67.be3c3.tar.xz/src/core/osmo_io_poll.c -> libosmocore_1.9.0.68.846118.tar.xz/src/core/osmo_io_poll.c
Changed
@@ -78,33 +78,8 @@ if (what & OSMO_FD_WRITE) { struct iofd_msghdr *msghdr = iofd_txqueue_dequeue(iofd); if (msghdr) { - msg = msghdr->msg; - rc = sendmsg(ofd->fd, &msghdr->hdr, msghdr->flags); - if (rc > 0 && rc < msgb_length(msg)) { - msgb_pull(msg, rc); - iofd_txqueue_enqueue_front(iofd, msghdr); - return; - } - if (rc == -EAGAIN) { - iofd_txqueue_enqueue_front(iofd, msghdr); - return; - } - - switch (iofd->mode) { - case OSMO_IO_FD_MODE_READ_WRITE: - iofd->io_ops.write_cb(iofd, rc, msg); - break; - case OSMO_IO_FD_MODE_RECVFROM_SENDTO: - iofd->io_ops.sendto_cb(iofd, rc, msg, &msghdr->osa); - break; - case OSMO_IO_FD_MODE_SCTP_RECVMSG_SEND: - OSMO_ASSERT(false); - break; - } - - talloc_free(msghdr); - msgb_free(msg); + iofd_handle_send_completion(iofd, rc, msghdr); } else { if (iofd->mode == OSMO_IO_FD_MODE_READ_WRITE) /* Socket is writable, but we have no data to send. A non-blocking/async
View file
libosmocore_1.9.0.67.be3c3.tar.xz/src/core/osmo_io_uring.c -> libosmocore_1.9.0.68.846118.tar.xz/src/core/osmo_io_uring.c
Changed
@@ -186,43 +186,14 @@ static void iofd_uring_handle_tx(struct iofd_msghdr *msghdr, int rc) { struct osmo_io_fd *iofd = msghdr->iofd; - struct msgb *msg = msghdr->msg; - if (IOFD_FLAG_ISSET(iofd, IOFD_FLAG_CLOSED)) - goto out_free; - - /* Error during write */ - if (rc < 0) { - if (msghdr->action == IOFD_ACT_WRITE) - iofd->io_ops.write_cb(iofd, rc, msg); - else if (msghdr->action == IOFD_ACT_SENDTO) - iofd->io_ops.sendto_cb(iofd, rc, msg, &msghdr->osa); - else - OSMO_ASSERT(0); - goto out_free; - } - - /* Incomplete write */ - if (rc < msgb_length(msg)) { - /* Re-enqueue remaining data */ - msgb_pull(msg, rc); - msghdr->iov0.iov_len = msgb_length(msg); - iofd_txqueue_enqueue_front(iofd, msghdr); - goto out; + if (OSMO_UNLIKELY(IOFD_FLAG_ISSET(iofd, IOFD_FLAG_CLOSED))) { + msgb_free(msghdr->msg); + iofd_msghdr_free(msghdr); + } else { + iofd_handle_send_completion(iofd, rc, msghdr); } - if (msghdr->action == IOFD_ACT_WRITE) - iofd->io_ops.write_cb(iofd, rc, msg); - else if (msghdr->action == IOFD_ACT_SENDTO) - iofd->io_ops.sendto_cb(iofd, rc, msg, &msghdr->osa); - else - OSMO_ASSERT(0); - -out_free: - msgb_free(msghdr->msg); - iofd_msghdr_free(msghdr); - -out: iofd->u.uring.write_msghdr = NULL; /* submit the next to-be-transmitted message for this file descriptor */ if (iofd->u.uring.write_enabled && !IOFD_FLAG_ISSET(iofd, IOFD_FLAG_CLOSED))
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.