PostgreSQL Source Code: src/backend/port/win32/socket.c File Reference (original) (raw)

Go to the source code of this file.

Functions
static void TranslateSocketError (void)
static int pgwin32_poll_signals (void)
static int isDataGram (SOCKET s)
int pgwin32_waitforsinglesocket (SOCKET s, int what, int timeout)
SOCKET pgwin32_socket (int af, int type, int protocol)
int pgwin32_bind (SOCKET s, struct sockaddr *addr, int addrlen)
int pgwin32_listen (SOCKET s, int backlog)
SOCKET pgwin32_accept (SOCKET s, struct sockaddr *addr, int *addrlen)
int pgwin32_connect (SOCKET s, const struct sockaddr *addr, int addrlen)
int pgwin32_recv (SOCKET s, char *buf, int len, int f)
int pgwin32_send (SOCKET s, const void *buf, int len, int flags)
int pgwin32_select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timeval *timeout)

isDataGram()

pgwin32_accept()

pgwin32_bind()

Definition at line 315 of file socket.c.

316{

317 int res;

318

319 res = bind(s, addr, addrlen);

320 if (res < 0)

322 return res;

323}

#define bind(s, addr, addrlen)

References bind, and TranslateSocketError().

pgwin32_connect()

pgwin32_listen()

pgwin32_poll_signals()

pgwin32_recv()

Definition at line 382 of file socket.c.

383{

385 int r;

388 int n;

389

391 return -1;

392

395

398 return b;

399

401 {

403 return -1;

404 }

405

407 {

408

409

410

411

413 return -1;

414 }

415

416

417

418 for (n = 0; n < 5; n++)

419 {

422 return -1;

423

426 return b;

428 {

430 return -1;

431 }

432

433

434

435

436

437

438

439

441 }

443 (errmsg_internal("could not read from ready socket (after retries)")));

445 return -1;

446}

int int errmsg_internal(const char *fmt,...) pg_attribute_printf(1

#define ereport(elevel,...)

static char buf[DEFAULT_XLOG_SEG_SIZE]

void pg_usleep(long microsec)

References b, buf, ereport, errmsg_internal(), EWOULDBLOCK, fb(), len, NOTICE, pg_usleep(), pgwin32_noblock, pgwin32_poll_signals(), pgwin32_waitforsinglesocket(), and TranslateSocketError().

pgwin32_select()

Definition at line 517 of file socket.c.

518{

520

521

524 int i;

525 int r;

530

532

534 return -1;

535

538

539

540

541

542

543

544

545

546

547

548

550 {

552 {

553 char c;

556

557 buf.buf = &c;

558 buf.len = 0;

559

563 }

564

565

567 {

572 }

573 }

574

575

576

577

579 {

580

582 }

583

585 {

586 for (i = 0; i < readfds->fd_count; i++)

587 {

591 }

592 }

594 {

596 {

599 {

600

604 }

605 }

606 }

607

609 {

610 int flags = 0;

611

614

617

619 {

621

622 while (--i >= 0)

626 return -1;

627 }

628 }

629

633 {

634

635

636

637

639

641 {

644 elog(ERROR, "failed to enumerate network events: error code %d",

646

648 {

652 {

654

656 }

657 }

658

660 {

663 {

665

667 }

668 }

669 }

670 }

671

672

674 {

677 }

678

680 {

685 return 0;

686 }

687

688

690 {

697 return -1;

698 }

699

700

706}

#define Assert(condition)

HANDLE pgwin32_signal_event

References Assert, buf, EINTR, elog, ERROR, fb(), i, pgwin32_dispatch_queued_signals(), pgwin32_poll_signals(), pgwin32_signal_event, and TranslateSocketError().

pgwin32_send()

pgwin32_socket()

pgwin32_waitforsinglesocket()

Definition at line 181 of file socket.c.

182{

185 static int isUDP = 0;

187 int r;

188

189

191 {

193

197 }

201

202

203

204

205

206

210

211

212

213

214

215

217 {

219 return 0;

220 }

221

224

225

226

227

228

229

230

231

233 {

234 for (;;)

235 {

237

239 {

240 char c;

243

244 buf.buf = &c;

245 buf.len = 0;

246

248 if (r == 0)

249 {

251 return 1;

252 }

254 {

257 return 0;

258 }

259 }

260 else

261 break;

262 }

263 }

264 else

266

268

270 {

273 return 0;

274 }

276 return 1;

278 {

280 return 0;

281 }

283 (errmsg_internal("unrecognized return value from WaitForMultipleObjects: %d (error code %lu)", r, GetLastError())));

284 return 0;

285}

static int isDataGram(SOCKET s)

References buf, EINTR, ereport, errmsg_internal(), ERROR, EWOULDBLOCK, fb(), isDataGram(), pgwin32_dispatch_queued_signals(), pgwin32_signal_event, and TranslateSocketError().

Referenced by pgwin32_connect(), pgwin32_recv(), and pgwin32_send().

TranslateSocketError()

Definition at line 56 of file socket.c.

57{

59 {

66 break;

69 break;

72 break;

75 break;

78 break;

81 break;

84 break;

87 break;

92 break;

95 break;

98 break;

101 break;

104 break;

107 break;

110 break;

113 break;

116 break;

119 break;

122 break;

125 break;

129 break;

132 break;

135 break;

138 break;

143 break;

146 break;

147 default:

149 (errmsg_internal("unrecognized win32 socket error code: %d",

152 break;

153 }

154}

References EADDRINUSE, EADDRNOTAVAIL, EAFNOSUPPORT, ECONNABORTED, ECONNREFUSED, ECONNRESET, EHOSTDOWN, EHOSTUNREACH, EINPROGRESS, EINTR, EISCONN, EMSGSIZE, ENETDOWN, ENETRESET, ENETUNREACH, ENOBUFS, ENOTCONN, ENOTSOCK, EOPNOTSUPP, EPROTONOSUPPORT, ereport, errmsg_internal(), ETIMEDOUT, EWOULDBLOCK, fb(), and NOTICE.

Referenced by pgwin32_accept(), pgwin32_bind(), pgwin32_connect(), pgwin32_listen(), pgwin32_recv(), pgwin32_select(), pgwin32_send(), pgwin32_socket(), and pgwin32_waitforsinglesocket().

pgwin32_noblock