Fix --connect-send. Half-close connections so we can detect two read sockets talking to each other.
This commit is contained in:
@@ -76,7 +76,7 @@ bool opts_add_connect_send(char *arg) {
|
||||
return false;
|
||||
}
|
||||
|
||||
incoming_new(host, arg, send_new_wrapper, serializer);
|
||||
outgoing_new(host, arg, send_new_wrapper, serializer);
|
||||
free(host);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -78,8 +78,7 @@ static void outgoing_disconnect_handler(struct peer *peer) {
|
||||
assert(!close(outgoing->peer.fd));
|
||||
}
|
||||
fprintf(stderr, "O %s: Peer disconnected; reconnecting...\n", outgoing->id);
|
||||
|
||||
outgoing_resolve(outgoing);
|
||||
outgoing_retry(outgoing);
|
||||
}
|
||||
|
||||
static void outgoing_connect_result(struct outgoing *outgoing, int result) {
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/socket.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "airspy_adsb.h"
|
||||
@@ -127,6 +129,9 @@ void receive_cleanup() {
|
||||
}
|
||||
|
||||
void receive_new(int fd, void *unused, struct peer *on_close) {
|
||||
int res = shutdown(fd, SHUT_WR);
|
||||
assert(res == 0 || (res == -1 && errno == ENOTSOCK));
|
||||
|
||||
struct receive *receive = malloc(sizeof(*receive));
|
||||
assert(receive);
|
||||
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
#include <assert.h>
|
||||
#include <strings.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#include <signal.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <strings.h>
|
||||
#include <sys/socket.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "airspy_adsb.h"
|
||||
#include "beast.h"
|
||||
@@ -115,6 +117,9 @@ struct serializer *send_get_serializer(char *name) {
|
||||
}
|
||||
|
||||
void send_new(int fd, struct serializer *serializer, struct peer *on_close) {
|
||||
int res = shutdown(fd, SHUT_RD);
|
||||
assert(res == 0 || (res == -1 && errno == ENOTSOCK));
|
||||
|
||||
struct send *send = malloc(sizeof(*send));
|
||||
assert(send);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user