peer = forb_get_next_hop(forb, dest, &timeout);
if (!peer) {
- ul_logerr("Reply destination not found\n");
+ char str[60];
+ forb_server_id_to_string(str, dest, sizeof(str));
+ ul_logerr("Reply destination not found: %s\n", str);
goto err;
+ } else {
+ char str[60];
+ forb_server_id_to_string(str, dest, sizeof(str));
+ ul_logdeb("sending reply: dest=%s, id=%u\n", str, request_id);
}
forb_proto_send(peer, codec);
forb_peer_put(peer);
forb_peer_put(port->new_peer);
port->new_peer = NULL;
} else {
+ ul_logdeb("discovered new_peer from incomming connection\n");
peer = port->new_peer;
port->new_peer = NULL;
forb_new_peer_discovered(port, peer, request_header.source,
pthread_cleanup_pop(1);
return NULL;
}
-
-
struct inet_addr *addr = peer->addr;
int ret;
- if (!addr)
+ if (!addr) {
+ ul_logerr("No address to connect\n");
return NULL;
+ }
ipeer = forb_malloc(sizeof(*ipeer));
if (!ipeer)
goto err;
ipeer->socket = socket(PF_INET, SOCK_STREAM, 0);
- if (!ipeer->socket)
+ if (!ipeer->socket) {
+ ul_logerr("socket(): %s\n", strerror(errno));
goto err_free;
+ }
sa.sin_family = AF_INET;
sa.sin_port = addr->port;
sa.sin_addr = addr->addr;
ul_logdeb("connect to %s:%u\n", inet_ntoa(sa.sin_addr), ntohs(sa.sin_port));
ret = connect(ipeer->socket, (struct sockaddr*)&sa, sizeof(sa));
- if (ret)
+ if (ret) {
+ ul_logerr("connect error: %s\n", strerror(errno));
goto err_close;
+ }
return ipeer;
err_close:
if (!ipeer) {
ipeer = inet_connect(peer);
- if (!ipeer)
+ if (!ipeer) {
return -1;
+ }
peer->proto_priv = ipeer;
}
sent = 0;
+ ul_logdeb("send fd=%d\n", ipeer->socket);
do {
ret = send(ipeer->socket, buf, len, 0);
- if (ret < 0)
+ if (ret < 0) {
+ ul_logerr("send error: %s\n", strerror(errno));
return ret;
+ }
sent += ret;
buf += ret;
len -= ret;
peer = forb_get_next_hop(forb, &req->obj->server, &timeout);
if (!peer) {
char str[50];
- ul_logmsg("Cannot find peer to send request for server %s\n",
+ ul_logerr("Cannot find peer to send request for server %s\n",
forb_server_id_to_string(str, &req->obj->server, sizeof(str)));
env->major = FORB_EX_COMM_FAILURE;
return;