int masterconn_initconnect(masterconn *eptr) { int status; if (eptr->masteraddrvalid==0) { uint32_t mip,bip; uint16_t mport; if (tcpresolve(BindHost,NULL,&bip,NULL,1)<0) { bip = 0; } eptr->bindip = bip; if (tcpresolve(MasterHost,MasterPort,&mip,&mport,0)>=0) { eptr->masterip = mip; eptr->masterport = mport; eptr->masteraddrvalid = 1; } else { mfs_arg_syslog(LOG_WARNING,"can't resolve master host/port (%s:%s)",MasterHost,MasterPort); return -1; } } eptr->sock=tcpsocket(); if (eptr->sock<0) { mfs_errlog(LOG_WARNING,"create socket, error"); return -1; } if (tcpnonblock(eptr->sock)<0) { mfs_errlog(LOG_WARNING,"set nonblock, error"); tcpclose(eptr->sock); eptr->sock = -1; return -1; } if (eptr->bindip>0) { if (tcpnumbind(eptr->sock,eptr->bindip,0)<0) { mfs_errlog(LOG_WARNING,"can't bind socket to given ip"); tcpclose(eptr->sock); eptr->sock = -1; return -1; } } status = tcpnumconnect(eptr->sock,eptr->masterip,eptr->masterport); if (status<0) { mfs_errlog(LOG_WARNING,"connect failed, error"); tcpclose(eptr->sock); eptr->sock = -1; eptr->masteraddrvalid = 0; return -1; } if (status==0) { syslog(LOG_NOTICE,"connected to Master immediately"); masterconn_connected(eptr); } else { eptr->mode = CONNECTING; eptr->conntime = monotonic_seconds(); syslog(LOG_NOTICE,"connecting ..."); } return 0; }
int masterconn_initconnect(serventry *eptr) { int status; if (eptr->masteraddrvalid==0) { uint32_t mip,bip; uint16_t mport; if (tcpresolve(BindHost,NULL,&bip,NULL,1)>=0) { eptr->bindip = bip; } else { eptr->bindip = 0; } if (tcpresolve(MasterHost,MasterPort,&mip,&mport,0)>=0) { eptr->masterip = mip; eptr->masterport = mport; eptr->masteraddrvalid = 1; } else { MFSLOG(LOG_WARNING,"can't resolve master host/port (%s:%s)",MasterHost,MasterPort); return -1; } } eptr->sock=tcpsocket(); if (eptr->sock<0) { MFSLOG(LOG_WARNING,"create socket, error: %m"); return -1; } if (tcpnonblock(eptr->sock)<0) { MFSLOG(LOG_WARNING,"set nonblock, error: %m"); tcpclose(eptr->sock); eptr->sock=-1; return -1; } if (eptr->bindip>0) { if (tcpnumbind(eptr->sock,eptr->bindip,0)<0) { MFSLOG(LOG_WARNING,"can't bind socket to given ip: %m"); tcpclose(eptr->sock); eptr->sock=-1; return -1; } } status = tcpnumconnect(eptr->sock,eptr->masterip,eptr->masterport); if (status<0) { MFSLOG(LOG_WARNING,"connect failed, error: %m"); tcpclose(eptr->sock); eptr->sock=-1; return -1; } if (status==0) { MFSLOG(LOG_NOTICE,"connected to Master immediately"); masterconn_connected(eptr); } else { eptr->mode = CONNECTING; MFSLOG(LOG_NOTICE,"connecting ..."); } // syslog(LOG_NOTICE,"the masconn's sock is %d,the connection id is %d,masterconnsingleton's sock is %d,masterconnsingleton's id is %d",eptr->sock,eptr->connection,masterconnsingleton->sock,masterconnsingleton->connection); return 0; }
void masterconn_connecttest(serventry *eptr) { int status; status = tcpgetstatus(eptr->sock); if (status) { MFSLOG(LOG_WARNING,"connection failed, error: %m"); tcpclose(eptr->sock); eptr->sock=-1; eptr->mode=FREE; } else { MFSLOG(LOG_NOTICE,"connected to Master"); masterconn_connected(eptr); } }
void masterconn_connecttest(masterconn *eptr) { int status; status = tcpgetstatus(eptr->sock); if (status) { mfs_errlog_silent(LOG_WARNING,"connection failed, error"); tcpclose(eptr->sock); eptr->sock = -1; eptr->mode = FREE; eptr->masteraddrvalid = 0; } else { syslog(LOG_NOTICE,"connected to Master"); masterconn_connected(eptr); } }