new_iosock->socket_flags |= IOSOCKETFLAG_SSLSOCKET;
\r
iossl_client_accepted(iosock, new_iosock);
+ } else {
+ //initialize readbuf
+ iosocket_increase_buffer(&iosock->readbuf, 1024);
}
iosocket_activate(new_iosock);
iogc_add(iosocket);
}
+struct IODNSAddress *iosocket_get_remote_addr(struct IOSocket *iosocket) {
+ struct _IOSocket *iosock = iosocket->iosocket;
+ if(iosock == NULL) {
+ iolog_trigger(IOLOG_WARNING, "called iosocket_get_remote_addr for destroyed IOSocket in %s:%d", __FILE__, __LINE__);
+ return NULL;
+ }
+ if(iosock->socket_flags & IOSOCKETFLAG_PENDING_DESTDNS)
+ return NULL;
+ if(!iosock->dest.addr.addresslen)
+ return NULL;
+ return &iosock->dest.addr;
+}
+
+struct IODNSAddress *iosocket_get_local_addr(struct IOSocket *iosocket) {
+ struct _IOSocket *iosock = iosocket->iosocket;
+ if(iosock == NULL) {
+ iolog_trigger(IOLOG_WARNING, "called iosocket_get_local_addr for destroyed IOSocket in %s:%d", __FILE__, __LINE__);
+ return NULL;
+ }
+ if(iosock->socket_flags & IOSOCKETFLAG_PENDING_BINDDNS)
+ return NULL;
+ if(!iosock->bind.addr.addresslen)
+ return NULL;
+ return &iosock->bind.addr;
+}
+
static int iosocket_try_write(struct _IOSocket *iosock) {
if(!iosock->writebuf.bufpos && !(iosock->socket_flags & IOSOCKETFLAG_SSL_WRITEHS)) \r
return 0;
iosocketevents_callback_retry_read:
if((readable && ssl_rehandshake == 0) || ssl_rehandshake == 1) {
int bytes;
- if(iosock->readbuf.buflen - iosock->readbuf.bufpos >= 128) {
+ if(iosock->readbuf.buflen - iosock->readbuf.bufpos <= 128) {
int addsize;
if(iosock->readbuf.buflen >= 2048)
addsize = 1024;
else
addsize = iosock->readbuf.buflen;
+ if(addsize == 0) {
+ iolog_trigger(IOLOG_WARNING, "readbuf length is 0 when trying to read from fd %d", iosock->fd);
+ addsize = 512;
+ }
iosocket_increase_buffer(&iosock->readbuf, iosock->readbuf.buflen + addsize);
}
if((iosock->socket_flags & IOSOCKETFLAG_SSLSOCKET))