Skip to content

Commit

Permalink
Fix the PGM support on win64
Browse files Browse the repository at this point in the history
On win64 the size of file descriptor is not the same as size of int.
The bug in PGM transport caused a runtime error because of this.
The problem is fixed now.

Signed-off-by: Martin Sustrik <[email protected]>
  • Loading branch information
sustrik authored and hintjens committed Aug 18, 2011
1 parent 024c4c9 commit 4df43be
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 13 deletions.
2 changes: 2 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
Bug fixes
---------

* Fixed issue 240, assertion failure in pgm_socket.cpp:437.

* Fixed issue 238, assertion failure in zmq.cpp:655, when zmq_poll is
used on an empty set, on Windows.

Expand Down
4 changes: 2 additions & 2 deletions src/pgm_receiver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,8 @@ int zmq::pgm_receiver_t::init (bool udp_encapsulation_, const char *network_)
void zmq::pgm_receiver_t::plug (io_thread_t *io_thread_, i_inout *inout_)
{
// Retrieve PGM fds and start polling.
int socket_fd;
int waiting_pipe_fd;
fd_t socket_fd = retired_fd;
fd_t waiting_pipe_fd = retired_fd;
pgm_socket.get_receiver_fds (&socket_fd, &waiting_pipe_fd);
socket_handle = add_fd (socket_fd);
pipe_handle = add_fd (waiting_pipe_fd);
Expand Down
8 changes: 4 additions & 4 deletions src/pgm_sender.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,10 @@ int zmq::pgm_sender_t::init (bool udp_encapsulation_, const char *network_)
void zmq::pgm_sender_t::plug (io_thread_t *io_thread_, i_inout *inout_)
{
// Alocate 2 fds for PGM socket.
int downlink_socket_fd = 0;
int uplink_socket_fd = 0;
int rdata_notify_fd = 0;
int pending_notify_fd = 0;
fd_t downlink_socket_fd = retired_fd;
fd_t uplink_socket_fd = retired_fd;
fd_t rdata_notify_fd = retired_fd;
fd_t pending_notify_fd = retired_fd;

encoder.set_inout (inout_);

Expand Down
8 changes: 4 additions & 4 deletions src/pgm_socket.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -394,8 +394,8 @@ zmq::pgm_socket_t::~pgm_socket_t ()

// Get receiver fds. receive_fd_ is signaled for incoming packets,
// waiting_pipe_fd_ is signaled for state driven events and data.
void zmq::pgm_socket_t::get_receiver_fds (int *receive_fd_,
int *waiting_pipe_fd_)
void zmq::pgm_socket_t::get_receiver_fds (fd_t *receive_fd_,
fd_t *waiting_pipe_fd_)
{
socklen_t socklen;
bool rc;
Expand All @@ -421,8 +421,8 @@ void zmq::pgm_socket_t::get_receiver_fds (int *receive_fd_,
// receive_fd_ is for incoming back-channel protocol packets.
// rdata_notify_fd_ is raised for waiting repair transmissions.
// pending_notify_fd_ is for state driven events.
void zmq::pgm_socket_t::get_sender_fds (int *send_fd_, int *receive_fd_,
int *rdata_notify_fd_, int *pending_notify_fd_)
void zmq::pgm_socket_t::get_sender_fds (fd_t *send_fd_, fd_t *receive_fd_,
fd_t *rdata_notify_fd_, fd_t *pending_notify_fd_)
{
socklen_t socklen;
bool rc;
Expand Down
7 changes: 4 additions & 3 deletions src/pgm_socket.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
#include <pgm/in.h>
#endif

#include "fd.hpp"
#include "options.hpp"

namespace zmq
Expand All @@ -56,12 +57,12 @@ namespace zmq
int init (bool udp_encapsulation_, const char *network_);

// Get receiver fds and store them into user allocated memory.
void get_receiver_fds (int *receive_fd_, int *waiting_pipe_fd_);
void get_receiver_fds (fd_t *receive_fd_, fd_t *waiting_pipe_fd_);

// Get sender and receiver fds and store it to user allocated
// memory. Receive fd is used to process NAKs from peers.
void get_sender_fds (int *send_fd_, int *receive_fd_,
int *rdata_notify_fd_, int *pending_notify_fd_);
void get_sender_fds (fd_t *send_fd_, fd_t *receive_fd_,
fd_t *rdata_notify_fd_, fd_t *pending_notify_fd_);

// Send data as one APDU, transmit window owned memory.
size_t send (unsigned char *data_, size_t data_len_);
Expand Down

0 comments on commit 4df43be

Please sign in to comment.