BSOCK *dup_bsock(BSOCK *osock) { BSOCK *bsock = (BSOCK *)malloc(sizeof(BSOCK)); memcpy(bsock, osock, sizeof(BSOCK)); bsock->msg = get_pool_memory(PM_BSOCK); bsock->errmsg = get_pool_memory(PM_MESSAGE); if (osock->who()) { bsock->set_who(bstrdup(osock->who())); } if (osock->host()) { bsock->set_host(bstrdup(osock->host())); } if (osock->src_addr) { bsock->src_addr = New( IPADDR( *(osock->src_addr)) ); } bsock->set_duped(); return bsock; }